【发布时间】:2018-06-06 06:35:05
【问题描述】:
我正在尝试返回 Web 的前端编码。上一次尝试写 CSS 是在 10 年前,那时候有一种病叫classitis。我对 classitis 的理解可能是错误的,但我认为不要在 HTML 文档中乱扔太多 CSS 类,并尝试使用级联规则来保持 HTML 标记简洁明了。
例如,这可能是分类炎
<ul class="feed">
<li class="item">
<img src="" class="thumbnail"/>
<a href="" class="read-more">Read More</a>
</li>
</ul>
利用CSS中级联规则的优势,我们可以去掉除class="feed"之外的所有类,然后编写CSS规则如
.feed li img {/*style*/}
.feed li a {/*style*/}
这样,内容和演示之间的分离程度更高。
但是,我承认在非常大的 Web 应用程序中,很容易忘记什么级联什么,当其他团队成员加入项目时,他们更可能难以掌握整个前端架构。如果您没有选择最好的根元素来标记您的类,那么在尝试重构项目时会变得更具挑战性。
我认为 BEM 非常有用,因为类命名约定清楚地标识了每个块和元素应该做什么。 但这是否意味着您要重新引入分类问题并承认将呈现与内容分开是一个无法实现的幻想?所以这是我的问题。
注意 - 我看到有些人将 classitis 定义为在块的元素中重复的类名(例如,父、子和孙子都提到同一个类)。不确定这是否是当时行业接受的定义,或者 classitis 的定义是否更通用,意味着在您可以使用级联规则时引入 CSS 类/ID。
【问题讨论】:
-
@Paleo 谢谢,但那似乎是从 2011 年开始的。最近有什么可以说明分类、分词、非语义元素以及任何鼓励呈现和内容合并的东西是否是一件好事?
-
评论太长了。我发布了答案。
标签: bem