Sass

作者: 苹果咏 | 来源:发表于2020-06-16 17:23 被阅读0次
    1、父选择器 &

    这里&代表父级a的hover

    a {
      font-weight: bold;
      text-decoration: none;
      &:hover { text-decoration: underline; }
      body.firefox & { font-weight: normal; }
    }
    

    这里的&.icon-right是给.g-button加一个同级的class:icon-right

    .g-button{
        font-size: $font-size; 
        height: $button-height; 
        padding: 0 1em;
        border-radius: $border-radius; 
        border: 1px solid $border-color;
        &.icon-right{
            margin-left: .3em;
            order: 2;
        }  
    }
    
    2、变量 $
    $width: 5em;
    

    调用:

    #main {
      width: $width;
    }
    

    一般可将变量统一写在一个文件中_var.scss(加下划线表示不要将此文件编译成css文件),其余文件都可调用

    3、插值语句 #{}

    通过 #{} 插值语句可以在选择器或属性名中使用变量:

    $name: foo;
    $attr: border;
    p.#{$name} {
      #{$attr}-color: blue;
    }
    

    编译为

    p.foo {
      border-color: blue; }
    
    p {
      $font-size: 12px;
      $line-height: 30px;
      font: #{$font-size}/#{$line-height};
    }
    

    编译为

    p {
      font: 12px/30px; }
    
    4、@extend样式继承
    .error {
      border: 1px #f00;
      background-color: #fdd;
    }
    .seriousError {
      @extend .error;
      border-width: 3px;
    }
    

    多用于同一个元素,两个不同的点击状态

    5、@at-root

    @at-root指令可以使一个或多个规则被限定输出在文档的根层级上,而不是被嵌套在其父选择器下。

    .parent{
      font-size:12px;
      &.son{
        align: center
      }
      @at-root .son2{
        align: center
      }
    }
    

    编译后:

    .parent {
      font-size: 12px;
    }
    .parent.son {
      align: center;
    }
    .son2 {
      align: center;
    }
    
    6、控制指令
    @if
    p {
      @if 1 + 1 == 2 { border: 1px solid; }
      @if 5 < 3 { border: 2px dotted; }
      @if null  { border: 3px double; }
    }
    
    $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; }
    }
    

    编译为:

    .item-1 {
      width: 2em; }
    .item-2 {
      width: 4em; }
    .item-3 {
      width: 6em; }
    
    @each
    @each $animal in puma, sea-slug, egret, salamander {
      .#{$animal}-icon {
        background-image: url('/images/#{$animal}.png');
      }
    }
    

    编译为:

    .puma-icon {
      background-image: url('/images/puma.png'); }
    .sea-slug-icon {
      background-image: url('/images/sea-slug.png'); }
    .egret-icon {
      background-image: url('/images/egret.png'); }
    .salamander-icon {
      background-image: url('/images/salamander.png'); }
    
    @while
    $i: 6;
    @while $i > 0 {
      .item-#{$i} { width: 2em * $i; }
      $i: $i - 2;
    }
    
    .item-6 {
      width: 12em; }
    
    .item-4 {
      width: 8em; }
    
    .item-2 {
      width: 4em; }
    
    7、混合指令 Mixin

    混合指令(Mixin)用于定义可重复使用的样式,避免了使用无语意的 class,比如 .float-left。混合指令可以包含所有的 CSS 规则,绝大部分 Sass 规则,甚至通过参数功能引入变量,输出多样化的样式。

    @mixin large-text {
      font: {
        family: Arial;
        size: 20px;
        weight: bold;
      }
      color: #ff0000;
    }
    

    引用:

    .page-title {
      @include large-text;
      padding: 4px;
      margin-top: 10px;
    }
    

    编译为:

    .page-title {
      font-family: Arial;
      font-size: 20px;
      font-weight: bold;
      color: #ff0000;
      padding: 4px;
      margin-top: 10px; }
    
    参数 (Arguments)
    @mixin sexy-border($color, $width) {
      border: {
        color: $color;
        width: $width;
        style: dashed;
      }
    }
    p { @include sexy-border(blue, 1in); }
    

    编译为

    p {
      border-color: blue;
      border-width: 1in;
      border-style: dashed; }
    
    函数指令
    $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; }
    

    相关文章

      网友评论

          本文标题:Sass

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