BEM
bem 规则: > 表示下一个层级 ^ 表示上一个层级 + 表示紧邻的兄弟元素 . 后面的 - 相当于 less 嵌套规则里的 & 表示前一个类的所有前缀 { } 用来写元素包含的文本
$表示自动顺序补齐,@加数字:表示从哪个开始。 使用$时,如果已经有 1,要从 2 开始,就加上@2 这里就是$@2 () 会把里面的所有内容视为一个整体,就不用关心里面的元素到底有多少层级,就不用^来提多次层级。
1
| header.header>.-item{$@2}*3|bem
|
LESS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| #layout(@name) { & when(@name=header) { height: 60px; #bg-color(black); }
& when(@name=banner) { height: 560px; background-color: #6a6593; }
& when(@name=recommend) { height: 560px; #bg-color(white); }
& when(@name=courses) { height: 560px; #bg-color(pale); overflow: hidden; }
& when(@name=footer) { height: 560px;
#bg-color(black); }
position: relative; //第一种给全部模块加上 }
#layout(@name) { position:relative;//第二种给全部模块加上 }
.header { #layout(header); }
.banner { #layout(banner); }
.recommend { #layout(recommend); }
.courses{ #layout(courses); }
.footer{ #layout(footer); }
|
1 2 3 4 5 6 7 8
| // 功能样式定义 #center-h(@width) { left: 50%; margin-left: @width*-.5; } #bg-image(@src){ background-image: url("../images/@{src}"); }
|
1 2 3 4
| .cover-background() { background-size: contain; background+_:no-repeat center; }
|
background+是拼接的作用,之前使用 background 设置的样式与现在的图片地址进行拼接,而不是覆盖的作用。默认值用逗号隔开,但是 background 属性值中间使用空格隔开的,所以使用_,代表空格。
如:
1 2 3 4 5 6 7 8 9 10
| .header { #layout(header); .logo { width: 128px; height: 36px; background+_: url(../images/logo.png); .cover-background(); .fl(); } }
|
1 2 3 4 5 6 7 8 9 10
| &__submit { display: block; position: absolute; right: 25px; top: 4px;
background-position: 0 0 ; #square(22px); #bg-image("icon-1-_w22.png"); }
|
插入图标
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| &__phone:before, &__message:before, &__mail:before{ content: ""; display: block; position: absolute; left: 19px; top: 19px; #square(22px); #bg-image("icon-1-sprite_w22.png"); } &__phone:before{ background-position: 0 -22px ; } &__message:before{ background-position: 0 -44px ; } &__mail:before{ background-position: 0 -66px ; }
|
人民符号
1 2 3 4 5 6 7 8 9
| i{ font-style: normal; padding: 0 3px; vertical-align: super; } ···
clearfix
|
.clearfix() {
&:after {
content: “”;
display: block;
font-size: 0;
line-height: 0;
clear: both;
zoom: 1;
}
}