Sass学习

Sass学习

介绍

Sass 有两种语法规则(syntaxes),目前新的语法规则(从 Sass 3开始)被称为 “SCSS”( 时髦的css(Sassy CSS)),它是css3语法的的拓展级,就是说每一个语法正确的CSS3文件也是合法的SCSS文件,SCSS文件使用.scss作为拓展名。第二种语法别成为缩进语法(或者 Sass),它受到了Haml的简洁精炼的启发,它是为了人们可以用和css相近的但是更精简的方式来书写css而诞生的。它没有括号,分号,它使用 行缩进 的方式来指定css 块,虽然sass不是最原始的语法,但是缩进语法将继续被支持,在缩进语法的文件以 .sass 为拓展名。

安装

1.安装rvm

<pre>
1.安装rvm$ curl -L get.rvm.io | bash -s stable
2.装载rvm$ source ~/.rvm/scripts/rvm
3.安装2.3.0版本ruby$ rvm install 2.3.0
4.将2.3.0设为默认$ rvm use 2.3.0 --default
rvm -v 验证是否安装成功
</pre>

2.利用rvm安装ruby

<code>
sudo rvm install ruby
</code>

3.安装sass

<pre>
sudo gem install sass

sass -v 测试是否安装成功
</pre>

4.webStorm配置

在设置页面中,选择Preferences -> Tools -> File Watcher 配置

基础

0.注释

有三种形式:

(1)//comment:该注释只是在.scss源文件中有,编译后的css文件中没有。

(2)/! /:重要注释,任何style的css文件中都会有,一般放置css文件版权说明等信息。

(3)/ /:该注释在compressed的style的css中没有,其他style的css文件都会含有。

1.变量

变量的定义一般以$开头:$name,某个变量的作用域仅限于他们定义的层级以及子层级。

1.1局部变量

sass中局部变量定义与其他语言定义一样,比如:
<pre>
body {
$color:red;
color:$color;
}
</pre>

编译以后:
<pre>
body {
color: red;
}
</pre>

1.2全局变量

如果希望某个在子选择器中定义的变量能够成为全局变量,可以使用!global关键字
<pre>
body {
$color:red !global;
color:$color;
}
</pre>

1.3变量默认值

如果想给定义的变量初始化默认值,可以使用!default关键字
<pre>
$color:red !default;
</pre>

1.4 多值变量

多值变量分为两种形式: 数组和字典

数组:

<pre>
$paddings:5px 10px 5px 10px;
通过nth取其中的某一个值:nth($paddings,1):取padding的第一个值
</pre>

字典:
<pre>
$maps:(color:red, borderColor:blue);
可以通过map_get($maps,boderColor)获取其中某一个key值
</pre>

1.5变量特殊用法

嵌套引用在其他编程语言中即是字符串插值,需要用#{}进行包裹
<pre>
$left:left;
.div1{
border-#{$left}-width:5px;
}
</pre>

在变量定义中,下划线与横线相同,比如:
$text_info === $text-info

2.文件导入

在sass中,定义文件以下划线 “_” 开头 代表部分文件,不会编译出css,这为了表面生成多余css
比如:定义 _part.scss
其中导入使用 @import 'part'

如何区分原生css导入

被导入文件名字以.css结尾

被导入文件是以URL地址

被导入的文件是css的url()值

3.嵌套

3.1选择器嵌套

<pre>
body{
header {
color: red;
}
}
</pre>
编译后结果:
<pre>
body header {
color: red;
}
</pre>

3.2属性嵌套

<pre>
body{
header {
color: red;
}
footer {
background: {
color: green;
size: 20%;
};
}
}
</pre>
编译后结果:
<pre>
body footer {
background-color: green;
background-size: 20%; }
</pre>

3.3引用父选择器 &

<pre>
body{
a {
color: red;
&:hover{
color: green;
}
}
}
</pre>

编译后的结果:
<pre>
body a {
color: red; }
body a:hover {
color: green; }
</pre>

3.4 @at-root ,跳出嵌套
  • 默认@at-root只会跳出选择器嵌套,而不能跳出@media 或 @support;
  • 若要跳出,则需要@at-root(without:media) | @at-root(without:support)
  • 其中还有:all 表示所有 ; rule表示常规css

<pre>
body{

header {
    color: red;

    @at-root .container {
        width: 100px;
    }
}
footer {
    background: {
        color: green;
        size: 20%;
    };


}

}
</pre>

编译后的结果:
<pre>
body header {
color: red; }
.container {
width: 100px; }
body footer {
background-color: green;
background-size: 20%; }
</pre>

3.5 @at-root 与 &混用

<pre>
.text-info {
color: red;
@at-root nav &{
color: blue;
}
}
</pre>

编译后结果:
<pre>
.text-info {
color: red; }
nav .text-info {
color: blue; }
</pre>

4.继承

4.1简单继承

<pre>
.A{
background-color: red;
}
.A1 {
@extend .A;
color: red;
}
</pre>

<pre>
.A, .A1 {
background-color: red; }
.A1 {
color: red; }
</pre>

4.2多继承

在简单基础上,类似于@entend .A,.B;

4.3链型继承

<pre>
.one {
color: red;
}
.two {
@extend .one;
size: 100px;
}
.three{
@extend .two;
border-radius: 10px;
}
</pre>

<pre>
.one, .two, .three {
color: red; }

.two, .three {
size: 100px; }

.three {
border-radius: 10px; }
</pre>

4.4继承局限性
  • 包含选择器 或者 相邻兄弟选择器 不支持
  • 如果继承元素是a,恰巧这个元素a又有hover状态的形式,那么状态hover也会被继承
    <pre>
    a :hover{
    color: red;
    }

.four {
@extend a;
}

</pre>

<pre>
a :hover, .four :hover {
color: red; }

</pre>

4.5继承交叉合并

没有在同一父级下,会产生交叉编译结果
<pre>
.five a{
color: red;
}

.six {
@extend a;
}
</pre>

<pre>
.five a, .five .six {
color: red; }
</pre>

4.6继承的作用域

继承在指令中是有作用域问题的,继承是无法使在指令如(@media)之外的选择器继承的,要是继承就只能写在指令中

4.7特别--占位选择器%

有时候你想继承一个类名,但是并不想再在HTML中使用,就单单想写一个能够继承的类名。尤其是不想让它出现在css样式中。我们可以用占位符来写一些继承的样式(如“%one”),然后再通过@extend继承,这样就可以防止被渲染到CSS的规则集中。

<pre>
.B a%long {
color: red;
}
.C {
@extend %long;
}
</pre>

<pre>
.B a.C {
color: red; }
</pre>

5.进阶

5.1 数据类型

Sass涉及到的数据类型有以下几个:
Number,String,List,Map,Color,Boolean,Null

以上类型基本在实例中见过,不多介绍了,另外存在一些函数查看文档就可以了

5.2变量操作

和其他语言基本类似,不多介绍了

5.3 Mixin

@mixin的调用方式是@include,@include产生的样式是以复制拷贝的方式存在的,而@extend产生的样式是以组合申明的方式存在的
<pre>
@mixin count($color1:red){
color: color1;
}

body{
@include count(#fff)
}

有点#define的赶脚
</pre>
<pre>
body {
color: #fff; }
</pre>

如何设置多值参数呢?
<pre>
@mixin count($color1...){
color: color1;
}
</pre>

@content应用:
<pre>
@mixin header{ #header{ @content; } }
</pre>
<pre>
@include header{ width:1000px; height:200px; .logo{ width:200px; } }
</pre>

5.4函数

<pre>
@function double($width){
@return $width * 2;
}
</pre>

  • @debug,@error,@warn
    用来调试
5.5条件控制

条件关键字如下,没有什么特别的
@if

@for

@while

@each

参考文档

1.Sass文档

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

推荐阅读更多精彩内容

  • 什么是SASS SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变...
    陈小陌丿阅读 459评论 0 0
  • 安装运行 1.下载ruby并安装 2.安装之后打开命令行执行gem命令,检查是否已经安装好 安装完ruby之后,在...
    wshining阅读 698评论 0 1
  • 一、Sass安装(windows版) 1.在 Windows 平台下安装 Ruby 需要先有 Ruby 安装包,可...
    July_EF阅读 707评论 0 0
  • 我来自于广东省廉江的一个小村,1988年出生在一个兄弟姐妹多(1个哥哥四个姐姐)的大家庭,我是排行老六,听说长得胖...
    阿琪艾芘基妮阅读 120评论 0 0
  • 不可否认,现代人遇到的一个普遍问题是每天的事情太多,忙碌了一整天,临睡时盘点发现总是做不完,于是第二天,带着一颗焦...
    小秘来了阅读 459评论 0 5