css - 使用 BEM 时,将 block 嵌套在其元素内是否不合逻辑?

标签 css naming-conventions bem

假设我想要一个 title block ,出于样式考虑,我需要将它嵌套在一个 div 中,并使用一些特殊的 CSS 样式(例如,我想要特定的边框和间距样式)。我们称此为 box。该框仅提供其中的 title 样式。

事实上我需要 box 只是因为 CSS 的限制,所以 box 被认为是一个没有意义的BEM 术语中的 block 。它甚至没有意义作为 DOM 元素。但是 title 位于 box 内。

对我来说,给 boxtitle__box 是有意义的,因为没有 title 就没有意义。但是,BEM 的所有示例似乎都假设元素始终是其所在 block 的 DOM 子元素。

最佳答案

在不进一步调查的情况下明确回答您的问题,不。 你必须有类似下面的东西

<div class="decorator">
  <h1 class="title">blah blah</h1>
</div>

<div class="title">
  <h1 class="title__heading">blah blah</h1>
</div>

使用 BEM 时,您必须考虑“ block ”、“元素”及其可重用性。特别是,从开发人员的 Angular 考虑这一点:您不希望最终出现这样一种情况:开发人员将构建有问题的标题并忘记元素或属性,然后发疯地试图弄清楚为什么它没有工作。这使您的标记具有一致性和可复制性。

我对为什么您需要 <div> 没有具体的了解您所说的 CSS 限制是什么,但我相信您的话。

所以我要问:您是否考虑过使用伪选择器清理标记,或者使用标题作为上述容器并使用内联匿名元素(即 <span> s)?

我希望这有助于解决您的问题。

关于css - 使用 BEM 时,将 block 嵌套在其元素内是否不合逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41723129/

相关文章:

css - 弹出信息操作点随着打开阅读更多... div 而移动

python - 具有相同基本名称的 Python 模块、类和实例变量的正确命名约定是什么?

sass - 为 BEM 配置 Sass Lint

html - 单击 x 时关闭模式不起作用

android - 响应式 CSS 无法正常工作

c - bool 值中的 p 字母代表什么?

java - 创建文件名大小写不敏感的java类实例

css - 在 Sass 中匹配多个 BEM 修饰符

css - BEM组件中的Block元素不需要样式怎么办?

javascript - 使用javascript按月自动更改图片