首页 > 作文

CSS使用BEM命名规范实践

更新时间:2023-04-03 20:14:25 阅读: 评论:0

当你看到一个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

名称以小写拉丁字母书写。bem实体名称中的单词由连字符(-)分隔。元素名称与块名各种福字图片称之间用双下划线(__)分隔。布尔修饰符用双连字符(–)与块或元素的名称分隔。修饰符的值与其名称之间用双连字符(–)分隔。(重要提示:注释(–)中的双连字符可能会在html文档验证期间导致错误。)

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 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图