​ 混合指令(Mixin)用于定义可重复使用的样式,避免了使用无语意的 class,比如 .float-left。混合指令可以包含所有的 CSS 规则,绝大部分 Sass 规则,甚至通过参数功能引入变量,输出多样化的样式。

​ mixin是可以重用的一组CSS声明。mixin有助于减少重复代码,只需声明一次,就可在文件中引用。

​ 可以看出,mixin类似变量,不同的是变量存储值,mixin存储一组css声明。mixin可以传入参数。

定义与使用混合指令 @mixin

@mixin mixin-name([param1,[param2...]]) {
/* css 声明 */
}

例1:标准形式

// 定义页面一个区块基本的样式
@mixin block {
    width: 96%;
    margin-left: 2%;
    border-radius: 8px;
    border:1px #f6f6f6 solid;
}
// 使用混入
.container{
    .block{
        @include block;
}
}

生成结果

.container .block {
width: 96%;
margin-left: 2%;
border-radius: 8px;
border: 1px #f6f6f6 solid;
}

例2:嵌入选择器

// 定义警告字体样式,下划线(_)与横线(-)是一样的
@mixin warning-text {
    .warn-text{
        font-size: 12px;
        color: rgb(255, 253, 123);
        line-height: 180%;
    }
}
// 使用混入
.container{
    @include warning-text;
}

编译结果

.container .warn-text {
font-size: 12px;
color: #fffd7b;
line-height: 180%;
}

例3:使用变量

// 定义flex布局元素纵轴的排列方式
@mixin flex-align($aitem){
    -webkit-box-align:$aitem;
    -webkit-align-items:$aitem;
    -ms-flex-align:$aitem;
    align-items:$aitem;
}
// 只有一个参数,直接传递参数
.container{
    @include flex-align(center);
}
// 给指定参数指定值
.footer{
    @include flex-align($aitem:center);
}

例4:使用变量(多参数)

// 定义块元素内边距
@mixin block-padding($top,$right,$bottom,$left){
    padding-top: $top;
    padding-right: $right;
    padding-bottom: $bottom;
    padding-left: $left;
}

使用一

// 按照参数顺序赋值
.container{
    @include block-padding(10px,20px,30px,40px);
}

使用二

// 可指定参数赋值
.container{
    @include block-padding($left:20px, $top:10px, $bottom: 10px, $right:30px);
}

只想设置两个边:

// 可指定参数赋值
.container{
    @include block-padding($left:10px, $top:10px, $bottom:0, $right:0);
}

问题:必须指定4个值?????

例5:指定默认值

// 定义块元素内边距,参数指定默认值
@mixin block-padding($top:0,$right:0,$bottom:0,$left:0){
    padding-top: $top;
    padding-right: $right;
    padding-bottom: $bottom;
    padding-left: $left;
}

灵活使用

// 可指定参数赋值
.container{
    // 不带参数
    //@include block-padding;     //按顺序指定参数值
    //@include block-padding(10px,20px);     //给指定参数指定值
    @include block-padding($left:10px,$top:20px)
}

例6:可变参数

参数不固定的情况

**
    *定义线性渐变
    *@param $direction  方向
    *@param $gradients  颜色过度的值列表
 */
@mixin linear-gradient($direction, $gradients...) {
    background-color: nth($gradients,1);
    background-image: linear-gradient($direction, $gradients);
}

使用

.table-data{
    @include linear-gradient(to right,#F00, orange, yellow);
}

这就是“老姚”给大家整理的scss中混入@mixin指令的一些使用,希望对你有帮助。

sass 混合指令 (Mixin Directives)详解的更多相关文章

  1. AngularJS指令进阶 – ngModelController详解

    AngularJS指令进阶 – ngModelController详解 在自定义Angular指令时,其中有一个叫做require的字段,这个字段的作用是用于指令之间的相互交流.举个简单的例子,假如我 ...

  2. Vue自定义指令使用方法详解 和 使用场景

    Vue自定义指令的使用,具体内容如下 1.自定义指令的语法 Vue自定义指令语法如下: Vue.directive(id, definition) 传入的两个参数,id是指指令ID,definitio ...

  3. openssl 摘要和签名验证指令dgst使用详解

    1.信息摘要和数字签名概述 信息摘要:对数据进行处理,得到一段固定长度的结果,其特点输入: 1.输出长度固定.即输出长度和输入长度无关. 2.不可逆.即由输出数据理论上不能推导出输入数据 4.对输入数 ...

  4. AngularJS指令进阶 -- ngModelController详解

    大家都知道AngularJS中的指令是其尤为复杂的一个部分,但是这也是其比较好玩的地方.这篇文章我们就来说一说如何在我们自定义的指令中,利用ngModel的controller来做双向数据绑定,本文对 ...

  5. AT指令(中文详解版)(一)

    一 . 一 般 命 令1.AT+CGMI      给出模块厂商的标识.2.AT+CGMM    获得模块标识.这个命令用来得到支持的频带(GSM 900,DCS 1800    或PCS 1900) ...

  6. SASS详解之混合(mixins)

    SASS详解之混合(mixins)可以出现在SASS的任何地方.有很多类名具有相同或者相似的样式,就可以用SASS中的混合(mixins)来进行编写,然后针对不同类名的不同样式逐一编写. 定义一个混合 ...

  7. Sass 混合宏、继承、占位符 详解

    混合宏-声明混合宏如果你的整个网站中有几处小样式类似,比如颜色,字体等,在 Sass 可以使用变量来统一处理,那么这种选择还是不错的.但当你的样式变得越来越复杂,需要重复使用大段的样式时,使用变量就无 ...

  8. Sass map详解

    作为一个CSS预处理器,Sass正受到越来越多的青睐,诸如Github.Codepen.CSS-Tricks.SitePoint.w3cplus等网站采用Sass组织.管理CSS文件,Sass正在逐渐 ...

  9. 高效开发之SASS篇 灵异留白事件——图片下方无故留白 你会用::before、::after吗 link 与 @import之对比 学习前端前必知的——HTTP协议详解 深入了解——CSS3新增属性 菜鸟进阶——grunt $(#form :input)与$(#form input)的区别

    高效开发之SASS篇   作为通往前端大神之路的普通的一只学鸟,最近接触了一样稍微高逼格一点的神器,特与大家分享~ 他是谁? 作为前端开发人员,你肯定对css很熟悉,但是你知道css可以自定义吗?大家 ...

  10. angularjs 指令(directive)详解(1)

    原文地址 什么是directive?我们先来看一下官方的解释: At a high level, directives are markers on a DOM element (such as an ...

随机推荐

  1. Seaborn线性关系数据可视化

    regplot() 绘制两个变量的线性拟合图. sns.regplot( x, y, data=None, x_estimator=None, x_bins=None, x_ci='ci', scat ...

  2. 部署solr服务

    前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 一.Sorl单机部署 准备:solr5.5.tomcat8.5.jdk1.8 1.解压 solr-5.5.0.zip压缩包 2.复制./ ...

  3. css实现带背景颜色的小三角

    <div id="first"> <p>带背景颜色的小三角实现是比较简单的</p> <span id="top"> ...

  4. VMware下CentOS7.6安装openGauss

    VMware 下 CentOS7.6(7.9)安装 openGauss centos 安装 这里我使用的是 vmware workstation Pro 15 虽然官网了解了一下 openGauss ...

  5. UJCMS 9.1.0 发布,国内开源 java cms

    许可协议从GPL-2改为Apache-2.0,更宽松的协议,方便用户将系统集成到自身的应用中. 修复了已知bug,系统更加稳定. 升级日志(9.1.0) 修复前台全文搜索没有结果 web.xml se ...

  6. CRC报错查看

    前言 查看交换机接口是否有CRC报错,本案例以华三交换机为例. CRC是指循环冗余校验错 使用仪器测试链路.链路质量差或者线路光信号衰减过大会导致报文在传输过程中出错.如链路故障请更换网线或光纤. 与 ...

  7. h5py这个坑-PyCharm Process finished with exit code -1073741819 (0xC0000005)

    在用pytorch和tensorflow做语音合成时,碰到了个很无解的bug, PyCharm 报错 Process finished with exit code -1073741819 (0xC0 ...

  8. 力扣387(java)-字符串中的第一个唯一字符(简单)

    题目: 给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 .如果不存在,则返回 -1 . 示例 1: 输入: s = "leetcode"输出: 0示例 2: 输 ...

  9. 用了那么久的Lombok,你知道它的原理么?

    简介: 在写Java代码的时候,最烦写setter/getter方法,自从有了Lombok插件不用再写那些方法之后,感觉再也回不去了,那你们是否好奇过Lombok是怎么把setter/getter方法 ...

  10. 提升Java字符串编码解码性能的技巧

    ​简介:常见的字符串编码有LATIN1.UTF-8.UTF-16.GB18030,他们各有各的特点,且之间的转换比较复杂.本文将为大家介绍提升Java字符串编码解码性能的技巧. 作者 | 温绍锦 (高 ...