@if
  @if 指令是一个SassScript,它可以根据条件处理样式块,如果条件为true返回一个样式块,反之
  false 返回另一个样式块,在Sass 中除了@if之,还可以配合@else if和eles 一起。
  例如:
    //SCSS
      @mixin blockOrHidden($boolean:true){
            @if $boolean {
              @debug "$boolean is #{$boolean}";
              display:block;
              }
              @else{
                @debug "$boolean is #{$boolean}";
                  display:none;
                }
              }
            .block{
              @include blockOrHidden;
            }
      .hidden{
          @include blockOrHidden(false);
      }
    编译出来的css
    .block{
      display:block;
    }
    .hidden{
      display:none;
    }
@for循环(上)
    在Sass 的@for 循环中油两种方式:
    @for $i from <start> through <end>
    @for $i from <start> to <end>
    $i 表示变量
    start 表示起始值
    end 表示结束值
    这两个的区别是一个关键字,through 表示包括end 这个数,而to 则不包括end 这个数。
    如下代码,先来一个使用through 关键字。
    @for $i from 1 throug 3 {
      .item-#{$i} {
          width:2em *$i;
        }
     }
    编译出来css
    .item-1{
        width:2em;
      }
    .item-2{
      width:4em;
    }
    .item-3{
        width:6em;
    }
    在来一个to关键字的例子:
    @for $i from to 3 {
      .item-#{$i} { width:2em * $i;}
     }
    编译出来的css:
    .item-1{
      width:2em;
    }
    .item-2{
      width:4em;
    }
@for循环(下)
    @for 应用在网格系统生成各个格子class 的代码。
    //scss
      $grid-prefix: span !default;
      $grid-width:60px !defaulet;
      $grid-gutter:20px !defaulet;

    %grid{
        float:left;
        margin-left:$grid-gutter / 2;
        margin-right:$grid-gutter / 2;
      }
    @for $i from 1 through 12 {
    .#{$grid-prefix} #{$i}{
        width:$grid-width *$grid-gutter *($i - 1);
        @extend %grid;
      }
    }
    编译出来的css
     .span1, .span2, .span3, .span4, .span5
      , .span6, .span7, .span8, .span9, .span10,
      , .span11,, .span12{
              float:left;
              margin-left:10px;
              margin-right:10px;
       }
      .span1{
          width:60px;
      }
      .span2{
          width:140px;
      }
      .span3{
          width:220px;
      }
      .span4{
          width:300px;
       }
      .span5{
          width:380px;
      }
      .span6{
          width:400px;
      }
      .span7{
          width:540px;
      }
      .span8{
          width:620px;
      }
      .span9{
          width:700px;
      }
      .span11 {
        width: 860px;
      }

      .span12 {
        width: 940px;
      }
    将上面的示例稍做修改,将 @for through 方式换成 @for to::
      //scss
      @for $i from 1 to 13{
.        #{$grid-prefix}#{$i}{
          width:$grid-width * $i + $grid-grutter *($i -1);
          @extend %grid;
          }
      }
    这两段 Sass 代码并无太多差别,只是 @for中的 <end> 取值不同。配合 through 的 <end> 值是 12,
    其遍历出来的终点值也是 12,和 <end> 值一样。配合 to 的 <end> 值是 13,其遍历出来的终点值是 12,
    就是 <end> 对就的值减去 1
@while 循环
    @while指令也需要SassScript 表达式(像其他指令一样),并且会生成不同的样式块,直到表达式值为false
    时停止循环。这个和@for 指令很相似,只要@while 后面的条件为true就会执行。
    例如:
      //SCSS
      $types:4;
      $type-width:20px;
      @while $types > 0{
          .while-#{$types}
          width:$type-width + $types;
        }
      $types: $types - 1;
      编译出来css
      .while-4{
          width:24px;
        }
      .while-3{
          width:23px;
        }
      .while-2{
          width:22px;
        }
      .while-1{
        width:21px;
      }
@each循环
  @each循环就是去遍历一个列表,依然从列表中取出对应的值。
  @each 循环指令的形式:
  @each $var in <list>
  例如:
    @mixin author-images{
      @each $author in $list {
        .photo-#{$author}{
          background:url("/images/avatars/#{$author}.png") no-repeat;
          }
      }
    }
  .anthor-bio{
      @include author-images;
  }
  编译出来 CSS
  .author-bio .photo-adam{
    background:url("/images/avatars/adam.png") no - repeat;
  }
  .author-bio .photo-john{
    background:url("/images/avatars/john.png") no - repeat;
  }
  .author-bio .photo-wynn{
      background:url("/images/avatars/wynn.png") no - repeat;
  }
  .author-bio .photo-mason{
        background:url("/images/avatars/mason.png") no - repeat;
  }
  .author-bio .photo-kuroir{
    background:url("/images/avatars/wynn.png") no - repeat;
  }
    Sass的函数简介
    函数主要包括。
    字符串函数
    数字函数
    列表函数
    颜色函数
    Interospection函数
    三元函数等。
    字符串函数-unquote() 函数
    字符串函数顾名思义是用来处理字符串的函数,Sass 的字符串函数要包括两种。
    unquote($string): 删除字符串中的引号
    quote($string):给字符串添加引号。
1.unquote()函数。
    unquote() 函数主要是用来删除字符串的引号。如果这个字符串没有带引号,将返回原始的字符串
    //SCSS
      .test1{
        content: unquote('Hello Sass!');
      }
    .test2{
        content:unquote(" 'Hello Sass!");
      }
    .test3{
        content:unquote("I' m Web Designer");
    }
    .test4{
        content:unquote(" 'Hello Sass!' ");
    }
    .test5{
        content:unquote('" Hello Sass!"');
    }
    .test6{
      content:unquote(Hello Sass);
    }
    编译后的 css代码
     // css
    .test1{
      content:Hello Sass!; }
    .test2{
      content:'Hello Sass!; }
    .test3{
      content:I'm Web Designer; }
    .test4{
      content:'Hello Sass!'; }
    .test5{
      content:"Hello Sass!"; }
    .test6{
      content:Hello Sass!; }
    unquote( ) 函数只能删除字符串最前和最后的引号(双引号或单引号),而无法删除字符串中间的引号。
    如果字符没有带引号,返回的将是字符串本身。
    字符串函数-quote()函数
      quote()函数刚好与unquote() 函数功能相反,主要用来给字符串添加引号。如果字符串,自身带有引号
    会统一换成双引号。
    // SCSS
    .test1{
        content: quote( 'Hello Sass!' );
      }
    .test2{
        content: quote("Hello Sass!")
    }
    .test3{
      content: quote(ImWebDesigner);
    }
    .test4{
      content: quote(' ');
    }
    编译出来的css 代码
    // css
    .test1{
        content: "Hello Sass!";
    }
    .test2{
        content: "Hello Sass!"
    }
    .test3{
      content: "ImWebDesigner";
    }
    .test4{
      content: "";
    }
    使用 quote() 函数只能给字符串增加双引号,而且字符串中间有单引号或者空格时,
    需要用单引号或双引号括起,否则编译的时候将会报错。
    字符串函数-To-upper-case(),To-lower-case()
    1.To-upper-case(),To-lower-case()
      To-upper-case()
     //SCSS
    .test {
        text:to-upper-case(aaaaa);
        text:to-upper-case(aA-aAAA-aaa);
    }
  编译出来的css 代码
    // CSS
    .test{
      text:AAAAA;
      text:AA-AAAA-AAA;
    }
2.To-lower-case()
  To-lower-case() 函数 与To-upper-case()刚好相反,将字符串转成小写字母。
  // SCSS
  .test{
      text: to-lower - cass(AAAAA);
      text: to-lower-case(aA-aAAA-aaa)
  }
  编译出来的 css 代码;
    //css
    .test{
      text: aaaaa;
      text:aa-aaaa-aaa;
    }
    数字函数简介
    Sass 中的数组函数要针对数字方面提供一系列的函数功能:
    percentage($value):将一个不带单位的数转换成百分比:
    round($value):将数值四舍五入,转换成一个最接近的整数;
    ceil($value):将大于自己的小数转换成下一位整数;
    floor($value):将一个数去除他的小数部分;
    abs($value):返回一个数的绝对值。
    min($numbers...) 找出几个数之间的最小值:
    max($numbers...)找出几个数值之间的最大值
    random() 获取随机数。
    数字函数-percentage()
1.percentage()
    percentage() 函数主要是将一个不带单位的数字转成 百分比形式:
    >> percentage(.2)
    20%
    >>percentage(2px / 10px)
    20%
    >>percentage(2em / 10em)
    20%
    >>
    .footer{
        width:percentage(.2)
    }
    编译后的css 代码;
    .footer{
      width:20%;
    }
数字函数-round() 函数
    round()函数可以将一个数四舍五入为一个最近的整数;
    >>round(12.3)
      12
    >> round(12.5)
      13
    >>round(1.499999)
      1
    >>round(20%)
      20%
    >>round(3.9em)
      4em
    >>round(2.3px)
      2px
    >>round(1px /3px)
      0
    >>round(3px / 2em)
      2px/em

      .footer{
          width:round(12.3px)
      }
    编译出来的css
    .footer{
        width:12px;
      }
数字函数-ceil()函数
    ceil()函数将一个数转换成最接近自己的整数,会讲一个大约自身的任何小数转换成大约本身1的整数,也就是只做入,不做舍的
    >> ceil(2.0)
      2
    >>ceil(2.1)
      3
    >>ceil(2.6)
      3
    >>ceil(2.3%)
      3%
    >>ceil(2.5px)
      3px
    >>ceil(2px / 3px)
      1
    >>ceil(2% / 3px)
      1%/px
    >>ceil(1em / 5px)
      1em/px

    .footer{
      width:ceil(12.3px);
    }
    编译后的css 代码:
  .footer{
      width:13px;
  }
  数字函数-floor()函数
    floor()函数刚好与ceil()函数功能相反,其主要将一个数去除其小数部分。并且不做任何的进位,也就是只做舍,不做入的计算。
  >> floor(2.1)
    2
  >> floor(2.5)
    2
  >>floor(3.5%)
    3%
  >>floor(10.2px)
    10em
  >> floor(10.2px)
    10px
  >>floor(10.8em)
    10em
  >>floor(2px / 10px)
    0
  >> floor(3px / 1em)
    3px /em
  .footer{
    width:floor(12.3px);
  }
  编译后的css代码
  .footer{
    width:12px;
  }

数字函数-abs() 函数
  abs()函数会返回一个数的绝对值。
  >>abs(10)
    10
  >>abs(-10)
    10
  >>abs(-10px)
    10px
  >>abs(-2em)
    2em
  >>abs(-.5%)
    0.5%
  >>abs(-1px / 2px)
    0.5
  .footer{
    width:abs(-12.3px)
  }
  编译后的css代码:
    .footer{
      width:12px;
    }
数字函数-min()函数,max()函数
  min() 函数功能主要是在多个数之中找到最小的一个,这个函数可以设置任意多个参数。
  >>min(1,2,1%,3.300%)
    1%
  >> min(1px,2,3px)
    1px
  >>min(1em,2em,6em)
    1em
  不过在min() 函数中同时出现两种不同类型的单位,将会报错误信息。
    >>min(1px, 1em)
      SyntaxError: Incompatible units:'em' and'px'.
max()函数
  max()函数和min函数一样,不同的是,max() 函数用来获取一系列书数中的最大那个值。
    >> max(1,5)
      5
    >>max(1px,5px)
      5px
    同样的,如果在max()函数中有不同的单位,将会报错:
    >> max(1,3px,5%,6)
      SyntaxError: Incompatible units: '%' and ‘px'.
    数字函数-random()函数
    random()函数是用来获取一个随机数。
    >> random()
      0.03886
    >>random()
      0.66527
    >> random()
      0.8125
    >>random()
      0.26839
    >>random()
    0.85065
列表函数介绍
      列表函数主要包括一些对列表参数的函数使用,主要包括以下几种形式。
      length($list):返回一个列表的长度值:
      nth($list,$n):返回一个列表中指定的某个标签值。
      join($list1,$list2,[$separator] ):将某个值放在列表的最后;
      zip($lists...);将几个列表结合成一个多维的列表:
      index($list,$value)返回一个值在列表中的位置值。
length()函数
  length()函数主要用来返回一个列表的中有几个值,简单点说就是返回列表清单中有多少个值:
  >>length(10px)
    1
  >>length(10px 20px (border 1px solid) 2em)
    4
  >>length(border 1px solid)
    3
  length() 函数中的列表参数之间使用空格隔开,不能使用逗号,否则函数将会出错;
  >> length(10px, 20px,(border 1px solid),2em)
    SyntaxError: wrong number of arguments(4 for 1) for'length
    nth($list,$n)
    nth()函数用来指定列表中某个位置的值,不过在Sass 中,nth()函数和其他语法不同,1 是指列表中的第一个标签值
    2 是指列表中的第二个标签值。
      >> nth(10px 20px 30px,1)
        10px
      >>nth((Helvetica,Arial,sans-serif),2)
        "Arial"
      >>nth((1px solid red) border-top green,1)
        (1px "solid" #ff0000)
      在nth($list,$n) 函数中的$n 必须是大于 0 的整数;

Sass 基础(五)的更多相关文章

  1. Bootstrap <基础五>表格

    Bootstrap 提供了一个清晰的创建表格的布局.下表列出了 Bootstrap 支持的一些表格元素: 标签 描述 <table> 为表格添加基础样式. <thead> 表格 ...

  2. [转]前端利器:SASS基础与Compass入门

    [转]前端利器:SASS基础与Compass入门 SASS是Syntactically Awesome Stylesheete Sass的缩写,它是css的一个开发工具,提供了很多便利和简单的语法,让 ...

  3. C#_02.14_基础五_.NET类

    C#_02.14_基础五_.NET类 一.类实例: 我们前面说过类是一个模板,我们通过类创建一个又一个的实例,通常情况下类当中的变量是每一个实例都各有一份的,互相不影响,而静态字段是除外的,静态字段是 ...

  4. Sass基础——Rem与Px的转换

    rem是CSS3中新增加的一个单位值,他和em单位一样,都是一个相对单位.不同的是em是相对于元素的父元素的font-size进行计算:rem是相对于根元素html的font-size进行计算.这样一 ...

  5. day 70 Django基础五之django模型层(二)多表操作

    Django基础五之django模型层(二)多表操作   本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...

  6. day 69 Django基础五之django模型层(一)单表操作

    Django基础五之django模型层(一)单表操作   本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现 ...

  7. day 57 Django基础五之django模型层之关联管理器

    Django基础五之django模型层之关联管理器   class RelatedManager "关联管理器"是在一对多或者多对多的关联上下文中使用的管理器.它存在于下面两种情况 ...

  8. day 56 Django基础五之django模型层(二)多表操作

    Django基础五之django模型层(二)多表操作   本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...

  9. day 55 Django基础五之django模型层(一)单表操作

      Django基础五之django模型层(一)单表操作   本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它 ...

随机推荐

  1. 关于日常使用Azure MySQL中遇到的连接问题以及排查方法分享

    由于防火墙问题,TCP keep alive 问题,以及 MySQL 自身的参数问题这三个在使用中比较常见,所以今天就分享下自己找到的排查方法. 今天先聊一聊防火墙问题 大多数人在第一次创建 MySQ ...

  2. 面向对象(基础oop)之类与对象

    大家好,我叫李京阳,,很高兴认识大家,之所以我想开一个自己的博客,就是来把自己所了解的知识点通过自己的话写一下,希望被博客园的朋友们点评和一起讨论一下,也希望从博客园中多认识一些软件开发人员!现在我开 ...

  3. 微服务学习笔记一:Spring Cloud简介

    1.Spring Cloud是一个工具集:Spring   Cloud是在Spring    Boot的基础上构建的,用于简化分布式系统构建的工具集:使架构师在创建和发布微服务时极为便捷和有效. Sp ...

  4. 集合之Iterator迭代器

      Iterator迭代器概述: java中提供了很多个集合,它们在存储元素时,采用的存储方式不同.我们要取出这些集合中的元素,可通过一种通用的获取方式来完成. Collection集合元素的通用获取 ...

  5. centos7 版本防火墻操作和配置

    1.关闭firewall:systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止fire ...

  6. github使用手册

    1.git init 2.git add README.md (增加文件夹/文件:git add dir/files) 3.git commit -m "注释内容” 4.git push - ...

  7. css3 border-image及连续的图像边框

    border-image 它是下面几个值的简写: border-image-source // 使用绝对或相对地址url,引入图片 border-image-slice   //切割图片,取值支持:& ...

  8. 安装Android Studio的问题

    大陆墙内安装最新Android Studio多出了很多问题,不使用VPN的话,注意以下问题: 1 一直停留在fetching Android sdk compoment information界面 A ...

  9. IT小小鸟读书笔记2

    Part4: 一.    大学的时光真的很容易荒废,自己的实力到头来和自己的成绩单一样空虚,其实自己也是深有同感的. 二.    这个观点我十分的认同:在某个方面比别人多5%的深度,可能拿到的报酬就是 ...

  10. 理解及快速测定 Azure 虚拟机的磁盘性能

    随着越来越多的用户将生产系统迁移到 Azure 平台的虚拟机服务中,Azure 虚拟机的性能愈发被关注.传统的数据中心中,我们通常使用 CPU,内存,存储和网络的性能来衡量生产压力.特别是对于 IO ...