首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何命名具有竞争“作用域”的OOCSS类?

如何命名具有竞争“作用域”的OOCSS类?
EN

Stack Overflow用户
提问于 2016-06-25 20:25:38
回答 2查看 298关注 0票数 2

我知道,这是一个非常固执己见的答案,以及所有命名会议相关的问题,我想。

我使用的是哈里·罗伯茨命名大会,它为面向对象的css增加前缀/名称空间。这允许使用o-前缀将类组织到对象中,以便使用对象这样的无装饰设计模式,并使用c-前缀(加上更多)来设置ui组件的样式。

下面是(泛型)示例,它经常用于解释边界元,并添加有问题的命名空间:

代码语言:javascript
复制
.o-btn {
  width: 100%;
}

在这里,竞争范围,针对相同的(Bem)块

代码语言:javascript
复制
.c-btn {
  color: white;
  background: gray;
}
.c-btn--positive {
  background: green;
}
.c-btn--negative {
  background: red;
}

引用哈里罗伯茨CSS指南的相关部分(不足以发布第二链接,对不起):

上面,我们可以看到.btn {}类是如何简单地为元素提供结构样式的,而与任何化妆品无关。我们用第二类(如. .btn负{} )来补充.btn {}对象,以便给出特定于DOM节点的化妆品。

对我来说,这个解释听起来就像我所做的那样,是正确的理由。但是,在同一个块上使用两个不同的名称空间可能会让人感到困惑,这是不正确的。

如果两个名称空间相互竞争,我选择了哪个名称空间?

EN

回答 2

Stack Overflow用户

发布于 2016-06-25 21:21:30

不要害怕在同一个DOM节点上有不同的BEM实体。

实际上,纯边界元本身通过混合解决了这个问题(参见https://en.bem.info/methodology/key-concepts/#mix)。

我们的想法是,您应该将button块保持为具有最大可重用性的通用组件。然后你可以在theme改性剂的帮助下添加所有的化妆品。最后,通过与父元素(例如form__submit)的混合来添加定位。

所以你可能最终会有这样的结果:

代码语言:javascript
复制
<form class="form">
    <button class="button button--theme_awesome form__submit">Send</button>
</form>
票数 0
EN

Stack Overflow用户

发布于 2018-11-09 18:29:43

您使用项目所需的内容,在我的例子中,我更喜欢前缀语法(o-、c-、u-),因为您正在向html元素说明它们是什么,这是一个使用sass语法的简短示例:

代码语言:javascript
复制
.c-button{
   &.c-button--dark{}
   &.c-button--orange{}
}

您可以覆盖引导类,例如,您不必关心其他类,使用此规范,您可以覆盖您可能拥有的默认类,并且可以在您的hmtl元素中混合使用css类,例如:

代码语言:javascript
复制
<input type="text" class="btn btn-primary c-button c-button-dark" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38032676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档