【问题标题】:Learning BEM for CSS学习 CSS 的 BEM
【发布时间】:2017-01-07 11:12:41
【问题描述】:

我正在寻找和学习 BEM 并将其实施到使用 SASS 的公司前端框架中。

您需要一段时间来学习和实施其方法吗?

在构建大型应用程序时,我可以看到它的好处。

【问题讨论】:

  • 你有什么问题?

标签: css sass bem


【解决方案1】:

我最近开始在一个工作项目中使用 BEM,到目前为止,这是一次极好的学习体验。我强烈建议在新项目中开始使用它,它很容易上手,它极大地提高了代码质量,并遵守了一些关于如何为应用程序的新组件或模块设置样式的标准。

为什么要使用 BEM(块元素修饰符)?

BEM 代表 BlockElementModifier。 BEM 是 创建为一种前端开发方法 考虑到灵活性和易于修改。 BEM的主要思想 方法是加快开发过程并简化团队合作 的开发商。这是一种思考设计的抽象方式 不依赖 HTML 结构。 BEM 捕捉目的和意义 通过它的 CSS 类名语法。

阻止

块是您页面上的一个组件,可以重复使用,并且可以容纳 里面的元素。块的示例是标题、菜单或 一个图像。块可以包含元素和其他块。

元素

元素是永远只存在于块中的东西。它 取决于存在的块。元素的示例是 标题子标题、菜单项或图像标题。一个元素可以包含 其他元素和修饰符。

修饰符

修饰符定义了块或块的外观和行为 元素。修饰符表示与默认值的状态差异。 例如主题、活动/非活动状态或对齐。

例子:

.block {}
.block__element {}
.block--modifier {}
.block__element--modifier {}

.nav {}
.nav__item {}
.nav--footer {}
.nav__item--active{}

BEM 有助于轻松分解设计并在设计中找到块的“元素”和“修饰符”。 BEM 也可以应用于任何大小的项目。避免嵌套还可以更轻松地调整模块,而不会破坏其他内部功能。代码质量也得到了提高,因为开发人员在添加 hack css 选择器之前会三思而后行。

我的团队还使用 SMACSS“CSS 的可扩展和模块化架构”以及 BEM 将我们的 SASS 拆分为多个模块。这允许轻松找到组件样式,而无需搜索大量长样式表。它使新开发人员更容易找到样式和阅读代码。同样,它适用于所有项目规模。

您可以在此处阅读有关结合 BEM 和 SMACSS 的更多信息 - Combining BEM and SMACSS

一旦你做出改变,你会想知道你过去是如何构建项目的。使用干净和模块化的代码,它使项目的样式设计更加直接且压力更小。

【讨论】:

  • 如果您喜欢拥有数百个名称长得离谱的课程,那么 BEM 非常棒。
  • 实际上并不安静,相反。如果您的代码是模块化的,那么只需读取类的名称和结构,而不是猜测选择器在编写没有标准格式的 css 时应该做什么,就可以非常清楚地知道 CSS 类在哪里以及做什么。有时写得不好的 CSS 可以在一个 css 选择器中包含特定元素的所有样式,这使代码难看并且不支持重用。 BEM 使用户可以将代码拆分成更小的部分以供重用。它还阻止了在大型项目中存在问题的大量嵌套和 id 标签。
  • 我不建议编写非结构化 CSS。离得很远。我建议编写结构良好的 CSS,避免 BEM 的所有概念开销、大量类和长类名,其中大部分动机是对性能的毫无根据的担忧。
  • 在整个项目中编写结构良好的 CSS 在团队中变得难以维护。 BEM 让开发人员考虑以最好/最可重用的方式编写类,而不是与站点的其他部分嵌套。它也非常适合在更大的团队和项目环境中使用,以保持质量一致。 BEM 还有助于在更改一个组件时减少副作用的原因。自从使用 BEM 以来,它与 SMACSS 一起大大提高了我的 sass 代码质量和结构。
猜你喜欢
  • 2012-10-16
  • 1970-01-01
  • 1970-01-01
  • 2015-11-16
  • 2019-02-28
  • 2020-06-01
  • 1970-01-01
  • 2016-06-09
  • 1970-01-01
相关资源
最近更新 更多