[关闭]
@JRuiCoder 2015-08-31T09:28:10.000000Z 字数 1423 阅读 1936

Sass学习之路——混合宏

Sass


1、声明混合宏

a、不带参数混合宏

  1. @mixin border-radius{
  2. -webkit-border-radius: 5px;
  3. border-radius: 5px;
  4. }

b、带参数混合宏

  1. @mixin border-radius($radius:5px){
  2. -webkit-border-radius:$radiusl;
  3. border-radius:$radius;
  4. }

2、调用混合宏

  1. input{
  2. @include border-radius;
  3. }

也可以调用一个不带值的参数

  1. @mixin border-radius($radius){
  2. -webkit-border-radius: $radius;
  3. border-radius: $radius;
  4. }
  5. .box {
  6. @include border-radius(3px);
  7. }

在 Sass 的混合宏中,还可以给混合宏的参数传一个默认值

  1. @mixin border-radius($radius:3px){
  2. -webkit-border-radius: $radius;
  3. border-radius: $radius;
  4. }
  5. .btn {
  6. @include border-radius;
  7. }

有一个特别的参数“…”。当混合宏传的参数过多之时,可以使用参数来替代.

  1. @mixin box-shadow($shadows...){
  2. @if length($shadows) >= 1 {
  3. -webkit-box-shadow: $shadows;
  4. box-shadow: $shadows;
  5. } @else {
  6. $shadows: 0 0 2px rgba(#000,.25);
  7. -webkit-box-shadow: $shadow;
  8. box-shadow: $shadow;
  9. }
  10. }
  11. //实际调用
  12. .box {
  13. @include box-shadow(1 2 1px rgba(#000,.5),0 0 2px rgba(#000,.2));
  14. }

缺点:不能智能地将相同样式代码块合并在一起。

3、继承

通过关键词 “@extend”来继承已存在的类样式块,从而实现代码的继承.

  1. .slider{
  2. width:23px;
  3. height:67px;
  4. border-radius:1px solid red;
  5. }
  6. .innerSlider{
  7. color:#fff;
  8. @extend .slider
  9. }

4、占位符 %placeholder

如果没有被@extend调用的话不会产生任何代码

  1. %color1{
  2. background-color:#FFF;
  3. %color2{
  4. color:red;
  5. }
  6. .slider{
  7. @extend %color1;
  8. @extend %color2;
  9. }

编译出来的代码会将相同的代码合并在一起

5、混合宏 继承 占位符的区别和使用

1、混合宏
会产生很多冗余的代码,主要优点是可以传参数,如果我们的代码块中涉及到变量,可以使用混合宏来创建相同的代码块。
2、继承
如果你的代码块不需要专任何变量参数,而且有一个基类已在文件中存在,那么建议使用 Sass 的继承。
3、占位符

6、插值#{}

插值详解

7、注释

1、类似 CSS 的注释方式,使用 ”/* ”开头,结属使用 ”*/ ”
2、类似 JavaScript 的注释方式,使用“//”
两者区别,前者会在编译出来的 CSS 显示,后者在编译出来的 CSS 中不会显示

8、除法

通常使用括号,但是/符号被当作除法运算符时有以下几种情况:

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注