认识 SASS

SASS 是对 CSS 的扩展,是 CSS 的预编译语言,让 CSS 如虎添翼。它让你在编写 CSS 时可以使用变量、嵌套、mixins、导入等功能,让 CSS 更佳程序化和模块化。

语法

import

SASS 可以通过@import来导入其它的 SASS 文件,编译时会将导入的 CASS 文件合并并且生成一个 CSS 文件。导入的文件名可以忽略后缀.scss,例如:导入文件index.scss,只需要写成:@import index就行了。

//input:SASS
//index.scss
.index {
    color: #333;
}
//app.scss
@import "index";
body {
    color: #ccc;
}
//output:CSS
//app.css
.index {
    color: #333;
}
body {
    color: #ccc;
}

注释

SASS 支持两种方式的注释,一种多行注释:/*注释内容*/,另一种单行注释://注释内容

变量

SASS 的变量都以 $ 开头,后面紧跟变量名,变量名和变量值之间需要用:分开,如果值后面加上!default表示默认值。

普通变量:

//input:SASS
$color: #ccc;
body {
    color: $color;
}
//output:CSS
body {
    color: #ccc;
}

默认变量

默认变量只需要在值后面加上!default

//input:SASS
$color: #ccc !default;
body {
    color: $color;
}

特殊变量

一般我们定义的变量都为属性值,单如果变量时属性的某一部分,我们以#{$variables}形势来使用。

//input:SASS
$direction: top;
body {
    margin-#{$direction}: 20px;
}
//output:CSS
body {
    margin-top: 20px;
}

多值变量

我们可以像 JS 中使用数组活动对象的形势来定义多值变量

  • list 数据通过空格、逗号或者小括号分割多个值,可以用nth($var, $index)来取值,注意$index以 1 开始。
//input:SASS
$var: 12px #ccc #ddd;
body {
    font-size: nth($var, 1);
    color: nth($var, 2);
    background-color: nth($var, 3);
}
//output:CSS
body {
    font-size: 12px;
    color: #ccc;
    background-color: #ddd;
}
  • map 数据可以以 key 和 value 成对出现,格式为:$map:(key: value, key1: value1)可以通过map-get($map, $key)来取值,
//input:SASS
$heads: (h1: 20px, h2: 18px, h3: 16px);
@each $h, $size in $heads {
    #($h) {
        font-size: $size;
    }
}
//output:CSS
h1 {
  font-size: 20px; 
}
h2 {
  font-size: 18px; 
}
h3 {
  font-size: 16px; 
}

嵌套

SASS 嵌套有两种:一种选择器的嵌套,一种是属性的嵌套,当然我们使用选择器的嵌套更多一些。

选择器嵌套

所谓选择器的嵌套,指的是在一个选择器中嵌套另一个选择器来实现继承,从而增强了 SASS 文件的结构和可读性。可以使用&表示父级元素选择器。

//input:SASS
.index-page {
    nav{
        font-size: 14px;
    }
    article{
        font-size: 12px;
    }
    footer {
        font-size: 14px;
    }
}
//output:CSS
.index-page nav{
    font-size: 14px;
}
.index-page article{
    font-size: 12px;
}
.index-page footer{
    font-size: 14px;
}

属性嵌套

//input:SASS
.index-page {
    nav{
        border: {
            style: solid;
            left: {
                width: 1px;
                color: #333;
            }
        }
    }
}
//output:CSS
.index-page nav{
    border-style: solid;
    border-left-width: 1px;
    border-left-color: #333;
}

mixin

SASS 中用@mixin声明混合,类似于方法可以复用、传参,参数名用$开始,多个参数用,分开,也可以给参数设置默认值。通过@include来调用声明的@mixin

//input:SASS
@mixin borderTop ($borderStyle:1px #fff solid) {
    position: relative;
    &:before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        width: 200%;
        -webkit-transform: scale(0.5) translate(-50%, -50%);
        transform: scale(0.5) translate(-50%, -50%);
        border-top: $borderStyle;
    }
}

.list {
    color: #ccc;
    @include borderTop(1px #ccc soild);
} 
//output:CSS
.list{
    color: #ccc;
    position: relative;
    &:before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        width: 200%;
        -webkit-transform: scale(0.5) translate(-50%, -50%);
        transform: scale(0.5) translate(-50%, -50%);
        border-top: 1px #ccc soild;
    }
}

继承

SASS 可以通过@extend来继承另一个选择器的所有样式:

//input:SASS
.ellipsis {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.title {
    width: 100px;
    @extend .ellipsis;
}
//output:CSS
.title {
    width: 100px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

函数

运算

条件判断及循环

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容