SASS详解之混合(mixins)
SASS详解之混合(mixins)可以出现在SASS的任何地方。有很多类名具有相同或者相似的样式,就可以用SASS中的混合(mixins)来进行编写,然后针对不同类名的不同样式逐一编写。
定义一个混合(mixins)
一个混合(mixins)中有专属于自己的名字,有专属于自己的属性和样式。如下
SASS代码
- @mixin firstMixin {
- width:10px;
- height:20px;
- }
上面仅仅是一个很简单的混合(mixins),仅仅包括了一些属性和属性值。混合(mixins)还可以有选择器,也可以后父级引用。如下
SASS代码
- @mixin firstMixin {
- .m_clear {
- zoom:1;
- &:after {
- content:"";
- display:block;
- clear:both;
- }
- }
- }
使用一个混合(include)
现在大家已经会定义一个混合(mixins),一定想知道怎么调用它吧。那么就看个小例子吧。
SASS代码
- @mixin firstMixin {
- .m_clear {
- zoom:1;
- &:after {
- content:"";
- display:block;
- clear:both;
- }
- }
- }
- div {
- @include firstMixin;
- }
编译后的CSS代码
- div .m_clear {
- zoom: 1;
- }
- div .m_clear:after {
- content: "";
- display: block;
- clear: both;
- }
上面的小例子是针对混合(mixins)中带有选择器的。不难看出,这个编译后的CSS中div中的类名clear具有混合(mixin)中的样式。而下面的例子,就是混合(mixin)中只有样式没有选择器的小例子。
SASS代码
- @mixin twoMixin {
- width:200px;
- height:200px;
- }
- div {
- @include twoMixin;
- }
编译后的CSS代码
- div {
- width: 200px;
- height: 200px;
- }
混合(mixin)中定义的样式,哪个选择器引用了,就为其增加了混合(mixin)中的样式。若混合(mixin)中有选择器,那么就在其引用的选择器子集中添加相应的属性。再看个混合中引用混合的例子。
SASS代码
- @mixin twoMixin {
- width:200px;
- height:200px;
- }
- @mixin threeMixin {
- <pre name="code" class="plain"> @include twoMixin;
- </pre> border:1px solid red;}div {@include threeMixin;}
编译后的CSS代码
- div {
- width: 200px;
- height: 200px;
- border: 1px solid red;
- }
混合(mixin)中的参数
混合(mixin)中也可以设置参数,这可以让我们实现相似样式的共同编写。只需要在混合的名字后面添加变量名即可实现。如下
SASS代码
- @mixin fourMixin ($width) {
- width : $width;
- }
- div {
- @include fourMixin(20px);
- }
编译后的CSS代码
- div {
- width: 20px;
- }
很简单的用法,很实用的功能。那么这么实用的功能,有没有默认参数值呢?想知道的话就看看下面的小例子吧。
SASS代码
- @mixin fourMixin ($width : 3000px) {
- width : $width;
- }
- div {
- @include fourMixin(20px);
- }
- span {
- @include fourMixin();
- }
编译后的CSS代码
- div {
- width: 20px;
- }
- span {
- width: 3000px;
- }
混合(mixin)中的关键词参数
所为关键词参数,就是在调用混合(mixin)的时候,写上参数的名称,编译出来的是一样的,这样写的好处就是方便开发者阅读。例子如下。
SASS代码
- @mixin fourMixin ($width : 3000px) {
- width : $width;
- }
- div {
- @include fourMixin($width :20px);
- }
编译后的CSS代码
- div {
- width: 20px;
- }
混合(mixin)中的可变关键词
有时候在编写混合(mixin)的时候,遇到的参数是不详的,不知道有多少,不知道应该设多少才好。具体使用的例子如下。
SASS代码
- @mixin boxShadow($shadows...) {
- -moz-box-shadow: $shadows;
- -webkit-box-shadow: $shadows;
- box-shadow: $shadows;
- }
- div {
- @include boxShadow(0px 4px 5px #666, 2px 6px 10px #999);
- }
编译后的CSS代码
- div {
- -moz-box-shadow: 0px 4px 5px #666666, 2px 6px 10px #999999;
- -webkit-box-shadow: 0px 4px 5px #666666, 2px 6px 10px #999999;
- box-shadow: 0px 4px 5px #666666, 2px 6px 10px #999999;
- }
这么人性化的可变参数不仅可以用在定义混合(mixin)中,也可以运用在使用过程中。实例如下。
SASS代码
- $myArguments : red, 14px, 400px, 1000px;
- @mixin fiveMixin ($color , $size, $width, $height) {
- color:$color;
- font-size:$size;
- width:$width;
- height:$height;
- }
- div {
- @include fiveMixin($myArguments...);
- }
编译后的CSS代码
- div {
- color: red;
- font-size: 14px;
- width: 400px;
- height: 1000px;
- }
可以使用可变参数进行内外包装,然后最后在统一引入一个混合(mixin),例子如下。
SASS代码
- $myArguments : red, 14px, 400px, 1000px;
- @mixin fiveMixin ($color , $size, $width, $height) {
- color:$color;
- font-size:$size;
- width:$width;
- height:$height;
- }
- @mixin sixMixin ($myArguments) {
- background:red;
- @include fiveMixin($myArguments...);
- }
- div {
- @include sixMixin($myArguments)
- }
编译后的CSS代码
- div {
- background: red;
- color: red;
- font-size: 14px;
- width: 400px;
- height: 1000px;
- }
混合(mixin)中的内容块(content)
既然混合(mixin)可以传入很多东西,那么可不可以传入一定的内容呢?答案是可以的。有了内容块(content),我们几乎无所不能了,我们可以在已经定义好的混合(mixin)中传入很多我们想要的样式,或者想要引入的选择器包含的选择器中的样式都可以传进去。如下
SASS代码
- @mixin apply-to-ie6-only {
- div {
- width:300px;
- @content;
- }
- }
- @include apply-to-ie6-only {
- .meng {
- color:red;
- }
- }
- @include apply-to-ie6-only {
- height:500px;
- }
编译后的CSS代码
- div {
- width: 300px;
- }
- div .meng {
- color: red;
- }
- div {
- width: 300px;
- height: 500px;
- }
变量和内容块(content)
混合(mixin)可以通过内容块传进去全局变量,也可以引入局部变量。如下
SASS代码
- @mixin contentMixin {
- div {
- height:300px;
- @content;
- }
- }
- $color :red;
- @include contentMixin {
- color:$color;
- }
- #sidebar {
- $sidebar-width: 300px;
- width: $sidebar-width;
- @include contentMixin {
- width: $sidebar-width / 3;
- }
- }
编译后的CSS代码
- div {
- height: 300px;
- color: red;
- }
- #sidebar {
- width: 300px;
- }
- #sidebar div {
- height: 300px;
- width: 100px;
- }
SASS详解之混合(mixins)就为大家介绍到这里了,更多有关SASS的小介绍敬请关注梦龙小站有关SASS的更新。
SASS详解之混合(mixins)的更多相关文章
- SASS详解之沿袭(extend)
SASS详解之继承(extend) 每一个类名都有可能有另一个类名的所有样式和它自己的特定样式的.当一个div的身上有两个类名,一个是“one”,另一个是“two”的时候.如下 HTML代码 < ...
- SASS详解之编译输出的样式
SASS是一种CSS预处理语言,没有装环境的话是不能被解析的.但是有了koala编译工具之后,解析SASS不需要环境也毫无压力了.SASS的输出格式有四种:嵌套.扩大.紧凑和压缩.下面结合小例子为大家 ...
- Sass map详解
作为一个CSS预处理器,Sass正受到越来越多的青睐,诸如Github.Codepen.CSS-Tricks.SitePoint.w3cplus等网站采用Sass组织.管理CSS文件,Sass正在逐渐 ...
- Flex 布局新旧混合写法详解(兼容微信)
flex 是个非常好用的属性,如果说有什么可以完全代替 float 和 position ,那么肯定是非它莫属了(虽然现在还有很多不支持 flex 的浏览器).然而国内很多浏览器对 flex 的支持都 ...
- Flex布局新旧混合写法详解(兼容微信)
原文链接:https://www.usblog.cc/blog/post/justzhl/Flex布局新旧混合写法详解(兼容微信) flex是个非常好用的属性,如果说有什么可以完全代替 float 和 ...
- javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- 【Qt】Qt Quick 之 QML 与 C++ 混合编程详解
Qt Quick 之 QML 与 C++ 混合编程详解 - CSDN博客 专栏:Qt Quick简明教程 - CSDN博客 .
- Java 运算符-=,+=混合计算详解
+=与-=运算符混合计算解析: int x = 3; x += x -= x -= x += x -= x; 详解:算数运算按运算符优先级运算,从右至左计算. 1. x=x-x; 实际为 3 - 3 ...
- VC 与Matlab混合编程之引擎操作详解
Visual C++ 是当前主流的应用程序开发环境之一,开发环境强大,开发的程序执行速度快.但在科学计算方面函数库显得不够丰富.读取.显示数据图形不方便. Matlab 是一款将数值分析.矩阵计算.信 ...
随机推荐
- HDU 6206 青岛网络赛1001 高精度 简单几何
给出的数据1e12规模,常规判点是否在圆范围内肯定要用到半径,求得过程中无法避免溢出,因此用JAVA自带的浮点大数运算,和个ZZ一样比赛中eclipse出现问题,而且太久没写JAVA语法都不清楚变量忘 ...
- DLL初试
环境: VC++6.0 步骤: 1.建立一个WIN32 DYNAMIC-LINK LIBRARY工程,编写CPP文件,文件内容例如: #include "stdafx.h" #in ...
- Python学习笔记(三十一)正则表达式
---恢复内容开始--- 摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 ...
- c# WebService SOAP及Rest调用
SOAP及Rest的调用区别参照如下: REST似乎在一夜间兴起了,这可能引起一些争议,反对者可以说REST是WEB诞生之始甚而是HTTP出现之日就相伴而生的原则.但是毋庸置疑的事实是,在Google ...
- 移动Web界面样式-CSS3
CSS2.1发布至今已经有7年的历史,在这7年里,互联网的发展 已经发生了翻天覆地的变化.CSS2.1有时候难以满足快速提高性能.提升用户体验的Web应用的需求.CSS3标准的出现就是增强CSS2.1 ...
- 【BZOJ 1001】[BJOI2006]狼抓兔子(最大流)
题目链接 最大流裸题,没什么好说吧,恰好点数多,考验网络流的效率,正好练\(Dinic\). #include <cstdio> #include <queue> #inclu ...
- Kali设置代理
原文:Kali-linux设置ProxyChains ProxyChains是Linux和其他Unices下的代理工具.它可以使任何程序通过代理上网,允许TCP和DNS通过代理隧道,支持HTTP.SO ...
- js布尔值转化
JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值.转换规则是除了下面六个值被转为false,其他值都视为true. undefined null false 0 Na ...
- 向量与矩阵的范数及其在matlab中的用法(norm)
一.常数向量范数 \(L_0\) 范数 \(\Vert x \Vert _0\overset{def}=\)向量中非零元素的个数 其在matlab中的用法: sum( x(:) ~= 0 ) \(L_ ...
- [转载]Android中Bitmap和Drawable
一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...