Css 没有类名的元素?

Css 没有类名的元素?,css,bem,Css,Bem,我有一个非常简单的问题,在CSS方法中是否允许子元素是无类的 那么,该代码是否有效: <div class="foo__label"> <p class="foo__text">Something <strong>else</strong></p> </div> Somethingelse 或者应该写为: <div class="foo__label"> <p class="foo__text

我有一个非常简单的问题,在CSS方法中是否允许子元素是无类的

那么,该代码是否有效:

<div class="foo__label">
  <p class="foo__text">Something <strong>else</strong></p>
</div>

Somethingelse

或者应该写为:

<div class="foo__label">
  <p class="foo__text">Something <strong class="foo__text-strong">else</strong></p>
</div>

其他的东西


我允许自己引用@Intervalia:


你的第一个例子很好。在第二个示例中,您只需要 如果您计划为其创建CSS,请添加一个类。class=“foo\uuu text-strong” 如果你需要它,它是需要的

他的评论完美地回答了你的问题。然而,我想添加另一个可能会派上用场的场景

它是关于用户从CMS生成的内容(例如WorpAddress)。在这种情况下,用户通常在WYSIWYG编辑器中编写内容,无法添加BEM类,甚至用户还不太了解这些类

在这种情况下,最好有一个“父”元素,您可以在其中通过标记设置元素的样式

示例:

.text ul{}
.text p{}
.text iframe{}
.text img{}
.text strong, .text b{}
.text em, .text i{}
.text a{}

更新1:有关使用嵌套选择器的信息:

嵌套选择器增加了代码耦合,使重用变得不可能。这个 边界元法允许使用嵌套选择器,但我们建议 尽量减少它们的使用。

所以,是的,如果你认为这太过分了,你可以接受@Rene的建议

更新2:助手类

边界元法没有创建辅助对象的严格规则 阻碍。这在很大程度上取决于具体的实现和个人需求 开发人员的首选项。bem core中的辅助块示例是
clearfix
块。

也许这项技术能有所帮助?就我个人而言,我经常使用的全球助手很少

例如,著名的仅屏幕阅读器样式:

.sr-only{
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    border: 0;
}

在您的情况下,您可以定义例如
.accent color
或简单地
.accent
,它可以将任何元素的颜色变成红色或其他颜色:)

我允许自己引用@Intervalia:


你的第一个例子很好。在第二个示例中,您只需要 如果您计划为其创建CSS,请添加一个类。class=“foo\uuu text-strong” 如果你需要它,它是需要的

他的评论完美地回答了你的问题。然而,我想添加另一个可能会派上用场的场景

它是关于用户从CMS生成的内容(例如WorpAddress)。在这种情况下,用户通常在WYSIWYG编辑器中编写内容,无法添加BEM类,甚至用户还不太了解这些类

在这种情况下,最好有一个“父”元素,您可以在其中通过标记设置元素的样式

示例:

.text ul{}
.text p{}
.text iframe{}
.text img{}
.text strong, .text b{}
.text em, .text i{}
.text a{}

更新1:有关使用嵌套选择器的信息:

嵌套选择器增加了代码耦合,使重用变得不可能。这个 边界元法允许使用嵌套选择器,但我们建议 尽量减少它们的使用。

所以,是的,如果你认为这太过分了,你可以接受@Rene的建议

更新2:助手类

边界元法没有创建辅助对象的严格规则 阻碍。这在很大程度上取决于具体的实现和个人需求 开发人员的首选项。bem core中的辅助块示例是
clearfix
块。

也许这项技术能有所帮助?就我个人而言,我经常使用的全球助手很少

例如,著名的仅屏幕阅读器样式:

.sr-only{
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    border: 0;
}

在您的情况下,您可以定义例如
.accent color
或简单的
.accent
,它可以将任何元素的颜色变成红色或其他颜色:)

如果您知道:

  • 它不符合边界元法
  • 无法将带有
    元素的嵌套块添加为
    .foo\u text
    的子元素
  • 关于第二点,
    元素的语义已经有了限制。您的级联只添加了一个:no
    ,no
    作为子级(因为父级是一个段落)。。。然后在您的情况下,没有BEM块可能有
    元素

    那么,如果你不是一个纯粹主义者,为什么不呢


    另请参见:

    如果您知道:

  • 它不符合边界元法
  • 无法将带有
    元素的嵌套块添加为
    .foo\u text
    的子元素
  • 关于第二点,
    元素的语义已经有了限制。您的级联只添加了一个:no
    ,no
    作为子级(因为父级是一个段落)。。。然后在您的情况下,没有BEM块可能有
    元素

    那么,如果你不是一个纯粹主义者,为什么不呢


    另请参见:

    您的第一个示例很好。在第二个示例中,如果您计划为其创建CSS,则只需添加一个类
    class=“foo\uuu text-strong”
    是必要的,如果您需要的话。其要点是防止“风格泄漏”,并为您的同事增加可重用性和易用性。所以,一般来说,我会说写
    .foo_uutext>strong{color:red}
    是可以的,它不会泄漏或有任何其他讨厌的副作用。添加
    .foo\uuu text-strong
    可能有些过分。具体规则可以写在贵公司的指南中。另请参见:。您的第一个示例很好。在第二个示例中,如果您计划为其创建CSS,则只需添加一个类
    class=“foo\uuu text-strong”
    是必要的,如果您需要的话。其要点是防止“风格泄漏”,并为您的同事增加可重用性和易用性。所以,一般来说,我会说写
    .foo_uutext>strong{color:red}
    是可以的,它不会泄漏或有任何其他讨厌的副作用。添加
    .foo\u文本-