当你看到一个class的时候,你想得到什么信息?
这个class用在什么地方,作用是什么?是否在其他地方也有使用该class,修改会不会引起其他地方的样式问题?class 是否在js中被使用?……此时,你最想一眼看到这个class就解决以上所有的问题,而bem你值得拥有
什么是bem
bem(块,元素,修饰符)是基于组件的web开发的一种前端命名方法论,主要针对css。其背后的想法是将用户界面分为独立的块。即使使用复杂的ui,这也使界面开发变得容易和快速,并且允许重用现有代码而无需复制和粘贴。
优势
避免样式冲突减小名称长度提高可阅读性增加样式重用怎么使用bem
block
一个功能独立的页面组件,可以重复使用
块不应影响其环境,这意味着您不应设置块的外部几何形状油性皮肤怎么美白(边距)或位置
<!-- good-->< div class 山师历山学院= "header" > </ div ><!-- bad red-text 是描述外观-->< div class = "red-text" > </ div >
element
块的复合部分,不能单独使用
元素全名的结构为block-name__element-name
<!-- 块 `arch-form` --><form class="arch-form"> <!-- `input button` 元素 在 `arch-form` 块中 --> <input class="arch-form__input"> <button class="arch-form__button">arch</button></form>
一个元素始终是块的一部分,而不是另一个元素,因此元素名称不可定义为 b健康快乐成长lock__elem1__elem2 的层次结构
<!-- good 遵循 `block-name__element-name`--><form class="arch-form"> <div class="arch-form__content"> <input 鲭鱼王class="arch-form__input"> <button class="arch-form__button">arch</button> </div></form><!-- bad ' arch-form__content__button ' 不遵循 `block-name__element-name`--><form class="arch-form"> <div class="arch-form__content"> <input class="arch-form__content__input"> <button class="arch-form__content__button">arch</button> </div></form>
元素始终是一个块的一部分,您不应该与该块分开使用
<form class="arch-form"> <!-- good 元素在块 arch-form 的里面 --> <input class="arch-form__input"> <button class="arch-form__button">arch</button></form><form class="arch-form"></form><!-- bad 元素不在块 arch-form 的里面--><input class="arch-form__input"><button class="arch-form__button">arch</button>
modifier
定义块或元素的外观,状态或行为的实体
修饰符的两种类型
boolean
修饰符全名的结构遵循以下模式:
block-name_modifier-nameblock-name–modifier-nameblock-name_element-name_modifier-nameblock-name_element-name–modifier-name<form class="arch-form arch-form_focud"> <input class="arch-form__input"> <!-- 'disabled' 是 'button' 的元素 --> <button class="arch-form__button arch-form__button_disabled">arch</button></form>
key-value
修饰符全名的结构遵循以下模式:
block-name_modifier-name_modifier-valueblock-name_modifier-name–modifier-valueblock-name__element-name_modifier-name_modifier-valueblock-name__element-name_modifier-name–modifier-value<form class="arch-form arch-form_theme_islands"> <input class="arch-form__input"> <!-- good `button` 的修饰符 `size` 的值是 `m` --> <button class="arch-form__button arch-form__button_size_m">arch</button></form><form class="arch-form arch-form_theme_islands arch-form_theme_lite"> <input class="arch-form__input"> <!-- bad 不可同时使用两个不同值的相同修饰符 --> <button class="arch-form__button arch-form__button_size_s arch-form__button_size_m"> </button></form>
不能将修饰符与修饰的块或元素隔离使用。修饰符应更改实体的外观,行为或状态,而不是替换它
<!-- good--><form class="arch-form arch-form_theme_islands"> <input class="arch-form__input"> <button class="arch-form__button">arch</button></form><!-- bad 缺少了块名称 'arch-form' --><form class="arch-form_theme_islands"> <input class="arch-form__input"> <button class="arch-form__button">arch</button></form>
在修饰符和元素名称中添加块名称的好处
有助于减少一个块的元素和修饰符对另一个块的实现的影响可更清楚的知道修饰符应用于该dom节点上的哪个实体唯一名称使查找代码或文件系统中的实体变得更加容易什么时候应该用 bem 格式
使用 bem 的诀窍是,你要知道什么时候哪些东西是应该写成 bem 格式的。并不是每个地方都应该使用 bem 命名方式。当需要明确关联性的模块关系时,应当使用 bem 格式。比如只是一条公共的单独的样式,就没有使用 bem 格式的意义:.hide { display: none !important;}
命名规范
双下划线风格
block-name__elem-name--mod-name--mod-val
camelca style
blockname-elemname_modname_modval
react命名范式
blockname-elemname_modname_modval
没有命名空间样式
_available
常用的css命名
例子
vant 组件 css 命名
使用的命名是双下划线风格:block-name__element-name–modifier-name
<div class="van-doc"> <div class="van-doc-header"> <div class="van-doc-row"> <div class="van-doc-header__top"> <a class="van-doc-header__logo">搜索</a> <ul class="van-doc-header__top-nav"> <li class="van-doc-header__top-nav-item"> <a class="van-doc-header__logo-link"> </li> </ul> </div> </div> </div> <div class="van-doc-container van-doc-row van-doc-container--with-simulator"> ...... </div></div>
weui 组件 css 命名
使用的命名是 react命名风格:block-name__element-name_modifier-name
<div class="page button js_show"> <div class="page__hd"> <h1 class="page__title">button</h1> <p class="page__desc">按钮</p> </div> <div class="page__bd"> <div class="button-sp-area"> <a class="weui-btn weui-btn_primary">页面主操作</a> <a class="weui-btn weui-btn_loading">页面主操作</a> <a class="weui-btn weui-btn_disabled>页面主操作</a> <a class="weui-btn weui-btn_default">页面次要操作</a> <a class="weui-btn weui-btn_warn">警告类操作</a> </div> .... <div class="button-sp-area cell">
校验 bem 规范工具
stylelint-lector-bem-pattern
到此这篇关于css使用bem命名规范实践的文章就介绍到这了,更多相关css bem命名规范内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章,希望大家以后多多支持www.887551.com!
本文发布于:2023-04-03 20:14:23,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/87fbddd120451c988ece72eac1acf8b6.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:CSS使用BEM命名规范实践.doc
本文 PDF 下载地址:CSS使用BEM命名规范实践.pdf
留言与评论(共有 0 条评论) |