CSS BEM 命名规范简介(推荐)

yizhihongxing

CSS BEM 命名规范简介(推荐)

什么是 BEM

BEM 是 Block(块)、Element(元素)、Modifier(修饰符)的缩写,是一种前端 CSS 命名规范。

在 BEM 的规范下,每个页面元素都是通过一个 Block (块)来表示的,Block 可以包含多个 Element (元素),而 Element 又可以被修饰符 Modifier (修饰符)所修饰。

BEM 的优点

  1. BEM 可以让代码更加明确。在采用 BEM 时,每个元素的作用都变得清晰。这样可以减少对样式选择器的解释和理解。
  2. BEM 可以避免类名冲突。BEM 的标识符中存在模块名称、元素名称以及修饰符名称,因此可以有效的防止类名冲突的问题。
  3. BEM 可以便于维护和扩展。使用 BEM 可以轻松地更新或增加元素,而不必考虑十分细致的样式选择器命名方法。

如何实现 BEM

Block

Block 是页面中的一个独立的部分,在 HTML 中一个 Block 可以是一篇文章、一个导航栏或一个搜索框。在 CSS 中 Block 通常被表示为一个类名。例如,下面这里表示一个提示框:

<div class="alert"></div>
.alert {}

Element

Element 表示 Block 的组成部分。大多数的元素都是 Block 的 Element。但是,它们不是独立的 Block ,因而没有单独的 CSS 类名。例如,.alert 内的标题 h1 是 alert 的 Element:

<div class="alert">
  <h1 class="alert__title"></h1>
</div>
.alert__title {}

Modifier

Modifier 是用于更改 Block 或 Element 外观的标志。例如,修改警告条颜色的样式:

<div class="alert alert--green">
  <h1 class="alert__title">提示标题</h1>
</div>
.alert--green {
  background-color: green;
}

可以看出,Modifier 的标识符在原有的 Block 或 Element 标识符基础上,增加了两个短横线。

示例1

<div class="search">
  <input class="search__input" type="text" placeholder="请输入搜索关键词" />
  <button class="search__button">搜索</button>
</div>
.search {}

.search__input {}

.search__button {}

我们可以看到 search 充当的 Block 的角色。里面包含两个元素(input 和 button)。它们的圆点元素分别为 search__input 和 search__button

示例2

<ul class="sidebar">
  <li class="sidebar__item">
    <a class="sidebar__item__title" href="">产品分类</a>
    <ul class="sidebar__item__list">
      <li class="sidebar__item__list__subitem">
        <a href="">手机</a>
      </li>
      <li class="sidebar__item__list__subitem">
        <a href="">笔记本电脑</a>
      </li>
    </ul>
  </li>
</ul>
.sidebar {}

.sidebar__item {}

.sidebar__item__title {}

.sidebar__item__list {}

.sidebar__item__list__subitem {}

我们可以看到sidebar 充当的 Block 的角色,里面包含一个元素(sidebar__item)。它又包含我们在网站中常见的“分类导航栏”- 商品分类(sidebar__item__title)和二级分类子项列表(sidebar__item__list),二级分类中的内容为字典列表项(sidebar__item__list__subitem)。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CSS BEM 命名规范简介(推荐) - Python技术站

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

相关文章

  • 基于jquery的bankInput银行卡账号格式化

    基于jquery的bankInput银行卡账号格式化 简介 本攻略介绍了基于jquery的bankInput银行卡账号格式化,帮助网站开发者快速实现银行卡号的格式化功能。 环境准备 在使用bankInput之前,需要引入jquery库和bankInput库。 引入jquery库 <script src="//cdn.bootcss.com/j…

    css 2023年6月10日
    00
  • HTML5边玩边学(3)像素和颜色

    HTML5边玩边学(3)像素和颜色是一篇介绍HTML中像素和颜色的基础知识的文章。以下是它的完整攻略: 标题 HTML5边玩边学(3)像素和颜色 像素 像素(pixel)是一种用于测量屏幕分辨率的单位,通常用于衡量屏幕的清晰度。在HTML中,像素通常用来描述开发者定义的元素大小。实际上,浏览器根据不同的屏幕和设备,将像素映射为不同的比例。比如,在Retina…

    css 2023年6月9日
    00
  • javascript滚轮控制模拟滚动条

    下面是JavaScript滚轮控制模拟滚动条的完整攻略。 1. 目标 我们的目标是实现一个通过鼠标滚轮来控制网页中自定义滚动条的滚动的效果。具体需求包括: 鼠标滚动时,滚动条向上或向下滚动一定距离。 滚动条的位置要动态显示,并且可以通过拖动来控制滚动条位置。 滚轮滚动距离与滚动条滚动距离的比例要保持一致。 滚动条需要自适应网页高度变化。 2. 分析 为了实现…

    css 2023年6月10日
    00
  • 通过css动画实现一个表格滚动轮播效果

    下面是通过 CSS 动画实现一个表格滚动轮播效果的攻略。 准备工作 首先,你需要在 HTML 中创建一个表格,用来展示要轮播的内容。接着,你需要在 CSS 中为表格设置样式,并创建一个滚动容器用来容纳表格。 下面是一个简单的 HTML 示例代码: <div class="scroll-container"> <table…

    css 2023年6月10日
    00
  • Adobe Dreamweaver CS3 官方简体中文龙卷风修正版v1.1下载

    下面就为大家介绍下载”Adobe Dreamweaver CS3 官方简体中文龙卷风修正版v1.1″的完整攻略。 1. 确认系统要求 在下载Adobe Dreamweaver CS3之前,我们需要确认电脑是否满足软件的最低系统要求。Adobe Dreamweaver CS3支持 Windows XP, Windows Vista和Windows 7等操作系统…

    css 2023年6月9日
    00
  • CSS3之边框多颜色Border-color属性使用示例

    我会详细讲解CSS3中边框多颜色Border-color属性的使用示例。 什么是Border-color属性 Border-color是CSS属性的一种,它用于设置一个HTML元素的边框颜色。这个属性可以接收1到4个值,分别是上、右、下、左的边框颜色值,如果没有提供所有的颜色值,则使用复合值,即CSS将使用默认颜色重复填充缺失的颜色。 例如,设置所有边框的颜…

    css 2023年6月9日
    00
  • 用javascript css实现GridView行背景色交替、鼠标划过行变色,点击行变色选中

    下面是详细的JavaScript和CSS实现GridView行背景色交替、鼠标划过行变色,点击行变色选中的攻略。 1. 实现思路 GridView是一个常用的表格组件,为了提升用户体验,我们可以通过JavaScript和CSS来实现GridView行背景色交替、鼠标划过行变色以及点击行变色选中的功能。具体的实现思路如下: 使用CSS选择器:nth-child…

    css 2023年6月9日
    00
  • 详解vue-cli与webpack结合如何处理静态资源

    Vue CLI 是官方提供的 Vue.js 开发脚手架工具,它可以帮助我们一键构建 Vue.js 开发环境,同时也能对项目进行打包、调试和部署。其中,Webpack 是 Vue CLI 在底层使用的模块化打包工具,它可以处理各种类型的静态资源。 引入静态资源 在 Vue CLI 中,我们可以用 import 或 require 引入各种类型的静态资源,例如样…

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