sass 混合指令 (Mixin Directives)详解
混合指令(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)详解的更多相关文章
- AngularJS指令进阶 – ngModelController详解
AngularJS指令进阶 – ngModelController详解 在自定义Angular指令时,其中有一个叫做require的字段,这个字段的作用是用于指令之间的相互交流.举个简单的例子,假如我 ...
- Vue自定义指令使用方法详解 和 使用场景
Vue自定义指令的使用,具体内容如下 1.自定义指令的语法 Vue自定义指令语法如下: Vue.directive(id, definition) 传入的两个参数,id是指指令ID,definitio ...
- openssl 摘要和签名验证指令dgst使用详解
1.信息摘要和数字签名概述 信息摘要:对数据进行处理,得到一段固定长度的结果,其特点输入: 1.输出长度固定.即输出长度和输入长度无关. 2.不可逆.即由输出数据理论上不能推导出输入数据 4.对输入数 ...
- AngularJS指令进阶 -- ngModelController详解
大家都知道AngularJS中的指令是其尤为复杂的一个部分,但是这也是其比较好玩的地方.这篇文章我们就来说一说如何在我们自定义的指令中,利用ngModel的controller来做双向数据绑定,本文对 ...
- AT指令(中文详解版)(一)
一 . 一 般 命 令1.AT+CGMI 给出模块厂商的标识.2.AT+CGMM 获得模块标识.这个命令用来得到支持的频带(GSM 900,DCS 1800 或PCS 1900) ...
- SASS详解之混合(mixins)
SASS详解之混合(mixins)可以出现在SASS的任何地方.有很多类名具有相同或者相似的样式,就可以用SASS中的混合(mixins)来进行编写,然后针对不同类名的不同样式逐一编写. 定义一个混合 ...
- Sass 混合宏、继承、占位符 详解
混合宏-声明混合宏如果你的整个网站中有几处小样式类似,比如颜色,字体等,在 Sass 可以使用变量来统一处理,那么这种选择还是不错的.但当你的样式变得越来越复杂,需要重复使用大段的样式时,使用变量就无 ...
- Sass map详解
作为一个CSS预处理器,Sass正受到越来越多的青睐,诸如Github.Codepen.CSS-Tricks.SitePoint.w3cplus等网站采用Sass组织.管理CSS文件,Sass正在逐渐 ...
- 高效开发之SASS篇 灵异留白事件——图片下方无故留白 你会用::before、::after吗 link 与 @import之对比 学习前端前必知的——HTTP协议详解 深入了解——CSS3新增属性 菜鸟进阶——grunt $(#form :input)与$(#form input)的区别
高效开发之SASS篇 作为通往前端大神之路的普通的一只学鸟,最近接触了一样稍微高逼格一点的神器,特与大家分享~ 他是谁? 作为前端开发人员,你肯定对css很熟悉,但是你知道css可以自定义吗?大家 ...
- angularjs 指令(directive)详解(1)
原文地址 什么是directive?我们先来看一下官方的解释: At a high level, directives are markers on a DOM element (such as an ...
随机推荐
- Java ArrayList 与 LinkedList 的灵活选择
Java ArrayList Java ArrayList 类是一个可变大小的数组,位于 java.util 包中. 创建 ArrayList import java.util.ArrayList; ...
- RabbitMQ 04 直连模式-Java操作
使用Java原生的方式使用RabbitMQ现在已经较少,但这是基础,还是有必要了解的. 引入依赖. <dependency> <groupId>com.rabbitmq< ...
- 直播回顾 | 点击率提升400%,Ta是怎么做到的?
Discovery第18期直播已于3月30日圆满结束,本期直播邀请天眼查做客直播间,从天眼查与华为Push用户增长服务合作历程切入,聚焦用户增长,分享提升应用活跃度和渠道ROI的经验与见解.一起来回顾 ...
- 动态库 DLL 封装五:dll中弹出一个dialog窗口
操作步骤: 1.在dll项目中,点击 资源,新建一个 dialog 2.cpp文件 CDialog dlg(IDD_STA); // 显示窗口 dlg.Create(IDD_STA, 0); dlg. ...
- 如何增强Java Excel API 的导入和导出性能
前言 GrapeCity Documents for Excel (以下简称GcExcel)是葡萄城公司的一款服务端表格组件,它提供了一组全面的 API 以编程方式生成 Excel (XLSX) 电子 ...
- Python Flask获取iOS的UDID
测试iOS app时候,我们可以安装以下4种类型的包 : AdHoc -- 一般为正式环境验证AppStore -- 上传AppStore,只有 ...
- Vue3.0里为什么要用 Proxy API 替代 defineProperty API
一.Object.defineProperty 定义:Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象 为什么能实现响应式 ...
- MQTT实战系列(一)——MQTT简介
随着移动互联网以及物联网应用的蓬勃发展,阿里云推出微消息队列 MQTT,从而实现端(浏览器.Android.iOS.智能设备.直播互动.车联网)与云的双向通信,通过消息实现万物互联. MQTT (Me ...
- Redis基础(一)——字符串、hash类型的基本使用
day09--Redis Redis介绍和安装 # Redis:软件,存储数据的,速度非常快,Redis是一个key-value存储系统(没有表的概念),cs架构的软件 服务端 客户端(python作 ...
- 力扣181(MySQL)- 超过经理收入的员工(简单)
题目: 表:Employee 编写一个SQL查询来查找收入比经理高的员工. 以 任意顺序 返回结果表. 查询结果格式如下所示. 示例 1: 解题思路: 一.[子查询] 先通过子查询找到当前员工的经理 ...