Scss快速入门

2017-11-22  本文已影响59人  Mr隐士

一、安装 及 编译 详细教程

介绍

安装

编译:

编译软件 Koala

二、嵌套

1. 嵌套规则

#main p {
    color: #00ff00;
    
    .redbox {
        background-color: #ff0000;
    }
}

// 被编译为:(没有&的嵌套会增加 父选择器)
#main p {
    color: #00ff00;
}

#main p .redbox {
    background-color: #ff0000;
}

2. 父选择器 &

.but1 {
    color: #00ff00;

    &-class {
        background-color: #ff0000;
    }
}

// 被编译为:(有&的嵌套,不会增加 父选择器)
.but1 {
    color: #00ff00;
}

.but1-class {
    background-color: #ff0000;
}

三、注释、导入 @import

四、SassScript

1. 变量 (块级作用域)

.main {
    $width: 5em !global;
    width: $width;
}

.sidebar {
    width: $width;
}

// 被编译为:
.main {
    width: 5em;
}

.sidebar {
    width: 5em;
}

2. 插值语句()

2. 数据类型

数字
字符串
数组
$color: red green;
map 对象
.evaluate-grade-color {
    display: flex;
    $cls: (1 #d02e2e) (2 #b2883e) (3 #95b23e) (4 #3eb277) (5 #3e9eb2) (6 #4864ae) (7 #4e4392);

    @each $cl in $cls {
        $grade: nth($cl, 1);
        $color: nth($cl, 2);

        span:nth-child(#{$grade}) {
            flex: 1;
            height: 6px;
            background-color: #{$color};
        }
    }
}
颜色
布尔
数字
null

3. 运算

p {
    font: 10em + 8em;
    $width: 1000px;
    width: $width/2;
    height: 500px/2;
    margin-left: 5px + 8px/2px; 
}

// 被编译为:
p {
    font: 18em;
    width: 500px;
    height: 500px/2;
    margin-left: 9px;
}

五、控制指令

1. @if 、 @else 、 @else if

$type: monster;

p {
    @if $type == ocean {
        color: blue;
    }
    @else if $type == matador {
        color: red;
    }
    @else if $type == monster {
        color: green;
    }
    @else {
        color: black;
    }
}

// 被编译为:

p {
    color: green;
}

2. @for

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

// 被编译为:
.item-1 {
    width: 2em;
}

.item-2 {
    width: 4em;
}

3. @each

@each $i in one, two, three {
    .#{$i} {
        background-color: red;
    }
}

// 被编译为:
.one {
    background-color: red;
}

.two {
    background-color: red;
}

.three {
    background-color: red;
}

4. @while

$i: 6;
@while $i > 0 {
    // 样式

    $i: $i - 1;
}
$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;
}

六、混合指令(定义@mixin、调用include、传参)

1. 定义混合指令

调用混合指令

@mixin large-text {  // 定义
    background-color: red;
}

.class {  // 调用
    @include large-text;
}

// 被编译为:
.class {
    background-color: red;
}
@mixin silly-links {
    a {
        color: blue;
        background-color: red;
    }
}
@include silly-links;

// 被编译为:
a {
    color: blue;
    background-color: red;
}

2. 混合指令传参

@mixin name($color, $width) {
    border: {
        color: $color;
        width: $width;
    }
}

p {
    @include name(red, 1px);
}

// 被编译为:
p {
    border-color: red;
    border-width: 1px;
}

3. 混合指令传参(带默认值得参数)

@mixin name($color, $width: 10px) {
    border: {
        color: $color;
        width: $width;
    }
}

p {
    @include name(red);
}

// 被编译为:
p {
    border-color: red;
    border-width: 10px;
}

混合指令传参(命名参数, 但也有顺序要求)

@mixin sexy-border($color, $width: 10px) {
    border: {
        color: $color;
        width: $width;
        style: dashed;
    }
}

p {
    @include sexy-border($color: blue);
}

// 被编译为:
p {
    border-color: blue;
    border-width: 10px;
    border-style: dashed;
}
@mixin sexy-border($width: 1in, $color) {
    border: {
        color: $color;
        width: $width;
        style: dashed;
    }
}

p {
    @include sexy-border($color: blue);
}

// 报错:因为有顺序要求

七、使用示例:循环对象中的值

<html>
    <div class="evaluate-grade-color">
         <span></span>
         <span></span>
         <span></span>
         <span></span>
         <span></span>
         <span></span>
         <span></span>
         <span></span>
     </div>
</html>
.evaluate-grade-color {
    display: flex;
    $cls: (1 #d02e2e) (2 #b2883e) (3 #95b23e) (4 #3eb277) (5 #3e9eb2) (6 #4864ae) (7 #4e4392);

    @each $cl in $cls {
        $grade: nth($cl, 1);
        $color: nth($cl, 2);

        span:nth-child(#{$grade}) {
            flex: 1;
            height: 6px;
            background-color: #{$color};
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读