首页 > 其他分享 >BEM 命名规范

BEM 命名规范

时间:2023-09-30 18:11:25浏览次数:28  
标签:元素 BEM button 修饰符 规范 组件 命名

来源:ChatGPT, prompt "什么是 BEM 命名规范?", September 30, 2023, OpenAI, https://chat.openai.com.

BEM(Block Element Modifier)是一种命名规范和方法,用于编写可维护且可重用的前端代码,特别是用于编写 CSS 和 HTML。BEM 的核心思想是将界面分解为可重用的组件,以及定义这些组件之间的关系,从而帮助开发人员更好地组织和管理代码。

BEM 规范包括以下几个关键概念:

  1. Block(块):块是页面上的一个独立、可重用的组件或模块,具有高度的内聚性。块的命名应该是独特的,并用短划线(-)分隔单词,例如 headerbuttonmenu 等。

  2. Element(元素):元素是块的一部分,通常没有独立的含义。元素的命名应该以块的名字开头,后面跟两个下划线(__)和元素的名字,例如 menu__itembutton__text

  3. Modifier(修饰符):修饰符用于表示块或元素的不同状态或变体。修饰符的命名应该以块或元素的名字开头,后面跟两个短划线(--)和修饰符的名字,例如 button--primarymenu__item--active

使用 BEM 命名规范的好处包括:

  • 可读性:BEM 规范的命名方式使代码易于理解和维护,因为它反映了组件的结构和关系。

  • 可维护性:BEM 代码更容易维护,因为每个块或元素都有自己的命名空间,不容易与其他部分发生冲突。

  • 可重用性:BEM 有助于创建可重用的组件,这些组件可以在项目的不同部分或不同项目中重复使用。

  • 可扩展性:通过添加新的块、元素或修饰符,可以轻松扩展和定制现有组件。

下面是一个示例,演示了如何使用 BEM 命名规范创建一个按钮组件:

<!-- 块:button -->
<button class="button">
  <!-- 元素:button__text -->
  <span class="button__text">Click me</span>
</button>

<!-- 使用修饰符来表示不同状态 -->
<button class="button button--primary">
  <span class="button__text">Primary Button</span>
</button>

在上面的示例中,button 是块,button__text 是块的元素,button--primary 是块的修饰符。这种命名方式有助于清晰地定义组件的结构和样式,使其易于维护和扩展。

标签:元素,BEM,button,修饰符,规范,组件,命名
From: https://www.cnblogs.com/Higurashi-kagome/p/17737603.html

相关文章

  • Intel & AMD CPU命名规则
    IntelIntel命名规律官方文档AMDAMD命名规律官方文档......
  • STM32CubeMX 生成的 Makefile 文件解析
    STM32CubeMX生成的Makefile文件解析Makefile的前置知识一个makefile是由一系列的规则(rule)组成的。一条完整的规则包括目标(target)、依赖(prerequistites)、方法(recipe):target...:prerequistites...recipe......依赖和方法不一定需要同......
  • python重命名 文件
    在Python中,可以使用os模块的rename()函数来重命名文件。以下是一个基本的示例:importos#原文件的路径old_file_path='/path/to/your/old_file_name.txt'#新文件的路径new_file_path='/path/to/your/new_file_name.txt'#使用os.rename()函数进行重命名os.rename(......
  • golang编码规范
     目录[-]golang编码规范gofmt注释命名控制结构函数(必须)错误处理panicimport缩写参数传递接受者 golang编码规范注:此文档参考官方指南EffectiveGolang和GolangCodeReviewComments进行整理,力图与官方及社区编码风格保持一致。gofmt大部分的格式问题可以通过gofmt解决,gofmt自动......
  • 什么是网址规范化
    规范化是指选择一段内容的有代表性的规范网址的过程。因此,规范网址是指Google从一组重复网页中选出的最具代表性的网页的网址。此过程通常称为重复信息删除,有助于Google在搜索结果中仅显示重复内容的一个版本。网站包含重复内容的原因有很多:区域变体:例如,面向美国和英国的一段内......
  • 从0到1的手把手教你配置项目git提交规范及其执行顺序
    从0到1的手把手教你配置项目git提交规范及其执行顺序这里以React项目为例初始化一个项目npxcreate-react-appmy-app--templatetypescriptcdmy-appnpmstart初始化gitgitinit安装husky并进行配置npmihusky#根据node_m......
  • 公文规范写作
    公文写作,一般字体格式为仿宋体,字体大小3号,特定情况可以作适当调整;一般每面排22行,每行排28个字。1、幅面尺寸公文用纸采用GB/T 148中规定的A4型纸,其成品幅面尺寸为:210 mm×297 mm。GB/T 9704—2012。2、版面①页边与版心尺寸公文用纸天头(上白边)为37 mm±1 mm,下35mm,公文用纸订......
  • C++(命名空间,输入输出)
    从堆上申请空间#include<malloc.h>int*p=(int)malloc(10sizeof(int));//malloc返回的是无类型free(p);//释放内存,不然会造成内存泄漏命名空间:用户自己定义的作用域namespaceN{//变量inta;//函数}inta;//不冲突命名空间可以嵌套在一个工程中,可以出现多个相同名称的命名......
  • [译]JavaScript规范
    译自:https://github.com/airbnb/javascript类型原始值:相当于传值1.string2.number3.boolean4.null5.undefined6.varfoo=1,7.bar=foo;8.9.bar=9;10.11.console.log(foo,bar);//=>1,9复杂类型:相当于传引用1.obje......
  • 人人FED CSS编码规范
    浏览器特效支持规范为了页面性能考虑,如果浏览器不支持CSS3相关属性的,则该浏览器的某些特效将不再支持,属性的支持情况如下表所示: 圆角阴影动画文字阴影透明背景渐变空间变换Chrome5+YYYYYYYFirefox4+YYYYYYYSafari5+YYYYYYYOperaYYYYYNYIE9+YYNNYNYChrome5-NNYYYYYFirefox4-NN......