sass 使用说明


// create on 7.30.2018

/*
    SASS提供四个编译风格的选项:

  * nested:     嵌套缩进的css代码,它是默认值。

  * expanded:   没有缩进的、扩展的css代码。

  * compact:    简洁格式的css代码。(一行)

  * compressed: 压缩后的css代码。


    
    命令行:
    sass --style compressed sign.scss sign.css

*/


/* 三、基本用法 */
/* 3.1 变量 */

    /* sass允许使用变量,所有变量以$开头 */
    $color : red;
    $fontSize : 14px;

    body {
      font-size : $fontSize*2;
      color : $color;

      div {
        font-size : $color;
        background : $color;
        input {
          font-size : $fontSize;
          color : $color;
        }
      }
    }

    body, input, button {
      font-family : Arial, "Microsoft YaHei", sans-serif;
    }






    $axax : 16px;
    $side : left;
    $var : 100px;
    $main_color : #f60;

    /* 如果变量需要镶嵌在字符串之中,就必须需要写在 # {}之中 */

    body {
      font-size : $axax;

      color : blue;
      border : 1px solid currentColor;
      border-top : 1em;

      div {
        color : inherit;
        border-top : 1em;

        input {
          border-#{$side} : $axax;
        }

        .main {
          right : $var*0.1;     /* 3.2 计算功能 */

          width : (28px/2);
          height : 50px+30px;

          div {
            border : 1px solid $main_color;
            border : {
              color : red;      /* 3.3 嵌套: 1.选择器嵌套,2.属性嵌套  例:border-color */
            };

            a {
              &:hover {         /* 在嵌套的代码块内,可以使用&引用父元素。 如:a:hover伪类 */
                font-size : 14px;

                background : $main_color;
              }
            }
          }
        }
      }
    }


/* 3.4 注释 */

/* file creat by Threeki        这种注释 compressed(压缩)编译后 被移除,普通编译方式仍然保留 */
/*! in 7.28.2018                !重要注释  不管何种编译方式,都会被保留 */
// 这是注释测试                  这种注释方式  仅保留在sass文件中



/* 四、代码的重用 */
/* 4.1 继承 */
    /* sass允许一个选择器,继承另一个选择器 */
    .class1{
        border: 1px solid #ddd;
    }
    /* 现在class2要继承class1,就要使用 @extend命令 */
    .class2{
        @extend .class1;
        font-size: 120%;
    }



/* 4.2 自动添加前缀的 @mixin指令 */
@mixin prefixer( $property, $value, $prefixes : webkit moz o ms) {
  #{$property} : $value;
  @each $prefix in $prefixes {
    @if $prefix == webkit {
      -webkit-#{$property} : #{$value};
    }
    @else if $prefix == moz {
      -moz-#{$property} : #{$value};
    }
    @else if $prefix == o {
      -o-#{$property} : #{$value};
    }
    @else if $prefix == ms {
      -ms-#{$property} : #{$value};
    }
  }
}


//  首先遍历参数 $prefixes ,依次输出参数里面包含的前缀名,接着使用插值语句 # {}输出包含浏览器前缀的属性名加属性值,
//  这就输出了一个完整的包含浏览器前缀的样式了,最后输出不带前缀的标准写法。 
//  值得注意的是,在 @mixin 指令中给参数 $prefixes设置了默认值 “ webkit moz ”,这样,当我们没有输入第三个参数的时候,
//  就默认输出输出webkit前缀,moz前缀和不带前缀的标准的写法。

// 主要的需要添加浏览器引擎前缀的属性
// 过渡属性(transition-property, transition-duration, transition-timing-function, transition-delay)
// 动画属性 (animation-name, animation-duration, animation-timing-function, animation-delay)
// border-radius
// box-shadow
// backface-visibility
// column属性
// flex属性
// perspective属性
// 当然这只是部分而已,还有其他一些CSS3属性需要加浏览器前缀。


/* 使用 @include命令,调用这个mixin */
#main {
  @include prefixer(border-radius, 10px);
}


#idid {
  font-size : 23px;

  color : red;
  border : currentColor;
  background : red;

  @include prefixer( display, flex);
}

/*
      命令行:
      // watch a file

      sass --watch input.scss:output.css

      // watch a directory

      sass --watch input-dir:output-dir
*/



/* 4.3 颜色函数 */
/* sass提供了一些内置的颜色函数,以便生成系列颜色 */
p{
    color: lighten(#cc3, 10%); // #d6d65c
    color: darken(#cc3, 10%);  // #a3a329
    color: grayscale(#cc3);    // #808080
    color: complement(#cc3);   // #33c
}



/* 4.4 插入文件 */
/* @import命令,用来插入外部文件 */

// @import "path/filename.scss";
@import "foo.css";





/* 五、高级语法 */

/* 5.1 条件语句 */
    p{
        @if 1 + 1 == 2 { border: 1px solid;}
        @if 5 < 3 { border: 2px dotted;}
    }

    @if lightness($color) > 30% {
        .P{background-color: #000};
    } @else {
        .P{background-color: #fff};
    }




/* 5.2 循环语句 */

    /* for循环 */
    @for $i from 1 to 10 {
        .border-#{$i} {
            border: #{$i}px solid blue;
        }
    }

    /* while循环 */
    $i: 6;
    @while $i > 0{
        .item-#{$i} { width: 2rem * $i }
        $i: $i - 2;
    }

    /* each命令  作用与for类似 */
    @each $member in a,b,c,d {
        .#{$member} {
            background-image: url("/image/#{menber}.jpg");
        }
    }



/* 5.3 自定义函数 */
    
    @function double($n){
        @return $n * 2;
    }

    #sidebar {
        width: double(5px);
    }






// 教程来源:http://www.ruanyifeng.com/blog/2012/06/sass.html
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,492评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,048评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,927评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,293评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,309评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,024评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,638评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,546评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,073评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,188评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,321评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,998评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,678评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,186评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,303评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,663评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,330评论 2 358

推荐阅读更多精彩内容