【发布时间】:2015-08-10 12:17:12
【问题描述】:
所以我对 OOCSS 有疑问。它应该更便携,但与我通常做的事情相比,我发现它不那么便携了。
我的例子:
我有一个小部件推荐。在主要内容主体(具有白色背景)中,推荐使用黑色字体。但在页脚(蓝色背景)中,推荐信需要使用白色字体。
在 OOCSS 之前,我会做这样的事情:
#main-content .testominial {
color: #000000;
}
#footer .testominial {
color: #FFFFFF;
}
使用这种“旧”方法,我可以将我的小部件从内容区域拖到页脚,颜色就可以正常工作 - 我不需要更改小部件的 CSS 或 DOM 类。
使用新的 OOCSS/BEM,我不应该将 .testimonial 类耦合到 ID(或位置),而是应该像这样子类化它:
.testominial {
color: #000000;
}
.testominial--footer {
color: #FFFFFF;
}
这样做的问题是我不能再将我的推荐从内容区域拖到页脚而不进入 DOM 并更改推荐小部件上的类 - 它的可移植性较差,因为它需要开发人员手动干预;而在编辑器可以直接拖动它并且样式是自动的之前。
我错过了什么吗?似乎没有可靠的真实示例?
【问题讨论】:
-
是的,这就是为什么我没有使用这些模式的原因,它们基本上违背了 CSS 选择器的设计原理。
-
imo,BEM/OOCSS 的目的是防止在一个“组件”中进行更改并在其他地方显示“中断”的“意外后果”。它通过类名“限制”CSS“级联”来做到这一点。这有助于重复使用的事实是一个好处。它当然有助于维护。这也让我们更容易理解 CSS 的作用和影响,因为我是程序员而不是设计师,也不是 CSS 专家。
-
@RyanVincent 重用不仅仅是一种奖励。这是 Nicole Sullivan 在Our best practices are killing us (OOCSS) 中的有力论据。而且,BEM 是一种“用于创建 Web 应用程序的技术”,BEM 有助于进行代码分解,即重用。
-
@Tarh,要点——我确实怀疑在我的评论中添加这样措辞的“重用”行是一个错误。我确实使用了“BEM”,它让使用 CSS 变得非常愉快。这当然是更可预测的。 :)
-
回想起来,我应该更多地强调 OOCSS 而不是 BEM。我只是想弄清楚如何在没有 a) 用户添加任何类或代码的情况下重用一个小部件以使其看起来有所不同,并且 b) 使用 Nicole Sulivans 概念