`
qietuwang
  • 浏览: 4494 次
文章分类
社区版块
存档分类
最新评论

有关前端BEM命名方式的思考

阅读更多

 

 最初的思考

 

思考来源于要给切图网改一次版,作为前端开发服务商,我觉得应该要有自己的一款前端CSS框架,并且这个框架不应该只是随便写写,最好能够用在官网上,拿官网做背书,于是在研究了火狐、adobe、微软、google amp等官网以后,写了一款quickly.css响应式前端框架并且开源,并且用在了新版网站上。

 

问题?

 

在写框架的时候,定义了这么一个类 .card 它可以用在很多场合。然后 .card 下面定义了几个子元素,如下:

 

.card-head {}

 

.card-body{}

 

.card-foot{}

然后.card 本身还有很多种状态,以灵活的适应不同的场合,如下

 

.card-border{}    /*带边框的*/

 

.card-shadow{} /* 带阴影的*/

 

.card-colorful{} /*彩色的*/

那么实际的运用是这样的:

 

<div class="card card-colorful  card-shadow">

 

<div class="card-head">

 

</div>

 

<div class="card-body">

 

</div>

 

</div>

综上可以发现,一般人在使用的时候很难搞清楚 .card-colorful 和 .card-body 有什么区别, 其实一个是对形态的定义,一个是下面的子元素,所以问题就这样产生了。有没有办法让人通过命名一眼就能辨别,哪是子元素,哪是修饰符呢? 结合脑海里的知识我首先想到了BEM 。

 

BEM ?

 

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

 

BEM 命名约定的模式是:

 

.block {}

.block__element {}

.block–modifier {}

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

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

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

 

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

 

.sub-block__element {}

.sub-block–modifier {}

 

好了,我们在来尝试一下,之前碰到的问题,用BEM命名方式能否解决,实际quickly框架是有命名空间的以qui开头,那么结合BEM的命名方式如下:

 

.qui-card{}

 

.qui-card--colorful{}

 

.qui-card__head{}

 

.qui-card__body{}

 

.qui-card__foot{}

那么问题就迎刃而解了。

分享到:
评论

相关推荐

    web前端+css命名 规范

    在Web前端开发中,CSS(层叠样式表)命名规范是至关重要的,它不仅有助于代码的可读性和可维护性,还能提升团队协作的效率。本文将深入探讨CSS命名规范及其重要性,并结合HTML和CSS的基础知识,为前端开发者提供一份...

    CSS BEM 命名规范的实现

    BEM是一种前端命名方法论,它的全称是Block Element Modifier,即块、元素、修饰符。BEM的主要目的是通过定义命名空间来解决CSS的范围问题,从而使CSS更具可维护性。BEM的核心思想是将页面分解为独立的块(Block),...

    CSS BEM 命名规范简介(推荐)

    Bem 是块(block)、元素(element)、修饰符(modifier)的简写,由 Yandex 团队提出的一种前端 CSS 命名方法论。 BEM 是一个简单又非常有用的命名约定。让你的前端代码更容易阅读和理解,更容易协作,更容易控制,...

    前端开源库-stylelint-selector-bem-pattern

    BEM(Block Element Modifier)是一种流行的前端开发方法论,它为CSS类名提供了一套结构化和模块化的命名规则。BEM的核心理念是将页面拆分成独立的、可重用的组件,每个组件有自己的命名空间,由三部分组成:Block...

    Laravel开发-bem-blade

    通过这种方式,Laravel的Blade模板与BEM方法论相结合,可以有效提升代码的可读性和可维护性,同时也让前端样式更加结构化。在实际项目中,你可以根据需求扩展这些指令,例如支持更多参数或更复杂的BEM类名生成逻辑。...

    CSS使用BEM命名规范实践

    BEM(块,元素,修饰符)是基于组件的Web开发的一种前端命名方法论,主要针对CSS。其背后的想法是将用户界面分为独立的块。即使使用复杂的UI,这也使界面开发变得容易和快速,并且允许重用现有代码而无需复制和粘贴...

    Atom-atom-bem-tools,原子的BEM序列化程序。贡献给pvoznyuk/atom.zip

    这个工具集为Atom提供了一种高效的方式来处理与BEM相关的任务。 在Web开发中,Atom是一个广受欢迎的开源文本编辑器,由GitHub开发。它以其高度可定制性、丰富的插件生态系统和良好的性能而受到开发者喜爱。Atom-...

    css 命名:BEM, scoped css, css modules 与 css-in-js详解

    在前端开发中,CSS的命名规范对于代码的可维护性和团队协作至关重要。随着项目的规模增大,CSS命名冲突问题日益突出。本文将详细讲解四种解决命名问题的策略:BEM、scoped CSS、CSS Modules以及CSS-in-JS。 1. **...

    WEB前端开发规范文档+CSS命名规范

    1. **命名规则**:使用有意义的英文单词或缩写,保持一致的命名风格,如BEM(Block Element Modifier)或SMACSS(Scalable and Modular Architecture for CSS)。 2. **选择器**:避免使用过于复杂的选择器,优先...

    网页前端设计规范(包含文件夹,CSS命名等)

    2. **BEM(Block Element Modifier)**:这是一种流行的命名方法,它将类名分为三个部分——块(Block)、元素(Element)和修饰符(Modifier)。例如,“.nav”是块,“.nav__item”是元素,“.nav--horizontal”是...

    基于BEM源码的规则

    **基于BEM源码的规则详解** 在通信系统中,信号传输过程中会遇到各种复杂的环境影响,如多径传播、动态遮挡等,这导致了信道条件的变化,即时变信道。为了准确地模拟和理解这些效应,研究者们发展了多种信道建模...

    test_bem-源码.rar

    BEM是一种前端开发的命名规范,它旨在提高CSS代码的可维护性和可扩展性。这个压缩包可能是为了方便开发者下载、研究或使用这些遵循BEM原则编写的源代码。 【描述】"test_bem-源码.rar"的描述简洁明了,没有提供额外...

    bem-react-helper:一个帮助程序,使其更容易根据BEM约定来命名React组件

    BEM React助手 一个帮助程序,可以更轻松地根据来命名React组件。解释BEM中有两个主要实体:“块”和“元素”。 还有一些“修饰符”可以通过某些方式改变它们。 实体之间存在关系-“混合”。 它们都是由CSS类统治的...

    阿里前端开发规范.pdf

    CSS 规范中,命名建议使用 BEM(Block Element Modifier)方法,确保模块化和可维护性。选择器应该简洁,避免使用过于复杂的选择器链,以提升性能。尽量使用缩写属性,如 `margin: 0 auto;` 替换 `margin-left: 0; ...

    常用的css命名规则.txt

    在IT行业的前端开发领域,CSS(层叠样式表)作为网页设计的重要组成部分,其命名规则对于维护代码的可读性和可维护性具有至关重要的作用。本文将深入解析“常用的CSS命名规则”这一主题,旨在帮助开发者理解并掌握一...

    Laravel开发-bem-php

    在现代前端开发中,Block Element Modifier (BEM) 方法论被广泛采用,它提供了一种清晰的命名规则,有助于提高代码的可维护性和可复用性。BEM 的核心理念是将界面拆分为独立的、可重用的组件,每个组件由三个部分...

    WEB前端开发规范文档CSS命名规范.docx

    2. **BEM(Block Element Modifier)命名法**:这是一种常见的CSS命名策略,用于区分组件(Block)、组件内的元素(Element)以及状态或修饰符(Modifier)。例如,一个按钮组件可以命名为`btn`,其颜色修饰符可以是...

    Web前端项目开发规范 .pdf

    8. CSS样式命名规则:提倡使用BEM(Block Element Modifier)命名方法,如`.block__element--modifier`。 四、HTML规范 1. 文档规范:应使用HTML5标准,添加&lt;!DOCTYPE html&gt;声明,并使用`&lt;head&gt;`和`&lt;body&gt;`元素...

    漫談CSS架構方法-以OOCSS,SMACSS,BEM為例

    BEM的命名方式提供了一种清晰的层级结构和视觉清晰度,这有助于减少样式之间的冲突,并提高CSS代码的可读性和可维护性。 在使用这些架构方法时,还要考虑响应式设计的实践,即如何让网页在不同尺寸的设备上都能良好...

Global site tag (gtag.js) - Google Analytics