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

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日

相关文章

  • bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)

    Bootstrap是由Twitter公司推出的一个前端开发框架,因为其灵活性、易用性和兼容性,被越来越多的前端工程师使用。本文将详细介绍如何在网页中使用Bootstrap的导航条、下拉菜单、轮播和栅格布局等常用功能。 一、导航条 导航条是网站中必不可少的部分之一。Bootstrap提供了一些样式和组件,使得我们能够快速地创建漂亮的导航条。以下是一个创建Boo…

    css 2023年6月11日
    00
  • JavaScript实现预览本地上传图片功能完整示例

    请看下面的攻略: JavaScript实现预览本地上传图片功能完整示例攻略 概述 在网页中,有时需要用户上传图片,并在上传后立即预览上传的图片。这个功能可以通过JavaScript实现。本文将详细介绍如何使用JavaScript完成图片上传和预览功能。 HTML代码 首先,在HTML代码中,我们需要准备一个表单用于上传图片,以及一个用于预览图片的标签。示例H…

    css 2023年6月11日
    00
  • 前端必会的Webpack优化技巧

    前端工程化是现代 web 开发不可或缺的一部分。而其中用来打包资源的Webpack更是一个必会的技能。然而在使用Webpack的过程中,为了达到最佳性能,我们还需要通过一些优化技巧来优化Webpack的打包过程。本文将介绍前端必会的Webpack优化技巧全攻略。 一、基础优化 1.1 设置webpack.config.js webpack.config.js…

    css 2023年6月10日
    00
  • css 调试方法与经验总结

    一、CSS调试方法与经验总结 使用浏览器调试工具 浏览器调试工具是CSS调试的最佳利器。几乎所有现代浏览器都提供了内置的调试工具,例如Chrome浏览器的开发者工具、Firefox浏览器的Firebug、Safari浏览器的Web Inspector等。 使用浏览器调试工具,可以查看元素的样式属性、样式表的层级关系、样式表的引用位置等。同时,还可以通过调整属…

    css 2023年6月10日
    00
  • 通过绝对定位实现div重叠实例代码

    通过绝对定位实现div重叠是常见的Web前端技术之一,它可以帮助我们实现一些比较特殊的布局效果。下面分享一下通过绝对定位实现div重叠的完整攻略。 步骤一:设置父元素 首先,需要在HTML中定义一个父元素,用来包裹多个需要重叠的子元素。父元素的样式应该是相对定位(position: relative),这样我们才能在其内部定义绝对定位的子元素。 示例代码: …

    css 2023年6月10日
    00
  • 常见浏览器兼容性问题与解决方案css篇

    常见浏览器兼容性问题与解决方案(CSS篇) 在开发网页时,经常会遇到浏览器兼容性问题,特别是在CSS方面。本攻略将详细讲解常见的浏览器兼容性问题及其解决方案,包括盒模型、浮动、定位、文本溢出、字体、背景等。 1. 盒模型 盒模型是CSS中一个重要的概念,它决定了元素的尺寸和边距。然而,不同浏览器对盒模型的解释不同,导致在设置元素尺寸和边距时出现兼容性问题。 …

    css 2023年5月18日
    00
  • JS实现简单控制视频播放倍速的实例代码

    下面是详细的攻略来实现JS控制视频播放倍速的代码,并且包含两个示例说明: 1. 准备工作 在实现JS控制视频播放倍速前,我们需要先准备好以下相关工作: 在页面中引入需要播放的视频文件,如:<video src=”video.mp4″></video>; 在页面中引入控制视频播放的JS代码。 2. JS代码实现 实现JS控制视频播放倍速…

    css 2023年6月10日
    00
  • CSS图文混排的几种方案

    CSS图文混排的几种方案 在网页设计中,图文混排是一种常见的布局方式,可以使页面更加美观和易读。本攻略将详细讲解CSS图文混排的几种方案,并提供两个示例说明。 1. CSS浮动布局 CSS浮动布局是一种常见的图文混排方式,它可以使文本环绕在图片周围。使用CSS浮动布局,需要将图片设置为浮动元素,然后使用clear属性来清除浮动。 <!DOCTYPE h…

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