@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. NO28 第四关考试题

    第4章 第4周课前测试考试题 4.1 定时任务规则的含义01 第1题 如果在某用户的crontab文件中有以下记录,该行中的命令多久执行一次(RHCE考试题)?(  ) 30 4 * * 3 mycm ...

  2. Django 利用第三方平台实现用户注册

    前言: 登陆和注册功能是一个功能比较完善的网站必备的功能,其中涉及的业务逻辑实用性较强,所以我将Django的注册功能进行了总结,希望可以帮助大家.我们这次使用的第三方短息平台是云通信,当然你可以用其 ...

  3. 基于 QEMU进行 arm 仿真开发 (以 vexpress-a9 为例)

    背景 基于 QEMU 的仿真可以节省 硬件成本. 参考:<qemu-system-arm仿真vexpress-a9踩坑记>.<在Ubuntu下使用QEMU搭建arm开发环境(一)搭建 ...

  4. H7-TOOL脱机烧录器功能开源发布

    H7-TOOL汇总帖:https://www.cnblogs.com/armfly/p/12283459.html 当前已经对STM32F030,STM32F103,STM32F429,STM32F7 ...

  5. Oracle自动备份bat

    很多时候我们需要自动备份数据库这边推荐bat+Windows计划任务实现 方案1 创建以下bat 然后添加到TaskSchedule(路径最好不要包含中文) @echo off @echo ===== ...

  6. SpringBoot配置介绍

    SpringBoot配置介绍 SpringBoot如何进行配置 在SpringBoot中默认使用Servlet3.0可以没有web.xml,没有任何的xml,我们想要做一些自定义配置,比u数据库相关信 ...

  7. JSON数组序列化C#方法

    /// <summary> /// dataTable转换成Json格式 JSON对应关系 三层数组 /// </summary> /// <param name=&qu ...

  8. LeetCode455 分发饼干(简单贪心—Java优先队列简单应用)

    题目: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j ,都有 ...

  9. Web基础之Spring AOP与事务

    Spring之AOP AOP 全程Aspect Oriented Programming,直译就是面向切面编程.和POP.OOP相似,它也是一种编程思想.OOP强调的是封装.继承.多态,也就是功能的模 ...

  10. 用JS改变embed标签的src属性

    思路: A.先隐藏embed标签 B.清除embed元素 C.为embed重新赋值,加入Html页面中 1.html代码 <object id="forfun" classi ...