​ 混合指令(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. 用户触达难?流失率高?HMS Core预测服务和智能运营,助你提前掌握营销时机,解决此难题。

    用户流失了,触达难? 活动做了那么多,转化仍然很低? 运营也需要提前思考,预测用户动向,提前精准触达,才能事半功倍.结合HMS Core分析服务的预测服务和智能运营,洞察营销时机,实时落地营销策略,提 ...

  2. 前端vue监听activeMQ消息后端推送消息--实战

    需求 : 工厂员工完成某道工序后,需要将消息推送给 检查人员 也可以使用 WebSockets ,前端更容易实现 思路: 使用activeMQ推送消息,前端实时接收消息 实现 : 1.基于spring ...

  3. Redis Stack功能介绍及redis-om-dotnet使用示例

    为了简化开发人员对较新的 Redis 模块及其提供的功能的体验,同时简化支持其功能的文档和客户端.以帮助开发人员从开始使用 Redis 的那一刻起,就能充分提高工作效率.Redis Stack诞生了. ...

  4. Asp .Net Core 系列:集成 Refit 和 RestEase 声明式 HTTP 客户端库

    背景 .NET 中 有没有类似 Java 中 Feign 这样的框架?经过查找和实验,发现 在 .NET 平台上,虽然没有直接的 Feign 框架的端口,但是有一些类似的框架和库,它们提供了类似的功能 ...

  5. 基于ArkUI开发框架,图片马赛克处理的实现

     原文:https://mp.weixin.qq.com/s/60HDKcBFV7GTjZpzeHtjeg,点击链接查看更多技术内容.     关于马赛克   马赛克是一种使用较为广泛的图片处理方式, ...

  6. 国密 SM2 的非对称加密解密过程

    国密 SM2 的非对称加密解密过程 椭圆曲线 椭圆曲线是由一组方程描述的点的集合: y2 = x3 + ax + b 其中 a, b 满足 (4a3 + 27b2 ≠ 0) SM2 定义了一个 sm2 ...

  7. Vue3开源组件库

    最近收到的很多问题都是关于Vue3组件库的问题 今天就给大家推荐几个基于Vue3重构的开源组件库 目前状态都处于Beta阶段,建议大家抱着学习的心态入场,勿急于用到生产环境 Ant-design-vu ...

  8. Apache RocketMQ + Hudi 快速构建 Lakehouse

    ​简介:基于RocketMQ和Hudi零代码构建Lakehouse架构,以及RocketMQ Connector & RocketMQ Stream助力ETL数据分析,为大家提供快速构建Lak ...

  9. 日志审计携手DDoS防护助力云上安全

    ​简介: 本文主要介绍日志审计结合DDoS防护保障云上业务安全的新实践. 日志审计携手DDoS防护助力云上安全 1 背景介绍 设想一下,此时你正在高速公路上开车去上班,路上还有其他汽车,总体而言,大家 ...

  10. [Go] golang 时间格式化 12小时制 与 24小时制

    timestamp := int64(1591271169) # 12小时制 time.Unix(timestamp, 0).Format("2006-01-02 03:04:05" ...