千家信息网

CSS中BEM命名规范实例分析

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要讲解了"CSS中BEM命名规范实例分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"CSS中BEM命名规范实例分析"吧!一什么是BEM命名
千家信息网最后更新 2025年11月07日CSS中BEM命名规范实例分析

这篇文章主要讲解了"CSS中BEM命名规范实例分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"CSS中BEM命名规范实例分析"吧!

  一什么是BEM命名规范

  Bem是块(block)、元素(element)、修饰符(modifier)的简写,由Yandex团队提出的一种前端CSS命名方法论。

  -中划线:仅作为连字符使用,表示某个块或者某个子元素的多单词之间的连接记号。

  __双下划线:双下划线用来连接块和块的子元素

  _单下划线:单下划线用来描述一个块或者块的子元素的一种状态

  BEM是一个简单又非常有用的命名约定。让你的前端代码更容易阅读和理解,更容易协作,更容易控制,更加健壮和明确,而且更加严密。

  1.BEM命名模式

  BEM命名约定的模式是:

  .block{}

  .block__element{}

  .block--modifier{}

  每一个块(block)名应该有一个命名空间(前缀)

  block代表了更高级别的抽象或组件。

  block__element代表.block的后代,用于形成一个完整的.block的整体。

  block--modifier代表.block的不同状态或不同版本

  使用两个连字符和下划线而不是一个,是为了让你自己的块可以用单个连字符来界定。如:

  .sub-block__element{}

  .sub-block--modifier{}

  2.BEM命名法的好处

  BEM的关键是,可以获得更多的描述和更加清晰的结构,从其名字可以知道某个标记的含义。于是,通过查看HTML代码中的class属性,就能知道元素之间的关联。

  常规的命名法示例:

  

  

  

  

  

  

  这种写法从DOM结构和类命名上可以了解每个元素的意义,但无法明确其真实的层级关系。在css定义时,也必须依靠层级选择器来限定约束作用域,以避免跨组件的样式污染。

  使用了BEM命名方法的示例:

  

  

  

  

  

  

  

  通过BEM命名方式,模块层级关系简单清晰,而且css书写上也不必作过多的层级选择。

  二、如何使用BEM命名法

  1.什么时候应该用BEM格式

  使用BEM的诀窍是,你要知道什么时候哪些东西是应该写成BEM格式的。并不是每个地方都应该使用BEM命名方式。当需要明确关联性的模块关系时,应当使用BEM格式。比如只是一条公共的单独的样式,就没有使用BEM格式的意义:

  .hide{display:none!important;}

  2.在CSS预处理器中使用BEM格式

  BEM的一个槽点是,命名方式长而难看,书写不雅。相比BEM格式带来的便利来说,我们应客观看待。而且,一般来说会使用通过LESS/SASS等预处理器语言来编写CSS,利用其语言特性书写起来要简单很多。

  以LESS为例:

  .article{

  max-width:1200px;

  &__body{

  padding:20px;

  }

  &__button{

  padding:5px8px;

  &--primary{background:blue;}

  &--success{background:green;}

  }

  }

  3在流行框架的组件中使用BEM格式

  在当前流行的Vue.js/React/`Angular等前端框架中,都有CSS组件级作用域的编译实现,其基本原理均为利用CSS属性选择器特性,为不同的组件生成不同的属性选择器。

  当你选择了这种局部作用域的写法时,在较小的组件中,BEM格式可能显得没那么重要。但对于公共的、全局性的模块样式定义,还是推荐使用BEM格式。

  另外,对于对外发布的公共组件来说,一般为了风格的可定制性,都不会使用这种局部作用域方式来定义组件样式。此时使用BEM格式也会大显其彩。

  4避免.block__el1__el2的格式

  在深层次嵌套的DOM

  结构下,应避免过长的样式名称定义。

  层级最后不要超过4级,不然增加阅读的理解难度

  三、总结

  BEM最难的部分之一是明确作用域是从哪开始和到哪结束的,以及什么时候使用或不使用它。随着不断使用的经验积累,你慢慢就会知道怎么用,这些问题也不再是问题。技术无好坏,合适方最好。

  推荐写法和风格

  //常规写法:

  .xxx{}

  .xxx__item{}

  .xxx__item_current{}

  //嵌套写法

  .xxx__item_current.mod-xxx__link{}

  推荐:

  .xxx{}

  .xxx__item{}

  .xxx__item_hightlight{}

  .xxx__product-name{}

  .xxx__link{}

  .xxx__ming-zi-ke-yi-hen-chang{}

  //嵌套写法

  .xxx__item_current{

  .xxx__link{}

  }

  //对应的HTML结构如下:

  

  第一项

  我是名称

  看类名

  我是link

  

  第二项且当前选择项

  我是名称

  我是link

  

  第三项且特殊高亮

  我是名称

  我是link

  

  

感谢各位的阅读,以上就是"CSS中BEM命名规范实例分析"的内容了,经过本文的学习后,相信大家对CSS中BEM命名规范实例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

很赞哦!
格式 组件 元素 写法 选择 下划线 作用 层级 样式 实例 实例分析 分析 不同 名称 方式 结构 代表 前端 属性 时候 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发全栈化 线下购物商城软件开发 梦幻西游可以转区的服务器 gps时间频率同步服务器 itunes 链接服务器 服务器制作绩效考核 软件开发进度计划填好的 国防科技技术学院互联网 网络安全防护主要技术 近几年来网络安全问题 所称网络安全 河南服务器硬盘销售 qq旋风服务器 在线翻译app软件开发 校园网网络安全现状 测速服务器通讯较差是什么意思 使用数据库管理技术的案例 华为交换机ntp时钟服务器 石家庄市国家网络安全教育 navicat数据库导出 原神苹果官方服务器 科学技术大数据库 深圳市驰鸿网络技术有限公司 上海遨云互联网科技有限公司 大唐移动软件开发岗 静海区信息网络技术诚信合作 幻塔服务器不同可以联机吗 服务器清华同方超强r628 云计算环境下的网络安全技术论文 软件开发uml设计师
0