この記事では、BEM (ブロック、要素、モディファイア) 方法論について詳しく説明します。これは、大規模なプロジェクト向けにクリーンで構造化された保守可能な CSS を作成するのに役立つ人気のある CSS 命名規則です。 BEM は、プロジェクトが成長してもコードのスケーラビリティを維持し、スタイルの競合の可能性を減らします。
BEM の略:
BEM 手法では、再利用可能、予測可能、保守可能な CSS コードの作成に重点が置かれています。
.block {} .block__element {} .block--modifier {}
例を使って BEM の構造を詳しく見てみましょう。
<div class="menu"> <ul class="menu__list"> <li class="menu__item menu__item--active">Home</li> <li class="menu__item">About</li> <li class="menu__item">Contact</li> </ul> </div>
この例では:
ブロックは、独立した再利用可能なコンポーネントです。これは、スタイルが他の要素に影響されることを気にせずに、コード内のどこにでも配置できる自己完結型エンティティと考えてください。
.button { padding: 10px 20px; background-color: #3498db; color: white; border: none; }
ここで、.button はボタン コンポーネントのスタイルを定義するブロックです。このブロックは Web サイトの複数の部分で再利用できます。
要素は、独立した意味を持たないブロックの一部です。ブロックに関連付けられており、ブロックに関連する機能を実行するために存在します。
.button__icon { margin-right: 10px; } .button__label { font-size: 14px; }
こちら:
修飾子は、ブロックまたは要素のバリエーションを表します。モディファイアは、ボタンの色の変更や要素の拡大など、コンポーネントの外観や動作を変更するために使用されます。
.button--primary { background-color: #2ecc71; } .button--large { padding: 15px 30px; }
こちら:
修飾子は要素にも適用できます:
.button__icon--small { width: 10px; height: 10px; }
ブロック、要素、修飾子を含むより完全な例を見てみましょう:
<div class="card"> <div class="card__header"> <h2 class="card__title">Card Title</h2> </div> <div class="card__body"> <p class="card__text">This is a simple card component.</p> </div> <div class="card__footer"> <button class="button card__button card__button--primary">Read More</button> </div> </div>
/* Block */ .card { border: 1px solid #ddd; padding: 20px; border-radius: 5px; } /* Elements */ .card__header { margin-bottom: 15px; } .card__title { font-size: 18px; color: #333; } .card__body { margin-bottom: 15px; } .card__text { color: #666; } .card__footer { text-align: right; } /* Modifier */ .card__button--primary { background-color: #3498db; color: white; }
この例では:
BEM 方法是保持 CSS 有序、可预测和可扩展的强大方法。通过将组件分解为块、元素和修饰符,您可以维护更清晰的代码并避免样式冲突,从而使您的项目开发更快、更高效成长。
里多伊·哈桑
以上是CSS BEM 模型 – 编写可扩展和可维护的 CSS 指南的详细内容。更多信息请关注PHP中文网其他相关文章!