美文网首页
scss学习笔记

scss学习笔记

作者: 示十 | 来源:发表于2018-07-30 10:30 被阅读0次

    嵌套

    1.父级嵌套

    div{
      display: inline-block;
      a{
        color: black;  
        &:hover{
          color: white;
          font-size: 20px;
        }
      }
    }
    

    2.属性嵌套

    div{
      font{
        weight: bold;
        size: 16px;
        family: "微软雅黑";
      }
    }
    
    div{
      border: 1px solid #000;{
        left: 0;
        right: 0;
      }
    }
    

    混合mixin

    类似于js中的函数

    @mixin 名字(参数1, 参数2) {
      ...
    }
    
    @mixin alert {
        color: #eee;
        background-color: #fcf8e3;
        a{
          color: blue;
        }
    }
    alert-waring {
      @include alert;
    }
    

    在mixin中使用参数

    darken:给指定颜色加深指定数值的颜色值

    @mixin alert($text-color, $background) {
        color: $text-color;
        background-color: $background;
        a{
          color: darken($text-color, 10%);
        }
    }
    alert-waring {
      @include alert(#8a6d3b, #fcf8e3);
    }
    // 指定变量名称后就不用考虑顺序了
    alert-info {
      @include alert($background: #fcf8e3, $text-color: #8a6d3b);
    }
    

    继承 extend

    用于继承另一个选择器中设定的属性,同时继承其子属性值

    .alert{
      padding: 12px;
    }
    .alert a{
      font-size: 20px;
    }
    .alert-info {
      @extend .alert;
      background-color: blue;
    }
    
    

    Partials

    scss中本身包含了一个导入其他scss文件的功能叫做import
    但是每次import的时候都会发出一个http请求,消耗服务器资源,导致页面变慢
    scss扩这里import的功能:可以把整个的scss文件分隔成小的css块(scss文件),通过import导入进来,但不会编译这些css块,这些小的css块叫做Partials
    Partials使用_下划线开头标识

    _base.scss

    background: {
      color: blue;
      font-size: 16px;
    }
    

    style.scss

    在import时候,不用带下划线,会自动查找

    @import 'base'
    .alert{
      padding: 12px;
    }
    .alert a{
      font-size: 20px;
    }
    

    注释

    1、单行注释

    不会出现在编译之后的文件

    // 这是单行注释
    

    2、多行注释

    多行注释会在编译输出的文件中保留,但在压缩的文件中不会保留

    /*
     * 这是多行注释
     * 这是多行注释
     */
    

    3、强制注释

    比多行注释多一个!号,会一直出现在编译文件中和压缩后的文件

    /*!
     * 这是多行注释
     * 这是多行注释
     */
    

    指令

    @if

    $type: monster;
    p {
      @if $type == ocean {
        color: blue;
      } @else if $type == matador {
        color: red;
      } @else if $type == monster {
        color: green;
      } @else {
        color: black;
      }
    }
    

    @for

    @for $i from 1 through 3 {
      .item-#{$i} { width: 2em * $i; }
    }
    

    @each

    @each $animal in puma, sea-slug, egret, salamander {
      .#{$animal}-icon {
        background-image: url('/images/#{$animal}.png');
      }
    }
    
    @each $animal, $color, $cursor in (puma, black, default),
                                      (sea-slug, blue, pointer),
                                      (egret, white, move) {
      .#{$animal}-icon {
        background-image: url('/images/#{$animal}.png');
        border: 2px solid $color;
        cursor: $cursor;
      }
    }
    

    @while

    $i: 6;
    @while $i > 0 {
      .item-#{$i} { width: 2em * $i; }
      $i: $i - 2;
    }
    

    自定义函数

    $grid-width: 40px;
    $gutter-width: 10px;
    
    @function grid-width($n) {
      @return $n * $grid-width + ($n - 1) * $gutter-width;
    }
    
    #sidebar { width: grid-width(5); }
    

    编译为

    #sidebar {
      width: 240px; 
    }
    

    警告

    @mixin adjust-location($x, $y) {
      @if unitless($x) {
        @warn "Assuming #{$x} to be in pixels";
        $x: 1px * $x;
      }
      @if unitless($y) {
        @warn "Assuming #{$y} to be in pixels";
        $y: 1px * $y;
      }
      position: relative; left: $x; top: $y;
    }
    

    相关文章

      网友评论

          本文标题:scss学习笔记

          本文链接:https://www.haomeiwen.com/subject/ydzzmftx.html