【问题标题】:BEM CSS: Similar blocks and style sharingBEM CSS:相似块和样式共享
【发布时间】:2014-10-26 01:02:23
【问题描述】:

阅读 BEM CSS 并使用过一些小型网站的代码 - 我对它非常熟悉。但是,我仍然不确定如何处理非常相似但没有关系的块。

假设我有很多无序列表块,它们的第一行都有相同的样式。其他列表项的布局可以不同,并且彼此完全不相关。

我发现自己将块命名为它是什么(例如“最新新闻”、“即将到来的事件”),然后在 CSS 中堆叠所有这些块变得很麻烦——更不用说难以管理了。

欣赏这些东西不是一刀切的解决方案;但想象一下,很多人都会遇到同样的问题。将这些块称为“标准列表”然后将列表项作为块不是更有效吗?

这似乎与 BEM 试图实现的整个原则背道而驰。我应该能够将“最新消息”放在任何我想要的地方。这样我就必须获得包含最新新闻内容的正确“标准列表”?

希望这不会太混乱!任何建议都会很棒!

【问题讨论】:

  • 刚刚在别处找到了这个答案:stackoverflow.com/a/22566593/727370 似乎是一种解决方案。其他人会推荐这种方法吗?我猜“最新消息”可以看作是块的修饰符? style="list list--latest-news"
  • 我认为你的问题根源于命名。您正在使用基于内容的类名('news'、'events'),而展示性('list'、'list--horizo​​ntal')类名在 BEM 方法中工作得更好。 seesparkbox.com/foundry/naming_css_stuff_is_really_hard

标签: css bem


【解决方案1】:

有一件重要的事情经常被忽视——混音的使用。

混合是一种在同一个 DOM 节点上放置几个不同块的可能性。

因此,对于您的示例,您可以创建

<ul class="latest-news list">

这将为您提供列表所需的所有常见样式,并为最新消息添加特性。

【讨论】:

  • 谢谢。一切都应该“分类”,对吧,这样我就可以瞄准我需要的任何东西?所以:&lt;ul class="latest-news list"&gt;&lt;li class="latest-news__item list__item"&gt;List &lt;span class="latest-news__post list__post"&gt;item&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;.
  • 但是不应该用修饰符来处理特殊性吗?
猜你喜欢
  • 2013-02-26
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
  • 2018-06-06
  • 2019-03-24
  • 2021-11-22
相关资源
最近更新 更多