scss理解及用法

1.scss是什么

scss是css的一种预处理语言

scss是一门很好用的类css,在现实中的工作当中几乎都是不采用css的,而是使用类css语言。

例如:scss、less、stylus等,所以学习一门css语言是必须得,由于我用的比较多的就是scss了,所以我在这里就简要介绍一下我理解的scss用法

首先它是一款强化css的辅助工具,在css的基础上怎加了:

  • 变量(variables)

  • 嵌套(nested nutes)

  • 混合(mixin)

  • 导入(inline imports)等等一些功能

scss是sass3.0后的一个版本,后缀名为.scss

2.为什么要使用scss

scss的优势也是很多的,主要分为一下几点:

  1. scss完全兼容所有版本的css。

  1. 特性丰富,scss拥有比其他的任何css扩展语言更丰富的功能和特性。

  1. 行业认可,社区庞大,大多数科技企业和成百上千名开发者为技术提供支持。

  1. 有无数的框架使用scss,如:bootstrap等。

  1. 让css更加简洁,适应性更强,阅读性更佳,更易于代码的维护等诸多好处。

3.scss的使用

一、注释分为三种:

/* */css中显示,
//css中不显示,
/*重要注释!*/压缩不会被删掉

二、命令导入外部的css,less,scss文件:

@import "../assets/scss/home.scss";

三、声明变量:

$+变量名+:+变量值;如下:
    $color : red; //声明颜色变量 $color
    $width: 100px; //声明宽度变量 $width
    $left: left;

四、区分默认变量:

默认变量只需要在变量值后加上 !default , 用来设置默认值 ,对默认变量进行重新声明可以实现覆盖默认值;如:

    $color : yellow !default; //声明默认变量 $color
    $color : purple; //根据需求覆盖默认变量

五、区分全局变量和局部变量:

全局变量是元素外声明的变量,局部变量是在元素里声明的变量,重复声明时局部变量会覆盖全局变量;

局部变量值后加上 !global 关键词可以使得局部变量变成全局变量;

  $color : red; //声明颜色变量 $color
  $width: 100px; //声明宽度变量 $width
  $left: left;

 .div {
        $border-color: rgba(28, 46, 208, 0.8); //局部变量
        $bd-color: rgb(223, 15, 195) !global; //加!global变为全局变量
        width: $const;
        height: $const;
        color: $color;
        border: 5px solid $border-color;

        .spans {
            font-size: 30px;
            color: $color;
        }
    }

 .div2 {
        width: $const;
        height: $const;
        border: 5px solid $bd-color; //使用加了!global得全局变量
        border-#{$left}: 10px solid red; //变量嵌套引用:即字符串插值,需要使用 #{} 来进行包裹
    }

六、 继承

.class 使用 @extend

.div2 {
        width: 100px;
        height: 50px;
        border: 5px solid #f00; 
       }
.div3 {
        @extend .div2; //继承.div2中得所有样式
       }

七、占位符 %

使用% 声明的代码块,如果不被@extend调用的话就不会被编译。编译出来的代码会将相同的代码合并在一起,代码变得十分简洁。

 %m5 {
        background-color: rgb(12, 174, 228);
    }

    .div3 {
        @extend %m5;
    }

八、混合@mixin

·重复代码块,使用混合@mixin命令定义,以及使用@include调用该mixin

// 在使用@mixin和@include时,传入参数和默认值
    @mixin normalStyle ($width , $height , $color , $defaultValue : orange) {
        width: $width ;
        height: $height ;
        color: $color ;
        background-color: $defaultValue ;
    }

    .div4 {
        //在此处使用并传参
        @include normalStyle (300px, 100px, green, rgb(188, 40, 40));
    }

九、SCSS使用编程式方法

 // ·条件语句 
    .div4 {
        p {
            @if 1+1>3 {
                border: 1px solid blue;
            }
            @else {
                border: 2px dashed palevioletred;
            }
        }
    }

十、SCSS中的三种循环

  1. for循环

在sass中的@for循环有两种方式:

① @for $i from <start> through <end>

② @for $i from <start> to <end>

其中$i表示变量,start表示开始值,end表示结束值;

through表示包括end这个数值;to表示不包括end这个数值;

 @for $i from 1 to 3 {
        .item-#{$i} {
            width: 100px;
            height: 100px;
            border : #{$i}px solid #f00;
        }
    }
//最终编译为:
.item-1 {
            width: 100px;
            height: 100px;
            border : 1px solid #f00;
        }
.item-2 {
            width: 100px;
            height: 100px;
            border : 2px solid #f00;
        }
@for $i from 1 through 3 {
        .item-#{$i} {
            width: 100px;
            height: 100px;
            border : #{$i}px solid #f00;
        }
    }
//最终编译为:
.item-1 {
            width: 100px;
            height: 100px;
            border : 1px solid #f00;
        }
.item-2 {
            width: 100px;
            height: 100px;
            border : 2px solid #f00;
        }
.item-3 {
            width: 100px;
            height: 100px;
            border : 3px solid #f00;
        }

2.while循环

只要@while后面的条件为true就会执行,直到表达式值为false时停止循环;

    $m : 2;

    @while $m >0 {
        .item-#{$m} {
            width: 100px * $m ;
            height: 100px;
            background-color: aquamarine;
        }

        $m : $m - 1;
    }
//最终编译为:
 .item-#2 {
            width: 100px * 2 ;
            height: 100px;
            background-color: aquamarine;
        }
  .item-#3 {
            width: 100px * 3 ;
            height: 100px;
            background-color: aquamarine;
        }

3.each 语法

    @each $item in item-1,
    item-2 {
        //$item就是遍历了in关键词后面的类名列
        .#{$item} {
            background-color: purple;
        }
    }

    //会编译成 .item-1, .item-2 {background-color:purple;}

十一、自定义函数及使用

使用@function 自定义函数及使用

    @function double($sn ) {
        //SCSS允许自定义函数
        @return $sn * 2;
    }

    .function {
        width: double(200px); //使用在SCSS中自定义的函数
        height: 100px;
        border: 1px solid red;
    }

以上就是本人总结的一些常用的方法功能,有不足之处还请多多指教。

猜你喜欢

转载自blog.csdn.net/m0_71225058/article/details/129396638
今日推荐