SASS学习 - mixin、继承和占位符

来源:转载

1. mixin混合宏

声明方式:

@mixin

调用方式:

@include

使用:

它可以传参数, 所以当代码块中涉及到变量时, 可以使用混合宏来创建相同的代码块.

缺点:

1.它不会自动合并相同的样式代码, 如果在样式文件中调用同一个混合宏, 会产生多个对应的样式代码, 造成代码的冗余. 所以代码块中不涉及到变量时, 不要使用混合宏.
2. 插值不能调用混合宏,如@include bgColor-#{$color} 这样写就是错误的.

代码:

//声明:@mixin val($var){ margin-top: $var; }.div {//调用 @include val(5px);}

2. 继承

声明方式:

.class (如 : .titleBar)

调用方式:

@extend

使用:

如果代码块不需要传递任何变量参数, 而且有一个基类已在文件中存在, 那么就可以使用Sass的继承来调用已存在的基类.
使用继承后, 编译出来的CSS会将使用继承的代码块合并到一起, 生成组合选择器. @extend中可以使用插值, 如@extend .selected-#{$flag}

缺点:

如果基类并不存在于html结构中时, 不管调用与不调用, 编译出来的CSS中都会产生基类对应的样式代码.

代码:

//SASS.btn { border: 1px solid #ccc; padding: 6px 10px; font-size: 14px;}.btn-primary { background-color: #f36; color: #fff; @extend .btn;}.btn-second { background-color: orange; color: #fff; @extend .btn;}

注: 这里的SASS代码用的是SCSS的标准编写, 下同.

//编译出来的CSS代码.btn, .btn-primary, .btn-second { border: 1px solid #ccc; padding: 6px 10px; font-size: 14px;}.btn-primary { background-color: #f36; color: #fff;}.btn-second { background-clor: orange; color: #fff;}

3. %placeholder占位符

声明方式:

%placeholder (如: %colorBlue)

调用方式:

@extend

使用:

和继承基本相似, 但是不会在代码中生成占位符的选择器, 占位符是独立定义, 如果不调用已声明的占位符, 就不会在CSS中产生任何样式代码. @extend中可以使用插值, 如@extend .selected-#{$flag}

代码:

//SASS%mt10 { margin-top: 10px;}%pt5{ padding-top: 5px;}.btn { @extend %mt10; @extend %pt5;}.block { @extend %mt10; span { @extend %pt5; }}
//编译出来的CSS代码.btn, .block { margin-top: 10px;}.btn, .block span { padding-top: 5px;}

分享给朋友:
您可能感兴趣的文章:
随机阅读: