Sass

来源:互联网 发布:互联网之子 知乎 编辑:程序博客网 时间:2024/06/17 14:10
1.变量:
Sass:$定义
Less:@定义
2.注释
Sass:单行删除,多行保留(注释有汉字时,需添加UTF-8编码)
Less:单行删除,多行保留
3.属性嵌套(必须在复合属性中使用如:margin border...)
Sass:要加:,如
border:{
top:{
width:2px;
}
}
Less:无
4.混合:复用一组样式
Sass:
定义语法:  @mixin 混合名称
使用混合:@include 混合名称
>混合中使用的变量
  与定义混合时出现的位置有关(就近原则)
  与使用混合时出现的位置无关
>混合传参:如果没有定义默认参数,使用时必须要传参,定义了,使用时不加为默认参数(此时参数集合即括号可有可无)
//定义混合
    @mixin border($color:#ffff00){
        background: $color;
    }
    //调用混合
    .a{
      @include border;  
    }
    .b{
      @include border(#ff0000);  
    }
    .c{
      @include border(#dd2233);  
    }
    .d{
      @include border(#ff8855);  
    }
Less:
定义语法:  直接混合名称
使用混合:  直接混合名称
5.获取剩余参数
Sass: 语法  $arg...(该语法不仅可以获取全部参数,还可以获取参数的一部分)
//---获取剩余参数1----
@mixin box-shadow($arg1,$arg2){
     box-shadow:$arg1,$arg2;
     -webkit-box-shadow:$arg1,$arg2;
     -moz-box-shadow:$arg1,$arg2;
     -o-box-shadow:$arg1,$arg2;
}
.box3{
    width: 500px;
    height: 200px;
    margin: 100px auto;
//  box-shadow: 1px 2px 5px red,10px 20px 8px green;
    @include box-shadow(1px 2px 5px red,10px 20px 8px yellowgreen);
}

//---获取剩余参数2----
@mixin box-shadow($arg...){
     box-shadow:$arg;
     -webkit-box-shadow:$arg;
     -moz-box-shadow:$arg;
     -o-box-shadow:$arg;
}
.box3{
    width: 500px;
    height: 200px;
    margin: 100px auto;
//  box-shadow: 1px 2px 5px red,10px 20px 8px green;
    @include box-shadow(1px 2px 5px red,10px 20px 8px yellowgreen,30px 40px 10px blue);
}

//---获取剩余参数3----
@mixin box-shadow($h,$arg...){
    height: $h;
     box-shadow:$arg;
     -webkit-box-shadow:$arg;
     -moz-box-shadow:$arg;
     -o-box-shadow:$arg;
}
.box3{
    width: 500px;
    height: 200px;
    margin: 100px auto;
//  box-shadow: 1px 2px 5px red,10px 20px 8px green;
    @include box-shadow(500px,1px 2px 5px red,10px 20px 8px yellowgreen,30px 40px 10px blue);
}
Less:无(只有@arguments:获取所有属性)
6.继承:将被继承的选择器,复制到继承选择器中,复用样式
>在Sass中,混合相当于less中的方法
>在Sass中,继承相当于less中的混合
>在Sass中,支持的继承类型比较多:id继承,类继承,元素名称继承,自定义元素名称继承
>在Sass中,继承的定义,本质上就是在定义选择器
>使用继承:@extend 选择器名称
>声明前置:变量不能前置,混合不能前置,继承可以前置(可调用文件中任何位置定义的选择器来继承其样式)
>继承的样式会保留在页面中,有时候,我们不希望继承样式被保留,
使用继承占位符:%(只适用于元素名称选择器和自定义元素名称选择器)
//类继承1
    .red{color:red;}
    //id继承
    #width{width:300px;}
    //元素名称继承
    div{height: 50px;}
    //自定义元素名继承
    mystyle{background: green;}

    //使用继承
    h1{
        @extend .red;
        @extend #width;
        @extend div;
        @extend mystyle;
    }
编译后css结果:
.red, h1 {
  color: red;
}

#width, h1 {
  width: 300px;
}

div, h1 {
  height: 50px;
}

mystyle, h1 {
  background: green;
}
//使用继承占位符
    //类继承
    .red{color:red;}
    //id继承
    #width{width:300px;}
    //元素名称继承
    %div{height: 50px;}
    //自定义元素名继承
    %mystyle{background: green;}

    //使用继承
    h1{
        @extend .red;
        @extend #width;
        @extend %div;
        @extend %mystyle;
    }
//使用继承占位符结果:
.red, h1 {
  color: red;
}
#width, h1 {
  width: 300px;
}
h1 {
  height: 50px;
}
h1 {
  background: green;
}
>嵌套继承会导致很复杂的结果(三个结果),所以在工作中,尽量不要嵌套继承

7.作用域
一对{}创建了一个模块
变量:
定义在全局,任何模块都能使用
定义在模块内,只能在当前模块使用
就近原则
不能声明前置(先定义再使用)
混合:
定义在全局,任何模块都能使用
定义在模块内,只能在当前模块使用
就近原则
不能声明前置(先定义再使用)
继承:
定义在全局,任何模块都能使用
定义在模块内,任何模块都能直接使用,但是如果嵌套,会有意想不到的结果
只要匹配都能继承
能够声明前置(任何地方(一个Scss)定义的选择器都能使用)
不能声明前置(先定义再使用)
8.数学运算:
LESS:
Sass:
>加减法同Less一样,都会对数据单位做转换
div{
height:1pt+1px;
height:1in-1px;
}
结果:
div {
  height: 1.75pt;
  height: 0.98958in;
}
>乘法:只能出现一个单位或者都没有单位(如:10*10px)
>除法:在Sass中触发除法必须满足三个条件之一
(单位不能出现在除数上,或者被除数有单位除数才可以加单位)
(单位不统一时,会做单位转化,尽量将单位统一)
  1.必须出现()------width:(100px/10)
  2.必须出现变量或者方法的返回值
  1)$width=200px;
    div{width:$width/2}
  2)round(20.1px)/4
  3.是表达式的一部分
  100px/5-10px
原创粉丝点击