Sass 中的 @extend 是用来扩展选择器或占位符。比如:
.error {
  border: 1px #f00;
  background-color: #fdd;
}
.error.intrusion {
  background-image: url("/image/hacked.png");
}
.seriousError {
  @extend .error;
  border-width: 3px;
}
被编译为:
.error, .seriousError {
  border: 1px #f00;
  background-color: #fdd; }
.error.intrusion, .seriousError.intrusion {
  background-image: url("/image/hacked.png"); }
.seriousError {
  border-width: 3px; }
详细的可以回顾前面介绍的继承样式部分。
扩展选择器:
@extend 不止扩展类选择器,还可以扩展任何选择器,比如 .special.cool, a:hover, 或 a.user[href^=“http://“],例如:
.hoverlink {
  @extend a:hover;
}
a:hover {
  text-decoration: underline;
}
编译出来:
a:hover, .hoverlink {
  text-decoration: underline; }
再来看一个复杂点的:
.hoverlink {
  @extend a:hover;
}
.comment a.user:hover {
  font-weight: bold;
}
编译出来的CSS
.comment a.user:hover, .comment .user.hoverlink {
  font-weight: bold; }
多个扩展
所设某个样式要继承多个地方的样式,那么可以使用 @extend 来继承多个选择器或占位符的样式,如:
.error {
  border: 1px #f00;
  background-color: #fdd;
}
.attention {
  font-size: 3em;
  background-color: #ff0;
}
.seriousError {
  @extend .error;
  @extend .attention;
  border-width: 3px;
}
编译出来的CSS
.error, .seriousError {
  border: 1px #f00;
  background-color: #fdd; }
.attention, .seriousError {
  font-size: 3em;
  background-color: #ff0; }
.seriousError {
  border-width: 3px; }
扩展单一选择器
前面我们知道 %placeholder 不使用@extend显示调用是不会生成任何样式代码。那么在选择器中使用占位符一样。比如下面的代码:
#context a%extreme {
  color: blue;
  font-weight: bold;
  font-size: 2em;
}
这段代码在不调用之前不产生任何代码,只有能过@extend调用之后才生成代码:
.notice {
  @extend %extreme;
}
编译出来的CSS
#context a.notice {
  color: blue;
  font-weight: bold;
  font-size: 2em;
}
              小伙伴们,现在让我们来练习一下@extend的用法吧!
请验证,完成请求
由于请求次数过多,请先验证,完成再次请求
打开微信扫码自动绑定
绑定后可得到
使用 Ctrl+D 可将课程添加到书签
举报