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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值