Html 我们可以在边界元法中制作块修改器的元素吗?

Html 我们可以在边界元法中制作块修改器的元素吗?,html,css,bem,Html,Css,Bem,我只是想知道下面的代码是否遵循BEM方法的最佳实践?为块修改器创建元素,即在本例中,“block--mod”是“block”块的修改器。是否允许创建具有以下模式的嵌套元素:“block--mod_u elm” 我在Yandex(Yandex设计了BEM方法)中找不到.block--mod_uelem模式的例子,但早期一篇关于CSS巫术中BEM的文章确实展示了一个带有子元素的修饰符的例子。person--女性_uhand: .person {} .person__hand {} .person--

我只是想知道下面的代码是否遵循BEM方法的最佳实践?为块修改器创建元素,即在本例中,“block--mod”是“block”块的修改器。是否允许创建具有以下模式的嵌套元素:“block--mod_u elm”


我在Yandex(Yandex设计了BEM方法)中找不到
.block--mod_uelem
模式的例子,但早期一篇关于CSS巫术中BEM的文章确实展示了一个带有子元素
的修饰符的例子。person--女性_uhand

.person {}
.person__hand {}
.person--female {}
.person--female__hand {}
.person__hand--left {}
资料来源:

带有子元素的修饰符可能有点难以理解,但如果这看起来是合乎逻辑的方法,我不会回避使用它们


编辑:@NikolayMihaylov的回答提供了另一种方法,我全力支持。它更具可读性和可维护性。

在主题化或类似的情况下,我会使用嵌套选择器。这将在HTML中保存一些类,正如@Jonathan Nicol所说的,这些子元素可能很难理解。另外,以后删除“品牌”会更容易,只需删除块类而不是它的所有元素

例如,标题的Xmas品牌

.header--xmas .header__logo {
    /* Jingle bells, jingle bells, jingle all the way.*/
}

来源:

你可以考虑在你的问题中改变“有效”到“遵循BEM方法最佳实践”。标记是有效的-它将通过HTML和CSS验证测试。哦,这很有意义!谢谢,我已经更新了问题。:)这不必要地增加了特殊性,并将导致递归嵌套问题。虽然大多数模块在大多数情况下不会遇到问题,但如果最终遇到这种情况,事后可能很难修复。@zzzzBov你说得对。更好的解决方案是什么?也许为每个元素添加修改器
.header\uu logo\u theme\u xmas
等等?@NikolayMihaylov:xmas品牌应该作为
.block
添加,否则,
.block--modifier
.block\uu元素
.block\uu元素--modifier(如果在语义上与
.block
绑定),以保持CSS的特异性。把它看作是一个独立的工具,它有一个特定的、刚性的目的,不应该被覆盖,也不应该被过度使用。“块修饰符名称”规则与“双破折号样式”命名方案(都在链接页面上)相结合,将允许
.block--modifier
。引用文档:“修饰符的值用双连字符(--)与其名称隔开。”@Potherca问题不是关于
.block--modifier
,而是关于
.block--modifier\u元素
。我认为Yandex的文档没有提到元素出现在修饰符之后的可能性,尽管它也没有说这是不可能的。我认为OP提出这个问题是为了澄清这种模糊性。
.header--xmas .header__logo {
    /* Jingle bells, jingle bells, jingle all the way.*/
}