sass是世界上最好的css扩展语言。

131 阅读2分钟

初体验

html结构:

<div id="wrap">
    <div class="content">
        <div class="article">
            <p>
                <span>文字</span>
            </p>
        </div>
    </div>
</div>

css代码:

#wrap .content{}
#wrap .content .article{}
#wrap .content .article p{}
#wrap .content .article p span{}

使用sass编写:

#wrap{
    width: 300px;
    height: 300px;
    border:3px solid #ccc;
    .content{
        width: 250px;
        height: 250px;
        background-color: pink;
        .article{
            width: 200px;
            height: 200px;
            background-color: skyblue;
            p{
                width: 150px;
                height: 150px;
                border:5px solid purple;
                span{
                    font-size: 20px;
                } 
            }
        }
    } 
}
  • 编译sass成css:
    1. 在 vs code 中 安装 插件 easy sass
    2. 在 vs code 中创建一个 xxx.scss 文件 ==(注意这里就是 scss 结尾 不是 sass 结尾)==
    3. 在 xxx.scss 文件中书写 scss 代码
    4. 保存代码后,当前的 xxx.scss 文件旁边会自动生成两个文件
      • xxx.css:文件内容为编译后的 css 代码
      • xxx.min.css:文件内容为编译后并且压缩过的 css 代码

sass的学习

SASS官网:www.sass.hk/

sass文件的后缀分两种:.sass.scss,相对来说,.scss使用的比较多。

.scss的文件写法:

#wrap{
    width:100px;
}

.sass的文件写法:

#wrap
	width:100px

他们的区别在于有没有大括号和分号。我们已经习惯了写大括号和分号了,所以使用.scss的比较多。

sass的注释

// 单行注释,但是在编译的时候不保留

/*
多行注释
编译的时候可以保留
压缩的时候不保留
*/

/*!
多行注释
编译和压缩的时候都会保留
*/

变量

在sass中$来定义变量:

$color:red;
$font_size:12px;
.header{
    background-color: $color;
    font-size:$font_size*2(代表数值乘二);
}

一般用来定义颜色或者一些常用的像素值(变量名可自己编写,不必拘束于宽高的,字体颜色的单词)。

嵌套

/*后代关系*/
.wrap{
    div{
        width:$font_size*10(代表数值乘十);
    }
}
/*子类关系*/
ul{
    >li{
        padding:12px;
    }
}
/*大括号中表示自己*/
.nav{
    &:hover{
        background-color: $color;
    }
    li{
        &:hover{
            color:$color;
        }
    }
}
/*群组嵌套按正常写即可*/
/* 属性嵌套 */
.content{
    border: {
        style:solid;
        color:$color;
        width:2px;
    }
}
.left{
    border:1px solid #000{
        left:none;
        bottom:{
            width:3px;
        }
    };
}

编译结果:

/*后代关系*/
.wrap div {
  width: 120px;
}

/*子类关系*/
ul > li {
  padding: 12px;
}

/*大括号中表示自己*/
.nav:hover {
  background-color: red;
}
.nav li:hover {
  color: red;
}

/*群组嵌套按正常写即可*/
/* 属性嵌套 */
.content {
  border-style: solid;
  border-color: red;
  border-width: 2px;
}

.left {
  border: 1px solid #000;
  border-left: none;
  border-bottom-width: 3px;
}

嵌套

/*后代关系*/
.wrap{
    div{
        width:$font_size*10;
    }
}
/*子类关系*/
ul{
    >li{
        padding:12px;
    }
}
/*大括号中表示自己*/
.nav{
    &:hover{
        background-color: $color;
    }
    li{
        &:hover{
            color:$color;
        }
    }
}
/*群组嵌套按正常写即可*/
/* 属性嵌套 */
.content{
    border: {
        style:solid;
        color:$color;
        width:2px;
    }
}
.left{
    border:1px solid #000{
        left:none;
        bottom:{
            width:3px;
        }
    };
}

编译结果:

/*后代关系*/
.wrap div {
  width: 120px;
}

/*子类关系*/
ul > li {
  padding: 12px;
}

/*大括号中表示自己*/
.nav:hover {
  background-color: red;
}
.nav li:hover {
  color: red;
}

/*群组嵌套按正常写即可*/
/* 属性嵌套 */
.content {
  border-style: solid;
  border-color: red;
  border-width: 2px;
}

.left {
  border: 1px solid #000;
  border-left: none;
  border-bottom-width: 3px;
}