千家信息网

CSS中BEM命名规范实例分析

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要讲解了"CSS中BEM命名规范实例分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"CSS中BEM命名规范实例分析"吧!一什么是BEM命名
千家信息网最后更新 2025年02月23日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安全错误 数据库的锁怎样保障安全 服务器升级为什么网络用不了 在线网络技术服务技能 网络安全法制考试题库 vps服务器代理 软件开发属于什么公司吗 国家网络安全局是哪年成立的 数据库8.0.26 计算机网络技术算计算机类吗 为什么剑与家园服务器列表不显示 三级数据库技术路线 典型iot网络安全分析报告 无锡正规软件开发联系方式 服务器人员需要做什么 2022网络安全宣传周 政务日 服务器配置两条外网网线 列举数据库不安全的因素 网络安全主题正文1500 为什么找不到论文数据库 数据库长连接Java 空服务器备案 淘房科技互联网产业园 网络安全隐私权的表述 幼苗网络安全观后感 福州pc软件开发 Android数据库建立 推荐学生网络安全手抄报 上海银联网络技术创新服务 王牌竞速区分服务器吗 传媒运营软件开发 软件开发培训课程产品
0