@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. P1068 万绿丛中一点红

    P1068 万绿丛中一点红 转跳点:

  2. springboot自动配置

    1.spring-boot-autoconfigure-2.1.7.BUILD-SNAPSHOT-sources.jar 2.如何查看项目中启动和未启动的自动配置: application.prope ...

  3. postProcessBeanFactory方法源码跟踪

    看这篇文章之前可以先了解之前的跟踪流程,https://www.jianshu.com/p/4934233f0ead 代码过宽,可以shift + 鼠标滚轮 左右滑动查看 AbstractApplic ...

  4. ubuntu 新建用户后 不能使用TAB键、上下键,命令行不显示当前路径的解决

    因默认ubuntu创建的普通帐号,默认shell为/bin/sh,而这不支持tab等键的,所以将「指定用户」帐号的shell改为/bin/bash就可以了. 1.查看当前的shell:# echo $ ...

  5. tools.sublime.ConvertToUTF8

    sublime乱码,GBK乱码,安装插件ConvertToUTF8 下载ConvertToUTF8,解压,文件夹命名为ConvertToUTF8 sublime->Preferences-> ...

  6. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  7. 041、Java中逻辑运算之普通或运算“|”

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  8. 0105 springMVC开发基础

    背景 已经明确了MVC的思想和SpringMVC的基本流程,下面就都具体的mvc开发细节知识了. @RequestMapping springMVC核心流程中,启动阶段会把注解@RequeestMap ...

  9. 初学者的困惑:OOP与一般编程的区别

    *在写<程序猿的思维修炼>随笔中,我们大概猜想到了,OOP的思想更趋于模块化,更独立,因此称为一个个对象,本次随笔将对OOP和一般编程的区别有更详细的解释 面向对象编程的含义: 面向对象编 ...

  10. HDU 2586 LCA-Tarjan

    还是LCA-tarjan算法,跟POJ 1330做法基本类似,只是这个题目要求输出两个点的最短距离,其实利用LCA的性质,就是 两个点分别到最近公共祖先的距离之和 一开始本来想用并查集把路径长度给找出 ...