如今的前端开发早已经不是多年前那个刀耕火种写css和html就能搞定的,那个时候的前端开发人员更偏向UI。现在确确实实是编程。
前端有今天的发展很大一部分离不开node, node对前端最大的贡献估计是在开发工具方面,各种脚手架等开发依赖上。
编写样式时更多的也是使用less、 sass、styl等,在开发效率上带来了巨大的提升。甚至可以使用scoped或者模块css避免不同组件模块样式影响,使得可以无脑的写样式。
无脑有时候也是有代价的---写着写着就会发现这层级嵌套简直是要了命,一个人开发还好,自己会注意尽量保持代码的简洁。总之嵌套太多对性能和维护来说都是噩梦,不然也不会有人去整BEM规范。
BEM其实很简单:
B :block (块)
E : Element (元素)
M : Modifier (修饰符)
例如一个弹窗组件 是个块,弹窗又有顶部的标题部分,中间的内容部分,底部的按钮部分。代码结构呈现出来:
<div class="bing-dialog">
<div class="bing-dialog__header"></div>
<div class="bing-dialog__body"></div>
<div class="bing-dialog__footer"></div>
</div>
如果用less来写这部分的样式怎么简介高效还直观尼,我的做法是这样的:
.bing-dialog{
position:fixed;
top:20px;
&__header{
height:36px;
}
&__body{
//一些样式
}
&__footer{
//一些样式
}
}
在经过less-loader编译之后的css是这样的
.bing-dialog{
position:fixed;
top:20px;
}
.bing-dialog__header{
height:36px;
}
.bing-dialog__body{
//一些样式
}
.bing-dialog__footer{
//一些样式
}
上面的示例中已经展示了块和元素。
修饰常常来装饰元素的外观例如同一个按钮有几种不同的尺寸,输入框的大小,弹窗的大小等。
.bing-dialog{
position:fixed;
top:20px;
&--max{
width:80%;
}
&--small{
width:30%;
}
&--tiny{
width:20%;
}
}
东西不多也不难,但是要用好BEM其实不容易。记得要为每一个小细节而努力。