在本文中,我们将深入探讨 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 是一个定义按钮组件样式的块。您可以在网站的多个部分重复使用此块。
元素是块的一部分,没有独立的含义。它与区块绑定并存在以执行与区块相关的功能。
.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 有序、可预测和可扩展的强大方法。通过将组件分解为块、元素和修饰符,您可以维护更清晰的代码并避免样式冲突,从而使您的项目开发更快、更高效成长。
里多伊·哈桑