Sass混合器和Sass运算

混合器格式

语法

@mixin 混合器名{代码块}

调用

@include 混合器名;

//混合器定义
@mixin fStyle{
    text-decoration:none;
    font-family:"宋体";
    font-size:20px;
}
//混合器引用
a{
    //固定用法
  @include fStyle;  
}
​
//编译为css后
a {
  text-decoration: none;
  font-family: "宋体";
  font-size: 20px;
}

函数混合器

语法

@mixin 混合器名(变量1,变量2){代码块} //形参

调用

@include fStyle(变量1,变量2) //实参

//混合器函数定义 使用方法类似于js函数中形参实参
@mixin fStyle($bcColor,$fSize){
    text-decoration:none;
    font-family:"宋体";
    background-color:$bcColor;
    font-size:$fSize;
}
//函数调用
a{
    @include fStyle(#ccc,20px)
}
//函数调用 指定变量赋值   可打乱顺序传值
a{
    @include fStyle($fSize:20px,$bcColor:#ccc)
}
​
//编译后
//第一次调用 按顺序传值
a {
  text-decoration: none;
  font-family: "宋体";
  background-color: #ccc;
  font-size: 20px;
}
//第二次调用 打乱顺序传值
a {
  text-decoration: none;
  font-family: "宋体";
  background-color: #ccc;
  font-size: 20px;
}

如果变量多时,参数顺序可能会有小差错,可以在调用的时候给指定变量赋值

默认值

@mixin 混合器名(变量1,变量2:默认值){代码块}

当调用时即使不写实参变量值他也有默认的值

//混合器函数定义 使用方法类似于js函数中形参实参
@mixin fStyle($bcColor,$fSize:20px){
    background-color:$bcColor;
    font-size:$fSize;
}
//函数调用
a{
    @include fStyle(#ccc)
}
​
//编译后
a {
  background-color: #ccc;
  font-size: 20px;
}

继承

如果定义一个类名专门用来存放样式,他这个类在html中没有任何意义,并没有class声明,所以这里用占位符会更好,但是如果在html中有用处也是可以去使用类名,继承元素最好不要是包含元素样式

占位符选择器%

@extend 类名 相当把继承的元素以群组选择器的方式在选择器前进行添加

%btn {
//.btn {
  width: 100px;
  border-radius: 10px;
}
%btn1 {
//.btn1 {
  height: 40px;
}
@mixin color($bgColor, $bColor: blue) {
    @extend %btn;
    @extend %btn1;
    //@extend .btn;
    //@extend .btn1;
    //@extend %btn, %btn1;
    //@extend .btn, .btn1;
    background-color: $bgColor;
    border: 2px solid $bColor;
}
.btn-default {
    @include color(#ccc, #aaa);
}
.btn-success {
    @include color(green, red);
}
.btn-danger {
    @include color(red);
}
​
//编译后
.btn-danger, .btn-success, .btn-default {
  width: 100px;
  border-radius: 10px;
}
​
.btn-danger, .btn-success, .btn-default {
  height: 40px;
}
​
.btn-default {
  background-color: #ccc;
  border: 2px solid #aaa;
}
​
.btn-success {
  background-color: green;
  border: 2px solid red;
}
​
.btn-danger {
  background-color: red;
  border: 2px solid blue;
}

sass运算

数学运算符:+ - * / %;

关系运算符:> < >= <=;

逻辑运算符:or and not 或与非

数据类型

数字型、字符型、布尔型、颜色型、空值、数组型、maps型

数学运算符

运算符 加+

width:1+2; == width:3;

width:10+20px == width:30px;

width:10+20% == width:30%;

content:"aa"+bb; "aabb"

content:bb + "aa"; bbaa

运算符 减-

width:20-10 == width:10;

width:20-10px == width:10px;

width:20-10% == width:10%;

先将单位统一再进行运算,两个单位不同不能进行运算

运算符 除/

border-radius:10px/20px //当两个由单位或两个数字或一个单位一个数字用 / 拼接时 / 代表分隔符不做运算

变量与数字变量与变量用 / 进行连接时 会进行除法运算

当用括号包起来式子并中间用 / 拼接时(单位需要在前100px/10) 会进行除法运算

式子中还带有其他运算符时 也会进行运算

//scss语句
p {
  /*做分割 不做运算*/
  width: 100/10;
  width: 100px/10;
  width: 100/10px;
  /*做运算*/
  $num: 100;
  /*  width: $num/10;*/
  width: $num/10;
  /*  width: 10 / $num;*/
  width: 10 / $num;
  /*  width: (100/10);*/
  width: (100/10);
  /*  width: (100px/20);*/
  width: (100px/20);
  /*  width: (100%/20);*/
  width: (100%/20);
  /*  width: 1 * 100/20;*/
  width: 1 * 100/20;
  /*   单位不同不做运算*/
  /*   width: (100%/10px);*/
}

//编译后
@charset "UTF-8";
p {
  /*做分割 不做运算*/
  width: 100/10;
  width: 100px/10;
  width: 100/10px;
  /*做运算*/
  /*  width: $num/10;*/
  width: 10;
  /*  width: 10 / $num;*/
  width: 0.1;
  /*  width: (100/10);*/
  width: 10;
  /*  width: (100px/20);*/
  width: 5px;
  /*  width: (100%/20);*/
  width: 5%;
  /*  width: 1 * 100/20;*/
  width: 5;
  /*   单位不同不做运算*/
  /*   width: (100%/10px);*/
}

插值语句

border-radius:#{变量1}/#{变量2} 两个变量不进行除法运算时 放入插值运算里

也可以当类名属性来使用

$name:foo;
$attr:border;
p.#{$name}{
    #{attr}-radius:20px;
    #{attr}-color:blue;
    #{attr}-width:3px;
    #{attr}-style:solid ;
}

颜色运算做了解

p{
    //两两计算 01+04 02+05 03+06
    color:#010203 + #040506;
    //当两个rgba进行运算时 透明度必须一致
}

判断运算符

$num: 199;
$c: red;
p {
  //   与运算
  @if $num>200 and $c == red {
    background-color: blue;
  } @else {
    background-color: red;
  }
  //   或运算
  @if $num>200 or $c == red {
    background-color: blue;
  } @else {
    background-color: red;
  }
  //   非运算
  //   @if not($num<199) {
  @if not($num>199) {
    background-color: blue;
  } @else {
    background-color: red;
  }
}
​
//编译为css后
p {
  //与运算结果
  background-color: red;
  //或运算结果
  background-color: blue;
  //非运算结果
  background-color: blue;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值