css 命名规范 BEM
在项目的开发过程当中, 我们往往因为日益复杂的css代码而感到力不从心. 如何合理的组织css代码成为了我们前端开发过程中必须考虑到的环节.
在读element源代码的时候, 了解到了BEM的命名风格.
使用 BEM 命名规范,理论上讲,每行 css 代码都只有一个选择器。
BEM代表 “块(block),元素(element),修饰符(modifier)”,我们常用这三个实体开发组件。
在选择器中,由以下三种符号来表示扩展的关系:
- 中划线 :仅作为连字符使用,表示某个块或者某个子元素的多单词之间的连接记号。
-- 双中划线线:用来描述一个块或者块的子元素的一种状态
__ 双下划线:双下划线用来连接块和块的子元素type-block__element--modifier
块(block)
一个块是设计或布局的一部分,它有具体且唯一地意义 ,要么是语义上的要么是视觉上的。
在大多数情况下,任何独立的页面元素(或复杂或简单)都可以被视作一个块。它的HTML容器会有一个唯一的CSS类名,也就是这个块的名字。
针对块的CSS类名会加一些前缀( ui-),这些前缀在CSS中有类似 命名空间 的作用。
一个块的正式(实际上是半正式的)定义有下面三个基本原则:
CSS中只能使用类名(不能是ID)。
每一个块名应该有一个命名空间(前缀)
每一条CSS规则必须属于一个块。
元素(element)
块中的子元素是块的子元素,并且子元素的子元素在 bem 里也被认为是块的直接子元素。一个块中元素的类名必须用父级块的名称作为前缀。
修饰符(modifier)
一个“修饰符”可以理解为一个块的特定状态,标识着它持有一个特定的属性。
用一个例子来解释最好不过了。一个表示按钮的块默认有三个大小:小,中,大。为了避免创建三个不同的块,最好是在块上加修饰符。这个修饰符应该有个名字(比如:size )和值( small,normal 或者 big )。
element 的源码当中充分实现了这种命名方式, 在使用scss的情况下
/* BEM-------------------------- */
@mixin b($block) {$B: $namespace+'-'+$block !global;.#{$B} {@content;}
}@mixin e($element) {$E: $element !global;$selector: &;$currentSelector: "";@each $unit in $element {$currentSelector: #{$currentSelector + "." + $B + $element-separator + $unit + ","};}@if hitAllSpecialNestRule($selector) {@at-root {#{$selector} {#{$currentSelector} {@content;}}}} @else {@at-root {#{$currentSelector} {@content;}}}
}@mixin m($modifier) {$selector: &;$currentSelector: "";@each $unit in $modifier {$currentSelector: #{$currentSelector + & + $modifier-separator + $unit + ","};}@at-root {#{$currentSelector} {@content;}}
}
css 命名规范 BEM相关推荐
- CSS命名规范-BEM
BEM 什么是BEM BEM命名的好处 BEM命名的问题 什么是BEM BEM是一种命名规范.模块名+元素名+修饰器名 比如Instagram团队使用的驼峰式 .blockName-elementNa ...
- CSS命名规范 BEM
在我们开发的时候,写了一个模块,在现有页面中测试都没问题.一段时间后,新需求新页面,该页面一打开,突然发现页面中样式都变样了,一查问题,原来是其他组件的样式和该页面的样式相互覆盖了.我相信大家在工作的 ...
- CSS样式的格式命名,CSS命名规范:BEM
什么是 BEM 命名规范 Bem 是块(block).元素(element).修饰符(modifier)的简写 块: 组件 元素:块的子节点 修饰符:改变某个块的外观的标志,不同状态或不同版本 Yan ...
- 我认为最节省时间的CSS命名规范
CSS命名规范一 js中对变量的命名最好使用camel case驼峰式命名法,但CSS中更适用于red-box命名规范. CSS命名规范二 BEM命名规范 B=>block E=>elem ...
- css命名规范和书写规范
1.位置属性(position, top, right, z-index, display, float等) 2.大小(width, height, padding, margin) 3.文字系列(f ...
- css宋体代码_前端开发必备的CSS命名规范与常用CSS代码集合
编辑 | web前端开发 来源 | web前端开发 我们在用html+css进行网页的排版布局时,经常会遇到CSS命名,如果是在团队多人协作开发时,团队里都会有自己的命名规范与要求. 但如果是自己在个 ...
- 关于css命名规范一些小技巧或经验
前言 通过前边自己进行了一周自适应招聘官方网站PC端和移动端的开发,自己在开发过程中也遇到了一些css命名规范的令人头疼的事情,自己回过头来看自身的代码认真思考并总结了一些不成熟的经验,下文将向大家介 ...
- css之命名规范 BEM
这篇文章主要是记录下我从讨厌,习惯,喜欢,热爱BEM方式的心路历程 刚入职水滴, 第一个需求是做5个落地页,开了需求,过了设计图,so easy 一切都在计划中,提测,准备上线 最后阶段coderev ...
- html语言书写注意事项,CSS命名规范参考及书写注意事项
CSS书写顺序 *{ /*显示属性*/ display position float clear cursor - /*盒模型*/ margin padding width height /*排版*/ ...
最新文章
- minio下载及安装:win linux平台
- 会话技术(session/cookie)
- Redis Sentinel集群部署
- Android近场通信---NFC基础(二)(转)
- python使用正则表达式删除字符串中的数字
- jar导出与制作成exe在没jdk电脑下运行(图文教程+工具)
- 通话话单分析 java,奇兵手机话单分析系统功能简介
- sx1276, sx1278, Si4463, Si4432, Si4438, sx1212小无线模块对比数据
- oppo r11s鸿蒙固件,OPPO R11s官方固件rom刷机包_OPPO R11s系统升级更新包下载
- PCB电路板生产完成分析
- Graph Meta Network for Multi-Behavior Recommendation精读
- ES6-rest参数
- Android新浪微博分页加载,Android仿新浪微博分页管理界面(3)
- Succinimidyl Carboxymethyl Ester-PEG-Mal,Mal-poly(ethylene glycol)-SCM
- php如何ping域名的ip,使用PHP ping域名或IP
- 银行核心系统的清算与结算
- eclipes Java代码连接Mysql数据库
- 标准化考场时钟系统方案
- IntelliJ IDEA 注册码(phpstorm等IDE)
- Windows 标准控件 ComboBox 的改造