最初的思考
思考来源于要给切图网改一次版,作为前端开发服务商,我觉得应该要有自己的一款前端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(层叠样式表)命名规范是至关重要的,它不仅有助于代码的可读性和可维护性,还能提升团队协作的效率。本文将深入探讨CSS命名规范及其重要性,并结合HTML和CSS的基础知识,为前端开发者提供一份...
BEM是一种前端命名方法论,它的全称是Block Element Modifier,即块、元素、修饰符。BEM的主要目的是通过定义命名空间来解决CSS的范围问题,从而使CSS更具可维护性。BEM的核心思想是将页面分解为独立的块(Block),...
Bem 是块(block)、元素(element)、修饰符(modifier)的简写,由 Yandex 团队提出的一种前端 CSS 命名方法论。 BEM 是一个简单又非常有用的命名约定。让你的前端代码更容易阅读和理解,更容易协作,更容易控制,...
BEM(Block Element Modifier)是一种流行的前端开发方法论,它为CSS类名提供了一套结构化和模块化的命名规则。BEM的核心理念是将页面拆分成独立的、可重用的组件,每个组件有自己的命名空间,由三部分组成:Block...
通过这种方式,Laravel的Blade模板与BEM方法论相结合,可以有效提升代码的可读性和可维护性,同时也让前端样式更加结构化。在实际项目中,你可以根据需求扩展这些指令,例如支持更多参数或更复杂的BEM类名生成逻辑。...
BEM(块,元素,修饰符)是基于组件的Web开发的一种前端命名方法论,主要针对CSS。其背后的想法是将用户界面分为独立的块。即使使用复杂的UI,这也使界面开发变得容易和快速,并且允许重用现有代码而无需复制和粘贴...
这个工具集为Atom提供了一种高效的方式来处理与BEM相关的任务。 在Web开发中,Atom是一个广受欢迎的开源文本编辑器,由GitHub开发。它以其高度可定制性、丰富的插件生态系统和良好的性能而受到开发者喜爱。Atom-...
在前端开发中,CSS的命名规范对于代码的可维护性和团队协作至关重要。随着项目的规模增大,CSS命名冲突问题日益突出。本文将详细讲解四种解决命名问题的策略:BEM、scoped CSS、CSS Modules以及CSS-in-JS。 1. **...
1. **命名规则**:使用有意义的英文单词或缩写,保持一致的命名风格,如BEM(Block Element Modifier)或SMACSS(Scalable and Modular Architecture for CSS)。 2. **选择器**:避免使用过于复杂的选择器,优先...
2. **BEM(Block Element Modifier)**:这是一种流行的命名方法,它将类名分为三个部分——块(Block)、元素(Element)和修饰符(Modifier)。例如,“.nav”是块,“.nav__item”是元素,“.nav--horizontal”是...
**基于BEM源码的规则详解** 在通信系统中,信号传输过程中会遇到各种复杂的环境影响,如多径传播、动态遮挡等,这导致了信道条件的变化,即时变信道。为了准确地模拟和理解这些效应,研究者们发展了多种信道建模...
BEM是一种前端开发的命名规范,它旨在提高CSS代码的可维护性和可扩展性。这个压缩包可能是为了方便开发者下载、研究或使用这些遵循BEM原则编写的源代码。 【描述】"test_bem-源码.rar"的描述简洁明了,没有提供额外...
BEM React助手 一个帮助程序,可以更轻松地根据来命名React组件。解释BEM中有两个主要实体:“块”和“元素”。 还有一些“修饰符”可以通过某些方式改变它们。 实体之间存在关系-“混合”。 它们都是由CSS类统治的...
CSS 规范中,命名建议使用 BEM(Block Element Modifier)方法,确保模块化和可维护性。选择器应该简洁,避免使用过于复杂的选择器链,以提升性能。尽量使用缩写属性,如 `margin: 0 auto;` 替换 `margin-left: 0; ...
在IT行业的前端开发领域,CSS(层叠样式表)作为网页设计的重要组成部分,其命名规则对于维护代码的可读性和可维护性具有至关重要的作用。本文将深入解析“常用的CSS命名规则”这一主题,旨在帮助开发者理解并掌握一...
在现代前端开发中,Block Element Modifier (BEM) 方法论被广泛采用,它提供了一种清晰的命名规则,有助于提高代码的可维护性和可复用性。BEM 的核心理念是将界面拆分为独立的、可重用的组件,每个组件由三个部分...
2. **BEM(Block Element Modifier)命名法**:这是一种常见的CSS命名策略,用于区分组件(Block)、组件内的元素(Element)以及状态或修饰符(Modifier)。例如,一个按钮组件可以命名为`btn`,其颜色修饰符可以是...
8. CSS样式命名规则:提倡使用BEM(Block Element Modifier)命名方法,如`.block__element--modifier`。 四、HTML规范 1. 文档规范:应使用HTML5标准,添加<!DOCTYPE html>声明,并使用`<head>`和`<body>`元素...
BEM的命名方式提供了一种清晰的层级结构和视觉清晰度,这有助于减少样式之间的冲突,并提高CSS代码的可读性和可维护性。 在使用这些架构方法时,还要考虑响应式设计的实践,即如何让网页在不同尺寸的设备上都能良好...