scss的使用方法

CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行编码工作。
通俗的说,“CSS 预处理器用一种专门的编程语言,进行 Web 页面样式设计,然后再编译成正常的 CSS 文件,以供项目使用。CSS 预处理器为 CSS 增加一些编程的特性,无需考虑浏览器的兼容性问题”,例如你可以在 CSS 中使用变量、简单的逻辑程序、函数(如右侧代码编辑器中就使用了变量$color)等等在编程语言中的一些基本特性,可以让你的 CSS 更加简洁、适应性更强、可读性更佳,更易于代码的维护等诸多好处。

其它 CSS 预处理器语言:
CSS 预处理器技术已经非常的成熟,而且也涌现出了很多种不同的 CSS 预处理器语言,比如说:
Sass(SCSS)
LESS
Stylus
Turbine
Swithch CSS
CSS Cacheer
DT CSS

什么是 Sass?

Sass 官网上是这样描述 Sass 的:
Sass 是一门高于 CSS 的元语言,它能用来清晰地、结构化地描述文件样式,有着比普通 CSS 更加强大的功能。
Sass 能够提供更简洁、更优雅的语法,同时提供多种功能来创建可维护和管理的样式表。

Sass 前世今生:

Sass 是最早的 CSS 预处理语言,有比 LESS 更为强大的功能,不过其一开始的缩进式语法(Sass 老版本语法,后面课程会详细介绍 )并不能被大众接受,不过由于其强大的功能和 Ruby on Rails 的大力推动,还是有很多开发者选择了 Sass。
Sass 是采用 **Ruby **语言编写的一款 CSS 预处理语言,它诞生于2007年,是最大的成熟的 CSS 预处理语言。最初它是为了配合 HAML(一种缩进式 HTML 预编译器)而设计的,因此有着和 HTML 一样的缩进式风格。

为什么早期不如 LESS 普及?

虽然缩进式风格可以有效缩减代码量,强制规范编码风格,但它一方面并不为大多数程序接受,另一方面无法兼容已有的 CSS 代码。这也是 Sass 虽然出现得最早,但远不如 LESS 普及的原因。

sass、scss有什么区别呢?

Sass 和 SCSS 其实是同一种东西,我们平时都称之为 Sass,两者之间不同之处有以下两点:
1、文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名
2、语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),而 SCSS 的语法书写和我们的 CSS 语法书写方式非常类似。

scss的引入方法

1.引入其他 .scss 文件

@import 'index.scss'  

这样的话,文件在编译后,会自动把引入的文件和当前文件合并为一个.scss文件

2.引入其他 .css 文件

@import 'index.css'  

和引入.scss文件不同,这样引入的.css文件在编译后不会和当前文件合并为一个.scss文件,而是继续保持为外链引入方式
3.在vs code 中scss使用方法 vs code 下载扩展名Easy sass 、sass,创建xx.scss,按下ctrl+p 点击相应的scss后缀文件,即可生成css文件并自动编译,在html里面引入css即可

scss注释方法

scss的注释有两种

1.块注释
/*
*/
2.行注释
//

scss变量

scss变量分为3种,以$符号开头,后面紧跟变量名。变量名和变量值之间用冒号:分开

1.常规变量

$key: value;

2.默认变量

$key: value!default;

默认变量是可以被覆盖的,具体覆盖方法如下
$font: 12px;
$font: 14px!default;

3.特殊变量

$fontSize:14px;
font:#{$fontSize}

4.多值变量

多值变量分为list和map两种类型,list类似于js的数组,map类似于对象

嵌套

嵌套分为两种:1.选择器嵌套(目前经常使用的)、2.属性嵌套:不经常使用

选择器嵌套

// scss 文件

ul{
li{
    a{

    }
}
}

//解析为 css 文件

ul{

}  
ul li {

}  
ul li a{

}

//scss 在属性选择器中,&表示父元素选择器

a{
    &:hover{

    }
}

//解析为 css 文件

a{

}
a:hover{

}

属性嵌套

// scss 文件

div{
    border{
        top:{
            width:1px;
        }
        left:{
            width:2px;
        }
    }
}

//解析为 css 文件

div{
    border-top:1px;
    border-left:2px;
  }

混合

@mixin 调用@mixin方法需要使用 @include

// scss 普通混合

@mixin font{
    line-height:30px;
    color: #fff;
    font-weight:900;
}

.footer{
    @include font;
}

// 解析为 css 文件

.footer{
    line-height: 30px;
    color: #fff;
    font-weight:900;
}

// scss 文件

@mixin font($size:12px){  //默认参数 默认12px
    font-size: $size;
}

.footer{
    @include font(16px);
}

继承

使用继承会让该选择器继承指定选择器的所有样式,要使用关键词@extend,后面跟上指定的选择器

// scss文件
.font{
    font-size:14px;
    height: 16px;
}
.footer{
    @extend .font;
    border-width: 2px;
}

//解析问 css 文件

.font, .footer{
    font-size:14px;
    height: 16px;
}
.footer{
    border-width: 2px;
}

站位选择器

%选择器名,通过@extend 去调用,如果不调用,则文件编译后不会出现改该冗余css文件

// scss 文件
%size{
    font-size: 14px;
}
%clear{
    overflow: hidden;
}
div{
    @extend %size;
}
只有 %dir 选择器被调用了,%clear 在编译的时候会被当做冗余文件给过滤掉,不会出现在编译后的.css文件中

函数

sass 内置了很多函数,自己也可以定义函数。以 @function 开始 @return 返回值

//scss 文件
    @function fn($data){
        @return $data/10 + px;
    }

    div{
      font-size: fn(80);
    }

//解析为 css文件
div{
font-size: 8px;
}

其他功能
其他功能包括以下几点

1、运算:对于(数字,颜色,变量)的四则(加减乘除)运算,运算符前后各保留一格空格
2、if判断:@if可以单独使用,也可以配合@else、@else if 一起使用
3、三目运算符:if(true,1px,2px),返回的值是1px,if(false,1px,2px),返回的值是2px
4、for循环,共有两种写法
在 Sass 的 @for 循环中有两种方式:

1、@for $i from <start> through <end>
2、@for $i from <start> to <end>

$i 表示变量
start 表示起始值
end 表示结束值
举例说明

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

编译出来的 CSS:

.item-1 {
  width: 2em;
}
.item-2 {
  width: 4em;
}
.item-3 {
  width: 6em;
}

再来个 to 关键字的例子:

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

编译出来的 CSS:

.item-1 {
  width: 2em;
}
.item-2 {
  width: 4em;
}
//两种写法唯一的区别就是,through包括end这个数,to不包括end这个数。

each循环,@each var in ,list和map分别表示为list和map类型数据。 @eachvar in <list>
项目中经常用到的功能
变量
嵌套
&
函数:用于移动端页面计算rem或者vw最佳
本文参考一网上的一些scss知识,进行了一些总结和举例,那么今天你学会了嘛?! 加油!

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

推荐阅读更多精彩内容