@extend指令可以让一个CSS类继承另一个CSS类。

当多个元素之间共享一组属性值,同时又有各自额外属性值时,这种方法很有用。

举例说明

以警告框为例,警告框有4种类型:

  • info
  • success
  • error
  • warning

所有类型的警告框样式相同,但颜色不同。每个类型的警告框使用@extend指令继承一组公共属性,然后各自设置颜色值。

示例:

.alert {
padding: 10px;
background-color: silver;
color: white;
} .info {
@extend .alert;
background-color: dodgerblue;
} .success {
@extend .alert;
background-color: green;
} .error {
@extend .alert;
background-color: red;
} .warning {
@extend .alert;
background-color: orange;
}

经过编译会输出以下css内容:

.alert, .info, .success, .error, .warning {
padding: 10px;
background-color: silver;
color: white; } .info {
background-color: dodgerblue; } .success {
background-color: green; } .error {
background-color: red; } .warning {
background-color: orange; }

多个@extend

可以在选择器中使用多个@extend指令。

示例:

.alert {
padding: 10px;
background-color: silver;
color: white;
} .important {
font-weight: bold;
font-size: larger;
} .important-error {
@extend .alert;
@extend .important;
background-color: red;
}

经过编译会输出以下css内容:

.alert, .important-error {
padding: 10px;
background-color: silver;
color: white; } .important, .important-error {
font-weight: bold;
font-size: larger; } .important-error {
background-color: red; }

连锁 @extend

选择器可以连锁继承。

示例:

.alert {
padding: 10px;
background-color: silver;
color: white;
} .important {
@extend .alert;
font-weight: bold;
font-size: larger;
} .important-error {
@extend .important;
background-color: red;
}

经过编译会输出以下css内容:

.alert, .important, .important-error {
padding: 10px;
background-color: silver;
color: white; } .important, .important-error {
font-weight: bold;
font-size: larger; } .important-error {
background-color: red; }

占位符选择器

你可能发现被继承的css父类并没有被实际应用,也就是说html代码中没有使用该类,它的唯一目的就是扩展其他选择器。

对于该类,可能不希望被编译输出到最终的css文件中,它只会增加CSS文件的大小,永远不会被使用。

这就是占位符选择器的作用。

占位符选择器类似于类选择器,但是,它们不是以句点(.)开头,而是以百分号(%)开头。

当在Sass文件中使用占位符选择器时,它可以用于扩展其他选择器,但不会被编译成最终的CSS。

占位符选择器用法示例:

%alert {
padding: 10px;
background-color: silver;
color: white;
} .info {
@extend %alert;
background-color: dodgerblue;
} .success {
@extend %alert;
background-color: green;
} .error {
@extend %alert;
background-color: red;
} .warning {
@extend %alert;
background-color: orange;
}

经过编译会输出以下css内容:

.info, .success, .error, .warning {
padding: 10px;
background-color: silver;
color: white; } .info {
background-color: dodgerblue; } .success {
background-color: green; } .error {
background-color: red; } .warning {
background-color: orange; }

注意,编译后的CSS中不包含%alert选择器。

SASS - @extend(继承)指令的更多相关文章

  1. [Sass]扩展/继承

    [Sass]扩展/继承 继承对于了解 CSS 的同学来说一点都不陌生,先来看一张图: 图中代码显示".col-sub .block li,.col-extra .block li" ...

  2. 夺命雷公狗—angularjs—24—extend继承对象

    我们的angularjs中也是给我们留下了方法来做继承的,那么他就是传授中的extend... 不过要如下所示,第二个参数是继承到第一个对象里面的... <!DOCTYPE html> & ...

  3. sass基础—继承及占位符

    /*继承:@extend ,继承多个类时使用逗号隔开*/.alert{ color: #f00;}.info{ width: 100px;} .text-danger{ background-colo ...

  4. 【JavaScript】 使用extend继承对象的prototype方法

    之前有学习过通过prototype模式来构造类,并通过prototype来添加方法.好处大概有以下几点: 1.类方法可以都放在prototype中,可以提高性能效率. 2.可以用prototype来实 ...

  5. Django extend(继承)模板标签

    在 views.py 上修改 ... def ordered(req): return render(req, "ordered.html") def shopping_car(r ...

  6. SASS详解之沿袭(extend)

    SASS详解之继承(extend) 每一个类名都有可能有另一个类名的所有样式和它自己的特定样式的.当一个div的身上有两个类名,一个是“one”,另一个是“two”的时候.如下 HTML代码 < ...

  7. css预编译语言 sass scss(变量$var, css嵌套规则,@import规则,@extend,@mixin)

    什么是sass Sass 是对 CSS 的扩展,让 CSS 语言更强大.优雅. 它允许你使用变量.嵌套规则. mixins.导入等众多功能, 并且完全兼容 CSS 语法. Sass 有助于保持大型样式 ...

  8. sass中 混合宏 VS 继承 VS 占位符 各自的使用时机和特点

    初学者都常常纠结于这个问题“什么时候用混合宏,什么时候用继承,什么时候使用占位符?”其实他们各有各的优点与缺点,先来看看他们使用效果: a) Sass 中的混合宏使用 举例代码见 2-24 行 编译出 ...

  9. css编译工具Sass中混合宏,继承,占位符分别在什么时候使用

    //SCSS中混合宏使用 @mixin mt($var){ margin-top: $var; } .block { @include mt(5px); span { display:block; @ ...

随机推荐

  1. 吴裕雄--天生自然JAVAIO操作学习笔记:RandomAccessFile

    import java.io.File ; import java.io.RandomAccessFile ; public class RandomAccessFileDemo01{ // 所有的异 ...

  2. 吴裕雄--天生自然Hadoop学习笔记:Hadoop简介

    Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储.Hadoop实现了一个分布式文件系统(H ...

  3. 微信7.0以后更新后H5页面定位不准确

    在有定位的页面,微信更新完7.0以后定位也不提醒说是否同意定位 然后定位都跑到几百公里以外的地方了,然后怎么百度都不知道是啥问题,后面问了前端说微信更了7.0以后好像HTTP的就不支持了,然后我就去百 ...

  4. delphi环境变量

    @SET BDS=C:\Program Files (x86)\Embarcadero\RAD Studio\7.0 @SET BDSCOMMONDIR=C:\Users\Public\Documen ...

  5. 从ofo到乐视,变卖资产好过冬靠谱吗?

    今年年底,有很多人"被迫"离职.他们为了应对生活压力和找工作的不确定性,尝试在二手平台上卖出自己的奢侈品或心爱之物,以期度过潜在的难关.而对于很多企业来说,这个冬天也非常冷.依靠常 ...

  6. Day5 - D - Conscription POJ - 3723

    Windy has a country, and he wants to build an army to protect his country. He has picked up N girls ...

  7. Microsoft Windows 实用程序 Sysinternals Utilities Index

    最新页面时间:2017年5月16日 Sysinternals被MS收购--windows internals共近70多个工具集 Sysinternals套件 整套Sysinternals Utilit ...

  8. JuJu团队12月4号工作汇报

    JuJu团队12月4号工作汇报 JuJu   Scrum 团队成员 今日工作 剩余任务 困难 于达 调试 无 无 婷婷 和陈灿一起提升acc 无 无 恩升 纠正chunk evaluator 无 无 ...

  9. vCenter组件和服务

    1).随VMware Platform Services Controller一起安装的服务 a. vCenter Single Sign-On身份验证服务 b. vSphere 许可证服务 c. V ...

  10. netty权威指南学习笔记一——NIO入门(4)AIO

    NIO2.0引入了新的异步通道的概念,并提供了异步文件通道和异步套接字通道的实现.异步通道提供以下两种方式获取操作结果. 1.通过java.util.concurrent.Future 类来表示异步操 ...