scss 常用语法

点击查看 sass 官方文档


1.编译

初学可以在atom 中编译

  1. 安装命令 gem install sass
  2. atom中安装atom-sass ,mac 中“control+option+c”,windows中“Alt + Ctrl + c” 监控修改的样式文件;

在终端通过指令控制

  1. sass --watch sass文件夹名:css文件夹名 --style 编译后的格式
  2. sass --watch 单个scss文件名称:css文件名称 --style 编译后的格式
  3. "1,2"中的文件夹或者文件名称路径不能出错
通过终端输出的4种格式选择:
(1)nested

Sass 默认的输出格式,能够清晰反映 CSS 与 HTML 的结构关系。选择器与属性等单独占用一行,缩进量与 Sass 文件中一致,每行的缩进量反映了其在嵌套规则内的层数。


#main {
  color: #fff;
  background-color: #000; }
  #main p {
    width: 10em; }

.huge {
  font-size: 10em;
  font-weight: bold;
  text-decoration: underline; }
(2)expanded

Expanded 输出更像是手写的样式,选择器、属性等各占用一行,属性根据选择器缩进,而选择器不做任何缩进。

#main {
  color: #fff;
  background-color: #000;
}
#main p {
  width: 10em;
}

.huge {
  font-size: 10em;
  font-weight: bold;
  text-decoration: underline;
}
(3)compact

Compact 输出方式比起上面两种占用的空间更少,每条 CSS 规则只占一行,包含其下的所有属性。嵌套过的选择器在输出时没有空行,不嵌套的选择器会输出空白行作为分隔符。

#main { color: #fff; background-color: #000; }
#main p { width: 10em; }

.huge { font-size: 10em; font-weight: bold; text-decoration: underline; }
(4)compressed

Compressed 输出方式删除所有无意义的空格、空白行、以及注释,力求将文件体积压缩到最小,同时也会做出其他调整,比如会自动替换占用空间最小的颜色表达方式。

#main{color:#fff;background-color:#000}#main p{width:10em}.huge{font-size:10em;font-weight:bold;text-decoration:underline}

2.变量

//编译前
$color-white:#fff;

p{
  color: $color-white;
}
//编译后
p {
  color: #fff; }

/*# sourceMappingURL=scss-test.css.map */

3.嵌套

(1) 嵌套普通标签
//编译前
$color-white:#fff;
div{
  height: 100px;
  p{
    color: $color-white;
  }
}
//编译后
div {
  height: 100px; }
  div p {
    color: #fff; }

(2)嵌套伪类:通过"&"实现
//编译前
a {
  color: #fff;
  &:active{
    color: #000;
  }
}
//编译后
a {
  color: #fff; }
  a:active {
    color: #000; }

/*# sourceMappingURL=scss-test.css.map */

(3)在父级嵌套中,使用“&”引用父级
//编译前
.test {
  color: #fff;
  & {
    color:#666;
  }
  & &_ss{
    color: #999;
  }
}

//编译后
.test {
  color: #fff; }
  .test {
    color: #666; }
  .test .test_ss {
    color: #999; }
/*# sourceMappingURL=scss-test.css.map */
(4)嵌套属性
//编译前
div{
  font:{size: 16px;
        weight:400;
        family:sans-serif;
  }
  border:2px solid #999{
    left:4px;
    right:4px;
  }
}

//编译后
div {
  font-size: 16px;
  font-weight: 400;
  font-family: sans-serif;
  border: 2px solid #999;
    border-left: 4px;
    border-right: 4px; }

/*# sourceMappingURL=scss-test.css.map */

4.混合:@mixin 和 @include

1.基础
@mixin 名称 {
...
};

//编译前
@mixin test{
  width:100px;
};
div{
  @include test;
}
//编译后
div {
  width: 100px; }

/*# sourceMappingURL=scss-test.css.map */

2.可以传参数
@mixin 名称 (option1,option2...){
...
};

@mixin test($width){
  width:100px;
};
div{
  @include test(100px);
}
//编译后
div {
  width: 100px; }

/*# sourceMappingURL=scss-test.css.map */

3.设置参数默认值
@mixin 名称 (option1:value1,option2:value2,option3,option4...){
...
};

//编译前
@mixin test($width,$height:10px){
  width:100px;
  height:$height;
};
div{
  @include test(100px);
}
//编译后
div {
  width: 100px;
  height: 10px; }
/*# sourceMappingURL=scss-test.css.map */

5.函数(functions)

Sass 函数官网地址

(1)sass自带函数(更多自带方法请查看官网)
//编译前
.div1{
  width: max(10px,20px,40px);
}
.div2{
  height: min(10px,20px,40px);
}
.div3{
  height: ceil(10.1px);
}
.div4{
  height: floor(10.1px);
}
//编译后.div1 {
  width: 40px; }

.div2 {
  height: 10px; }

.div3 {
  height: 11px; }

.div4 {
  height: 10px; }

/*# sourceMappingURL=style.css.map */

(2)自定义函数

语法:
@function 函数名(参数1,参数2){
...
}

//编译前
@function addWidth($width1,$width2){
  @return $width1+$width2;
}
div{
  width:addWidth(100px,20px);
}
//编译后
div {
  width: 120px; }

/*# sourceMappingURL=scss-test.css.map */

(3)自定义函数取list颜色值
/*!
 * 配置样式
 */
$color_list:("red":"#ff5050","white":"#fff");

/**
 * 获取颜色
 */
@function get_color($key){
    @return map-get($color_list,$key);
};
//使用方法
div{
    color: get_color(red);
}
//编译后
div{
  color:#ff5050;
}

6.继承扩展:@extend

@extend 会继承指定元素的所有样式,包括子元素的所有样式

//编译前
.test1{
  width: 100px;
}
.test1 p{
  color: #999;
}
.test2 {
  @extend .test1;
  height: 10px;
}

//编译后
.test1, .test2 {
  width: 100px; }

//.test2也继承了.test1 的子元素p的样式
.test1 p, .test2 p {
  color: #999; }

.test2 {
  height: 10px; }

/*# sourceMappingURL=scss-test.css.map */

7.导入样式:@import

将多个文件中的样式导入到一个文件,减少http请求次数;
每个需要import的文件称为partials,文件需要以下划线“_”开头,如"_color.scss",以“_”开头的文件不会编译生产对应的css文件;

//编译前
//_color.scss 文件内容:
.color-blue{
  color: blue;
};
//style.scss 文件内容:
@import 'color';
//编译后
//不生成对应的_color.css

//style.css 文件
.color-blue {
  color: blue; }

/*# sourceMappingURL=style.css.map */

8.注释 :Comment

(1)多行注释

会出现在编译后的css文件中

/*
 * 多行注释
 */
(2)单行注释

不会出现在编译后的css文件中

//单行注释
(3)多行强制注释

会出现在编译后的css文件中,即使文件压缩也会保留

 /*!
  * 多行强制注释
  */

9.SassScript 支持 6 种主要的数据类型:

数字,1, 2, 13, 10px //"number"
字符串,有引号字符串与无引号字符串,"foo", 'bar', baz//"string"
颜色,blue, #04a3f9, rgba(255,0,0,0.5)//"color"
布尔型,true, false//"bool"
空值,null//"null"
数组 (list),用空格或逗号作分隔符,1.5em 1em 0 2em, Helvetica, Arial, sans-serif//"list "
maps, 相当于 JavaScript 的 object,(key1: value1, key2: value2)
image.png

11.基础运算

(1)加:+
//编译前
.div1{
  width: 10px+10px;
}
.div2{
  width: 10px+10;
}
//编译后
.div1 {
  width: 20px; }

.div2 {
  width: 20px; }

/*# sourceMappingURL=style.css.map */

(2)减:-
//编译前
.div1{
  width: 10px-5px;
}
.div2{
  width: 10px-5;
}

//编译后
.div1 {
  width: 5px; }

.div2 {
  width: 5px; }

/*# sourceMappingURL=style.css.map */

(3)乘:*
//编译前
.div1{
  //乘法计算的时候单位只能有一个,下面 10px*1px报错
  width: 10px*1px;
}
.div2{
  width: 10px*2;
}
//编译后
.div1{
  //报错
  width: 10px*px;
}
.div2 {
  width: 20px; }

/*# sourceMappingURL=style.css.map */

(4)除:/
//编译前

.div1{
  //不正确
  width: 10px/2;
}
.div2{
  //不正确
  width: 10px/2px;
}
.div3{
  //不正确
  width: (10px/2px);
}
.div4{
 //正确
  width: (10px/2);
}
//编译后
.div1 {
  width: 10px/2; }

.div2 {
  width: 10px/2px; }

.div3 {
  width: 5; }

.div4 {
  width: 5px; }

/*# sourceMappingURL=style.css.map */

12.插值语句

语法:
#{}

//编译前
$height:10px;
$name:height;
/*
 * @author:#{$name}
 */
.div-#{$name}{
  #{$name}: #{$height};
};

//编译后
/*
 * @author:height
 */
.div-height {
  height: 10px; }

/*# sourceMappingURL=style.css.map */

更多资源请到sass官网查看

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

推荐阅读更多精彩内容