Scss语法

CSS书写代码规模较大的Web应用时,容易造成选择器、层叠的复杂度过高,因此推荐通过SASS预处理器进行CSS的开发,SASS提供的变量、嵌套、混合、继承等特性,让CSS的书写更加有趣与程式化。

变量 $

$color0:#00a;           // 全局
.link{
    $color1:#a00;       // 局部
    $color2:#0a0 !global; // 转换成全局
    span{ color:$color; }
}

嵌套

ul{  
    li {}  
}

父选择器

.link{
    &:hover{} // == .link:hover
    body  & {} // == body .link
    &-bar{}   // == .link-bar
}

属性嵌套

1 .link{
2     font:{  
3         family:Airl; // == font-family
4         size:12px; // == font-size
5     }
6 }

占位符 %

%link{}
@extend %link;

// 这段代码不会被输出到最终生成的CSS文件,因为它没有被任何代码所继承。
%other-styles {
  display: flex;
  flex-wrap: wrap;
}

// 下面代码会正常输出到生成的CSS文件,因为它被其接下来的代码所继承。
%message-common {
  border: 1px solid #ccc;
  padding: 10px;
  color: #333;
}

.message {
  @extend %message-common;
}

.success {
  @extend %message-common;
  border-color: green;
}

.error {
  @extend %message-common;
  border-color: red;
}

.warning {
  @extend %message-common;
  border-color: yellow;
}

运算

      • / % < <= > >= == !=
        / 将被视为除法运算符号:
        如果值,或值的一部分,是变量或者函数的返回值
        如果值被圆括号包裹
        如果值是算数表达式的一部分
p {
    font: 10px/8px;             // 10px/8px;
    $ 1000px;
     $width/2;            // 500px;
     round(1.5)/2;       // 算除法
    height: (500px/2);          // 250px;
    margin-left: 5px + 8px/2px; // 9px;
     calc(100% - .5rem)
}

  

需要用变量,又不让 / 做除法,使用#{}包裹

font:  #{ $b } / #{ $a }

$theme='default'
.page[data-theme= #{$theme}]{
    background-color:#f1f1f1;
}

插值语句 #{}

$name : foo
p.#{ $name } {}   // p.foo{}

import

@import "foo.css";
@import "foo" screen;
@import "http://foo.com/bar";
@import url(foo);
#main {
  @import "example";
}

继承 extend

.err{}
.err2{
    @extend .err;
}

混合 @mixin

@mixin  style1 { 
    color:#a00; 
}
@mixin  style2($c:#00a, $size) { 
    color:$c; 
}
.page1{ 
    @include style1; 
}
.page2{ 
    @include style2(#00a,12px);
}

函数 @function

@function width($n){
    @return $n*2;
}
.box{
    width(5);
}
原文地址:https://www.cnblogs.com/xfcao/p/11820450.html