sass的混合器、继承以及运算符、函数

本文介绍了Sass中的混合器、继承和运算符的使用,详细阐述了混合器的概念、定义及参数传递,继承的原理和用法,以及包括加减乘除、比较和逻辑运算在内的运算符。此外,还提到了Sass中的函数功能,如颜色、字符串、数值、列表、Map和选择器函数的应用。
摘要由CSDN通过智能技术生成

一、混合器

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($shadows...) {
  -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官方文档进行学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值