CSS使用BEM命名规范实践

yizhihongxing

下面是“CSS使用BEM命名规范实践”的完整攻略:

什么是BEM命名规范

BEM是块(Block)、元素(Element)、修饰符(Modifier)的缩写。它是一种命名约定,用于在CSS中为代码块、元素和修饰符创建独特的名称。这种命名方式有助于清晰和一致地组织CSS代码。

  • 块(Block):一般独立的功能模块,对应HTML中的一个DOM节点,如.nav、.header、.footer等。
  • 元素(Element):块的子元素,对应HTML中嵌套在块中的DOM节点,用双下划线(__)进行连接,如.nav__item、.header__logo、.footer__nav等。
  • 修饰符(Modifier):用于描述块或元素的不同状态或特殊情况,用单下划线(_)进行连接,如.nav--active、.header__logo--small、.footer__nav--large等。

BEM命名规范的优点

使用BEM命名规范有以下优点:

  • 可读性更好:由于命名规范明确,可以更清晰和快速地了解CSS代码的含义。
  • 组织结构更清晰:BEM命名规范有助于规范化CSS代码,使代码更加易于维护。
  • 减少选择器的数量:BEM命名规范通过类的嵌套来实现,减少使用选择器的情况,从而提高了页面性能。

BEM命名规范的实践

创建块(Block)

首先,为要创建的模块定义一个块(Block),它是整个模块的外壳。我们以一个卡片样式为例:

<div class="card">
  <div class="card__header">
    <h3 class="card__title">Sample Card</h3>
  </div>
  <div class="card__content">
    <p class="card__text">This is a sample card.</p>
  </div>
  <div class="card__footer">
    <button class="card__button">Click me</button>
  </div>
</div>

在CSS中,定义.card样式:

.card {
  display: flex;
  flex-direction: column;
  border: 1px solid #ccc;
  border-radius: 5px;
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
}

创建元素(Element)

接下来,在块中创建元素。在这个例子中,我们需要分别创建.card__header、 .card__content、 .card__text、.card__footer和.card__button,它们根据它们在卡片模块中的位置:

.card__header {
  padding: 1em;
  background-color: #f3f3f3;
}
.card__title {
  margin: 0;
  font-size: 1.2em;
}
.card__content {
  padding: 1em;
}
.card__text {
  margin: 0;
  font-size: 1em;
}
.card__footer {
  padding: 1em;
  background-color: #f3f3f3;
  border-top: 1px solid #ccc;
}
.card__button {
  font-size: 1em;
  padding: 0.5em 1em;
  background-color: #09f;
  color: white;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}

创建修饰符(Modifier)

接下来,我们可以用修饰符改变BEM元素的某些属性。在这个例子中,我们可以使用.card--large修饰符来增加卡片的大小:

<div class="card card--large">
  // ...
</div>

在CSS中,我们可以定义.card--large修饰符的样式:

.card--large {
  width: 500px;
  height: 300px;
}

另外,我们可以使用.card__button--disabled修饰符来禁用按钮:

<button class="card__button card__button--disabled">Click me</button>

在CSS中,我们可以定义.card__button--disabled的样式:

.card__button--disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

总结

BEM命名规范是一种有助于规范化CSS代码的命名约定,并且可以提高代码的可维护性和可读性。在开发过程中,遵循BEM命名规范可以使CSS代码更加清晰,易于维护。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CSS使用BEM命名规范实践 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • css实现文字竖排的方式(小结)

    我来为您详细讲解“CSS实现文字竖排的方式(小结)”的攻略。 标题 要实现文字竖排,我们可以使用CSS中的writing-mode属性,它定义了文本流相对于块级容器的方向。将writing-mode属性设置为tb-rl,即top to bottom, right to left,就可以实现文字从上到下、从右到左排列。 示例一 我们可以使用以下的CSS样式来实…

    css 2023年6月9日
    00
  • HTML5时代CSS设置漂亮字体取代图片

    HTML5时代,我们可以使用CSS来设置漂亮字体,而无需依赖图片。以下是完整的攻略: 1. 指定所需字体 首先,我们需要在CSS文件中指定要使用的字体。为了确保字体在用户的计算机上可用,我们需要提供一个备用选项。可以使用以下示例代码来设置字体: body { font-family: ‘Open Sans’, Arial, sans-serif; } 在这个…

    css 2023年6月9日
    00
  • coolcode转SyntaxHighlighter与Mysql正则表达式实现分析

    Coolcode转SyntaxHighlighter与Mysql正则表达式实现分析 本篇攻略主要介绍如何使用Coolcode和SyntaxHighlighter将代码块进行高亮显示,并结合Mysql正则表达式进行分析。 步骤1:Coolcode转SyntaxHighlighter Coolcode是一种代码高亮工具,可以将代码渲染成漂亮的样式。但是它存在一些…

    css 2023年6月9日
    00
  • JS、CSS以及img对DOMContentLoaded事件的影响

    DOMContentLoaded是DOM树构建完成之后触发的事件,在页面所有DOM元素都被解析构建完成后才会触发。在此事件触发后,页面上的所有静态资源都已加载完成,可以执行一些需要依赖DOM元素的逻辑。 JS对DOMContentLoaded事件的影响 Javascript是一种可以操作DOM元素的脚本语言,很多页面操作的逻辑都是在DOM树构建完成后通过JS…

    css 2023年6月10日
    00
  • HTML+CSS实现单选框、复选框美观的样式

    HTML 和 CSS 可以实现单选框、复选框等表单元素的美观样式。下面是实现这个目标的完整攻略: 1. HTML 结构 首先,我们需要在 HTML 中添加表单元素。对于单选框,我们可以使用 input 标签,并设置 type 属性为 radio,同时为每个单选框添加一个 name 属性和不同的 value 属性,以便在提交表单时正确地解析选项。 <la…

    css 2023年6月9日
    00
  • css把容器级别(div…)标签固定在一个位置(在页面最右边)

    要把容器级别(如div)标签固定在一个位置(如页面最右边),可以使用CSS中的position属性以及相关的取值。 下面是实现这一效果的步骤: 在CSS中选中需要固定的容器级别标签,并设置其position属性为fixed。同时,可以设置right属性为零或其他具体值,以确定容器级别标签在页面最右边的位置。 .container { position: fi…

    css 2023年6月9日
    00
  • 优化浏览器渲染 避免CSS expressions

    优化浏览器渲染是一项综合性的工作,它包括了诸如HTML性能优化、CSS优化、JavaScript性能优化等多个方面,本文将围绕着CSS优化展开,介绍如何避免CSS expressions,从而提高浏览器渲染性能。 什么是CSS expressions CSS expressions是非常强大和常用的一种CSS技术,它能够让CSS样式表动态计算和赋值。比如,我…

    css 2023年6月10日
    00
  • css 不同媒介的显示样式控制方式

    CSS可以根据不同媒介控制显示样式,其中包括屏幕、打印机等不同引擎。通常我们使用@media规则来定义这些不同媒介的样式,其语法如下: @media mediatype and (media feature){ CSS-Code; } 其中mediatype可以是多种媒介类型, 如 screen(屏幕)、print(打印)、speech(语音)等,media…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部