一、嵌套
1.选择器嵌套
<header> <nav> <a href=“##”>Home</a> <a href=“##”>About</a> <a href=“##”>Blog</a> </nav> <header>
nav { a { color: red; header & { color:green; } } }
2.属性嵌套
.box { border: { 12px; style: bold; } }
等于
.box { border-width: 12px; border-style: bold; }
二、混合宏
1.声明混合宏
@mixin border-radius($radius){ //它可以传递多个参数,也可以不传递任何参数
-webkit-border-radius: $radius;
border-radius: $radius;
}
2.调用混合宏
button {
@include border-radius(3px);
}
三、扩展/继承
.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; }
四、占位符
%pt5{ padding-top: 5px; } //这段代码要是没有被 @extend 调用,他并没有产生任何代码块,只是静静的躺在你的某个 SCSS 文件中。只有通过 @extend 调用才会产生代码: .btn { @extend %pt5; }
五:插值
$properties: (margin, padding); @mixin set-value($side, $value) { @each $prop in $properties { #{$prop}-#{$side}: $value; } } .login-box { @include set-value(top, 14px); } //结果 .login-box { margin-top: 14px; padding-top: 14px; }
//构建一个选择器
@mixin generate-sizes($class, $small, $medium, $big) { .#{$class}-small { font-size: $small; } .#{$class}-medium { font-size: $medium; } .#{$class}-big { font-size: $big; } } @include generate-sizes("header-text", 12px, 20px, 40px); //结果 .header-text-small { font-size: 12px; } .header-text-medium { font-size: 20px; } .header-text-big { font-size: 40px; }