我正在尝试返回网络的前端编码。我最近一次尝试写CSS是在10年前,在那个时候,有一种叫做 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定义为在一个块的元素中重复类名(例如,父,子和大孩子都提到同一个类)。不确定当时这是否是业界公认的定义,或者当你可以使用级联规则时,类别的定义是否更通用意味着引入CSS类/ ids。
答案 0 :(得分:2)
最近有什么更新的说明了阶级炎,神经炎,非语义因素以及鼓励合并演示和内容的任何事情都是一件好事吗?
OOCSS和BEM是几年前出现的两种CSS方法。他们扭转了良好做法。
CSS代码用于修饰内容块。想象一下,我们必须为Albert和Nicolas创造两种不同的服装。天真的方法是将这两件衣服命名为:&#34; Albert的习惯&#34; 和&#34; Nicolas&#39;习惯&#34; 。它是根据内容的语义命名的。
然后皮埃尔到了,我们必须打扮他。但是我们的命名会阻止重用。有必要创造一个新的&#34;皮埃尔的习惯&#34; ,即使这个习惯与艾伯特的非常相似。如果服装设计成为我们的业务,那么我们将改变我们的工作方式,使我们更容易重复使用我们的工作。我们将故意避免通过内容(穿着者)进行命名。我们更喜欢自己命名衣服。它可以是抽象的名称:&#34; Habit 001&#34; ,&#34; Habit 002&#34; 等等。为什么不呢?它可以重复使用。但更直观的命名需要更少的记忆力,我们将根据我们所看到的内容命名:&#34;大而蓝的习惯&#34; ,&#34;小但是广泛的习惯&#34; 等等。所以Albert会穿着&#34;大而蓝的习惯&#34; 而不是&#34; Albert&#39;习惯&#34; 。它不是关于混合演示和内容。用于命名包装的语义不再是内容的语义,而是包装的内容。
通过内容语义命名,CSS代码实际上完全链接并依赖于HTML代码。然而,通过命名包装,CSS代码成为一个独立于HTML代码存在的代码,这允许HTML代码中的不同块更好地重用相同的外观。