1.概念
在sass我们可以通过变量来复用小规模的样式(颜色、字体等),但如果我们想要复用一整段的样式代码,那变量就没办法了。还好sass定义了一个新特性 — 混合器 ,来专门实现多行代码的复用。如果你发现自己在不停地重复一段样式,那就应该把这段样式构造成混合器,尤其是这段样式本身就是一个逻辑单元,比如说是一组放在一起实现某个特定的页面样式。
混合器的样式也不一定是一成不变的,可以通过参数的形式没生成特定的样式。
但混合器也不能滥用,滥用混合器,可能会导致代码很少,但生成的样式表过大,导致页面加载缓慢。
2.定义混合器@mixin
在sass中使用@mixin定义一个混合器,其实就是给一段代码起了个名字,然后我们就可以重复利用这些这些代码。
// 混合器格式:@mixin 混合器名称 {代码} 无参
@mixin a_0 {text-decoration: none;font-size: 50px;font-family: '黑体';font-weight: bold;
}
3.引用混合器 @include
我们定义好混合器之后,我们就可以通过 @include
标识符来引用混合器。在哪个地方进行引用,混合器的代码就会插入到哪个地方。
.nav {color: aqua;@include a_0(); // 引用混合器
}
编译后的css代码
.nav {color: aqua;text-decoration: none;font-size: 50px;font-family: "黑体";font-weight: bold;
}
4.混合器传参
sass在定义混合器时,可以提前定义好形参,然后在引用时,传递参数,生成特定样式,跟JS的函数时分类似,实参会按照顺序一一传递给形参。
// 混合器格式:@mixin 混合器名称($参数名) {代码} 有参
@mixin a_1($bgcol, $col, $radius, $borwid, $borcol) {background-color: $bgcol;color: $col;border-radius: $radius;border: $borwid solid $borcol;text-decoration: none;font-size: 50px;font-family: '黑体';font-weight: bold;
}.a1 {@include a_1(pink, red, 10px, 5px, red);// 引用混合器 @include 混合器名称(参数)
}
如果我们不想按照顺序一一对应进行传参的话,我们可以通过$name: value给指定参数传值,这样我们就不用去管顺序了。
.a1 {@include a_1($bgcol:pink, $col:red, $radius10px, $borwid:5px, $borcol:red);// 引用混合器 @include 混合器名称(参数)
}
我们还可以给混合器的参数设置一个默认值:
@mixin a_2($bgcol, $col, $radius, $borwid, $borcol:$col) {//默认值 background-color: $bgcol;color: $col;border-radius: $radius;border: $borwid solid $borcol;text-decoration: none;font-size: 50px;font-family: '黑体';font-weight: bold;
}.a2 {@include a_2(green, yellow, 15px, 10px);
}
如果传入的参数数量不确定,我们在定义形参时可以通过 ...
的形式:
@mixin box-shadow($) {-moz-box-shadow: $shadows;-webkit-box-shadow: $shadows;box-shadow: $shadows;
}
.shadows {@include box-shadow(0px 4px 5px #666, 2px 6px 10px #999);
}
编译后的css样式:
shadowed {-moz-box-shadow: 0px 4px 5px #666, 2px 6px 10px #999;-webkit-box-shadow: 0px 4px 5px #666, 2px 6px 10px #999;box-shadow: 0px 4px 5px #666, 2px 6px 10px #999;
}
1.概念
在sass中为了进一步减少代码的重复书写,还提出了继承的概念,继承是基于选择器的,也就是说一个选择器可以继承为另一个选择器定义的所有样式。默认浏览器样式是不会被继承的,因为它们不属于样式表中的样式。
继承的原理并不是通过样式属性的复制来实现的,而是通过选择器的复制实现的,所以跟混合器相比,继承生成的css代码相对更少。
2.用法
// 继承
.btn {display: inline-block;width: 100px;height: 30px;border-radius: 10px;text-decoration: none;text-align: center;line-height: 30px;
}.btn1 {@extend .btn;color: white;background-color: antiquewhite;
}.btn2 {@extend .btn;color: red;background-color: rosybrown;
}.btn3 {@extend .btn;color: forestgreen;background-color: yellowgreen;
}.btn4 {@extend .btn;color: yellow;background-color: green;
}
编译后的css代码:
.btn, .btn4, .btn3, .btn2, .btn1 {display: inline-block;width: 100px;height: 30px;border-radius: 10px;text-decoration: none;text-align: center;line-height: 30px;
}.btn1 {color: white;background-color: antiquewhite;
}.btn2 {color: red;background-color: rosybrown;
}.btn3 {color: forestgreen;background-color: yellowgreen;
}.btn4 {color: yellow;background-color: green;
}
在sass中有加减乘除的数学运算符,有大于小于号的比较运算符,还有并且,或、非等逻辑运算符
1.加减乘除
p {// +// width: 10+20;// width: 10+20px;// width: 10+20%;// -// width: 20-10;// width: 20-10px;// width: 20-10%;// /// 只有两个数值或者两个单位的时候,/作为分隔符// width: 20/10;// 如果里面有变量或者整体是一个表达式的时候 /作为运算符$num: 1000;width: $num/20;width: 20-10/5;// #{}$num1: 102;// 当不想让变量之间进行运算的时候可以用插值语句包裹起来width: #{$num}/#{$num1};
}
2.比较运算符
p {$num1: 102;@if $num1>200 {background-color: red;}@else {background-color: aqua;}
}
编译后的css代码
p {width: 50;width: 18;width: 1000/102;background-color: aqua;
}
3.逻辑运算符
p {$num1: 102;$col: red;@if $num1<200 and $col==red {background-color: red;}@else {background-color: aqua;}
}
编译后的css代码:
p {width: 50;width: 18;width: 1000/102;background-color: red;
}
sass里面不仅可以使用上面那些,还可以使用函数。
Color(颜色函数)
Sass包含很多操作颜色的函数。
lighten() 与 darken()函数可用于调亮或调暗颜色
opacify()函数使颜色透明度减少
transparent()函数使颜色透明度增加
mix()函数可用来混合两种颜色。
String(字符串函数)
Sass有许多处理字符串的函数。
向字符串添加引号的quote()
获取字符串长度的str-length()
将内容插入字符串给定位置的str-insert()
Math(数值函数)
数值函数处理数值计算。
percentage()将无单元的数值转换为百分比
round()将数字四舍五入为最接近的整数
min()和max()获取几个数字中的最小值或最大值
random()返回一个随机数。
List函数
List函数操作List。
length()返回列表长度
nth()返回列表中的特定项
join()将两个列表连接在一起
append()在列表末尾添加一个值。
Map函数
Map函数操作Map。
map-get()根据键值获取map中的对应值
map-merge()来将两个map合并成一个新的map
map-values()映射中的所有值。
selector选择器函数
选择符相关函数可对CSS选择进行一些相应的操作。
selector-append()可以把一个选择符附加到另一个选择符
selector-unify()将两组选择器合成一个复合选择器。
这只是其中一部分函数,sass里面还有很多的函数,大家可以参考sass官方文档进行学习。
本文发布于:2024-02-01 05:55:06,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170673810634381.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |