Sass学习之路(8)——拓展/继承/占位符

1.拓展/继承

Sass中和CSS一样,也具有继承的用户,也是继承类中的样式代码块。Sass中是通过关键词"@extend"来继承已存在的类样式块,从而实现代码的继承。

举个栗子:

//SCSS
.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;
}
这里 .btn-primary和.btn-second都继承了.btn中的代码,编译之后如下:

//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;
}
从代码中可以看出,继承之后的代码编译出来的CSS中,出色地讲样式相同的选择器合并在了一起,这算是继承与混合宏比较最大的优点。

2.占位符 %placeholder

占位符也是一个非常强大的功能,和继承也有着密切的关系。比如说,我们有多个类都有相同的代码共有,需要继承同一个基类。但是基类本身并不存在或者基类自身并不需要这些样式,那么像上边继承的写法有产生了代码的冗余,最终会编译出多余的代码。

这个时候,占位符的作用就体现出来了,用占位符声明的代码,在不被@extend调用的情况下,是不会产生任何代码的,举个栗子:

%mt5 {
  margin-top: 5px;
}
%pt5{
  padding-top: 5px;
}

.btn {
  @extend %mt5;
  @extend %pt5;
}

.block {
  @extend %mt5;

  span {
    @extend %pt5;
  }
}
上边 我们用占位符声明了两个用来被继承的类%mt5和%pt5,在再让我们来看看编译后的代码吧:

//CSS
.btn, .block {
  margin-top: 5px;
}

.btn, .block span {
  padding-top: 5px;
}
我们会发现,编译后的代码和上边的继承一样,出色的完成了代码合并,且基类并没有被编译出来,只作用与调用了它的类中。


3.混合宏、继承、占位符的比较:

混合宏:可以传参数,但是代码冗余,相同样式不会合并选择器。所以适合在我们多次使用相同样式,但是值不同的情况下使用。

继承:不能传参数,代码会自动合并,不会冗余。适合于不需要传参的情况下复用代码,并且基类代码具有作用的情况。

占位符:同上,但是区别是在基类没有作用的情况下使用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值