前端BEM命名方式的思考

前端BEM命名方式的思考,第1张

概述最初的思考 思考来源于要给切图网 qietu.com 改一次版,作为前端开发服务商,我觉得应该要有自己的一款前端css框架,并且这个框架不应该只是随便写写,最好能够用在官网上,拿官网做背书,于是在研究

最初的思考

思考来源于要给切图网 qIEtu.com 改一次版,作为前端开发服务商,我觉得应该要有自己的一款前端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 {}

广州包装设计公司http://www.maiqicn.com电脑刺绣绣花厂 ttp://www.szhdn.com

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

.qui-card{}.qui-card--colorful{}.qui-card__head{}.qui-card__body{}.qui-card__foot{}

那么问题就迎刃而解了。

 

总结

以上是内存溢出为你收集整理的前端BEM命名方式的思考全部内容,希望文章能够帮你解决前端BEM命名方式的思考所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1028005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存