scss使用笔记

sass为后缀的文件:写的时候不带大括号和分号;

例子:body

    font-size:12px

scss为后缀的文件:和css一样写的时候带大括号和分号;

导入

  sass的导入(@import)规则和css的有所不同,编译时会将@import的scss文件合并进来只生成一个css文件。但是如果你在sass文件中导入css文件如@import 'reset.css',那效果跟普通的css导入样式文件一样,导入的css文件不会合并到编译后的文件中,而是以@import方式存在。所有的sass导入文件都可以忽略后缀名.scss。一般来说基础的文件名方法以_开头,如_mixin.scss。这种文件在导入的时候可以不写下划线,可写成@import 'mixin'

注释

  /**/:多行注释

  //:单行注释,在转义成css的时候不会被转义出来

变量

  声明变量的依据

  1. 该值至少重复出现了两次;
  2. 该值至少可能会被更新一次;
  3. 该值所有的表现都与变量有关(非巧合)。

  $fontS:12px !default;(!default表示默认值,不是可以不写)

  覆盖默认变量要在默认变量之前声明

  $fontS:14px;

  $fontS:12px !default;

  全局变量:在选择器,函数,混合宏等外面定义的变量为全局变量

  $font:12px;//全局变量

  .em{

    $font:15px;//在局部内覆盖全局变量

    a{

      color:$color;

    }

  }

  全局变量的影子:当在局部范围声明一个已经存在于全局范围内的变量时,局部变量就会成为全局变量的影子。基本上,局部变量只会在局部范围内覆盖全局变量

  $font:12px;//全局变量

  .em{

    $font;//局部变量

    a{

      color:$color;

    }

  }

scss命令编译

  例子:将reset.scss编译放在css文件夹下的reset.css

  sass -- watch

  sass/reset.scss:css/reset.css

scss代码输出风格

  1.嵌套输出方式 nested;(--style nested)

  2.展开输出方式expanded; 语法(sass -- watch test.scss:test.css --style expaned)

  3.紧凑输出方式compact;(--style compact)

  4压缩输出方式compressed(--style compressed)

scss的调试: scss --watch --scss --sourcemap style.css

sass嵌套

  • 选择器嵌套

    例子:

      <header><nav><a></a></nav></header>

      nav{

        a{

          color:red;

          header & {

            color:green;

          }

        }

      }

  • 属性嵌套

    .box{

      font:{

        size:12px;

        weight:bold;

      } 

    }

  • 伪类嵌套

    .box{

      &:before {
        content:"伪元素嵌套";
      }
    }

 混合宏:声明混合宏的关键字(@mixin)

  不带参数的混合宏:

  @mixin borders{ //borders是宏的名字

    -webkit-border-radius:5px;

    border-radius:5px;

  }

  调用:

    button{

      @include borders

    }

  带参数混合宏:

  @mixin borders($radius:5px){

    -webkit-border-radius:$radius;

    border-radius:$radius;

  }

  复杂的混合宏:

  @mixin box-shadow($shadow...){ //多个参数用...来代替

    @if length($shadow)>=1{

      @include prefixer(box-shadow,$shadow);

    }@else{

      $shadow:0 0 4px rgba(0,0,0,.3);

      @include prefixer(box-shadow,$shadow)

    }

  }

 
原文地址:https://www.cnblogs.com/cxdxm/p/6670299.html