我们正在广泛使用 BEM,但遇到了几种构建和命名组件的方法,并希望对最佳实践提出意见。我们将“对象”的概念用于可重用组件(例如.box
、.media
、.btn
),将“组件”用于设计的 UI 组件,这些组件往往是对象的组合。
作为该问题的一个示例,请从线框图中考虑:
比图像的想法与可用于该特定项目的其他图像的数量重叠。
至少有两种方法可以处理这种布局,我们正在努力找出最佳选择。
选项1
在标记/CSS 中应用布局,而不是作为组件。然后可以在项目之间重用以下所有样式;没有一个是特定于项目的。
HTML:
<div class="relatively-positioned">
<img src="..." alt="" />
<div class="box box--rounded absolutely-positioned offset--10-10">12</div>
</div>
CSS:
.box {
padding: 5px;
}
.box--rounded {
border-radius: 5px;
}
.relatively-positioned { position: relative; }
.absolute-positioned { position: absolute; }
.offset--10-10 { top: 10px; left: 10px; }
选项 2
将此实现为由图像和计数框组成的组件。
HTML:
<div class="image-preview">
<img class="image-preview__img" ... />
<div class="image-preview__count box box--rounded">12</div>
</div>
CSS:
相同的 CSS 将适用于box
/box--rounded
并且对于项目之间的重用是通用的。该组件将仅为该项目定义:
.image-preview {
position: relative;
}
.image-preview__count {
position: absolute;
top: 10px;
left: 10px;
}
想法,意见和其他想法都非常受欢迎!