美文网首页
八、sass - @extend样式继承

八、sass - @extend样式继承

作者: 柳暗花明又一匪 | 来源:发表于2018-01-25 15:30 被阅读0次

    在设计网页的时候常常遇到这种情况:一个元素使用的样式与另一个元素完全相同,但又添加了额外的样式。通常会在 HTML 中给元素定义两个 class,一个通用样式,一个特殊样式。假设现在要设计一个普通错误样式与一个严重错误样式,一般会这样写:

    //样式如下
    .error {
      background-color: red;
    }
    .seriousError {
      font-weight: bold;
    }
    
    //样式使用
    <div class="error seriousError">
      这是一个严重错误!
    </div>
    

    弊端:这样做必须时刻记住使用 .seriousError 时需要参考 .error 的样式,带来了很多不变:智能比如加重维护负担,导致 bug,或者给 HTML 添加无语意的样式。

    使用 @extend 可以避免上述情况,告诉 Sass 将一个选择器下的所有样式继承给另一个选择器。

    .error {
      color: red;
    }
    .seriousError {
      @extend .error;
      font-weight: bold;
    }
    
    //编译后
    .error {
      color: red;
    }
    .seriousError {
      color: red;
      font-weight: bold;
    }
    

    多重延伸 (Multiple Extends)

    同一个选择器可以延伸给多个选择器,它所包含的属性将继承给所有被延伸的选择器:

    .error {
      color: red;
    }
    .attention {
      background-color:yellow;
    }
    .seriousError {
      @extend .error;
      @extend .attention;
      font-weight: bold;
    }
    

    编译后:

    .error, .seriousError {
      border: 1px #f00;
      background-color: #fdd; }
    
    .attention, .seriousError {
      font-size: 3em;
      background-color: #ff0; }
    
    .seriousError {
      border-width: 3px; }
    

    继续延伸 (Chaining Extends)

    当一个选择器延伸给第二个后,可以继续将第二个选择器延伸给第三个,例如:

    .error {
      color: red;
    }
    .attention {
      @extend .error;
      background-color:yellow;
    }
    .seriousError {
      @extend .attention;
      font-weight: bold;
    }
    

    编译后:

    .error, .attention, .seriousError {
      color: red; }
    
    .attention, .seriousError {
      background-color: yellow; }
    
    .seriousError {
      font-weight: bold; }
    

    注意:在使用 @extend 时,必须在同一块域内。

    相关文章

      网友评论

          本文标题:八、sass - @extend样式继承

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