Sass基本指令-2

作者: OnlyPiglet | 来源:发表于2019-02-07 19:54 被阅读4次
    每日美图

    介绍

    有一天一定可以陪着爸妈一起去图中的美景,在这里说一句,谢谢爸妈对我的养育之恩,一次次的原谅包容我的错误,我一定不会让你们失望的,为了美好的未来奋斗,因为这是我值得的Yeah。
    还是回到正题吧,上篇Sass基本指令我们看了一些sass基于css指令扩展的指令,本文我们只要来看sass独有的一些指令以及用法,我会尽量以最精简的文字描述。

    函数指令function

    用于声明函数的指令,详情可以查看Sass函数一篇中的内容,这里就不在赘述了,希望各位读者见谅。

    流程控制指令

    在任何计算机语言中都会有流程控制,sass中也是借由指令实现这一功能,sass中的流程指令有
    @if、@else、@else if、@while、@for、@each
    这里的用法@for与@each需要看一下

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

    编译后

    .item-1 {
      width: 2em;
    }
    
    .item-2 {
      width: 4em;
    }
    
    .item-3 {
      width: 6em;
    }
    
    /*# sourceMappingURL=Command2.css.map */
    
    

    @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'); }
    

    开发记录指令

    @debug @warn @error

    样式复用指令@extend与@mixin @include

    首先我们需要了解一些概念术语

    .cal{
     //...
    }
    a:hover {
      text-decoration: underline;
    }
    #fake-links .link {
      @extend a;
    }
    

    这段代码中a:hover .cal称为选择器,#fake-links .link称为选择器列
    @extend 的作用是将重复使用的样式 (.error) 延伸 (extend) 给需要包含这个样式的特殊样式,延伸是什么什么概念呢,具体看一下下面的代码

    .error {
      border: 1px #f00;
      background-color: #fdd;
    }
    .error.intrusion {
      background-image: url("/image/hacked.png");
    }
    .seriousError {
      @extend .error;
      border-width: 3px;
    }
    
    .error, .seriousError {
      border: 1px #f00;
      background-color: #fdd;
    }
    
    .error .intrusion, .seriousError .intrusion {
      background-image: url("/image/hacked.png");
    }
    
    .seriousError {
      border-width: 3px;
    }
    

    我们可以发现@extend的延伸其实就是在使用error的地方也使用seriousError。
    再来看一段代码

    @mixin large-text {
      font: {
        family: Arial;
      }
      color: #ff0000;
    }
    .page-title {
      @include large-text;
      margin-top: 10px;
    }
    
    .page-title {
      font-family: Arial;
      color: #ff0000;
      margin-top: 10px; }
    

    我们发现使用了include就是讲mixin的样式直接引用进来:
    @mixin还可以这样使用

    $color: white;
    @mixin colors($color: blue) {
      background-color: $color;
      @content;
      border-color: $color;
    }
    .colors {
      @include colors { color: $color; }
    }
    
    .colors {
      background-color: blue;
      color: white;
      border-color: blue;
    }
    

    这里的@content类似于占位指令的作用
    上面描述了@extend与@mixin的主要区别:

    • @mixin是支持参数的,@extend是不支持参数的;
    • 为便于书写,@mixin 可以用 = 表示,而 @include 可以用 + 表示
      @extend
    • 同一个选择器可以延伸给多个选择器,它所包含的属性将继承给所有被延伸的选择器:
    • 当一个选择器延伸给第二个后,可以继续将第二个选择器延伸给第三个;
    • 暂时不可以将选择器列 (Selector Sequences),比如 .foo .bar 或 .foo + .bar,延伸给其他元素
    • 比如选择器列中的某个元素需要延伸给另一个选择器列;

    相关文章

      网友评论

        本文标题:Sass基本指令-2

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