• 主页
  • 归档
  • 分类
  • 照片墙
所有文章 友情链接 关于我

  • 主页
  • 归档
  • 分类
  • 照片墙
  1. 1. 变量
    1. 1.1. 默认变量
  2. 2. 嵌套
    1. 2.1. 选择器嵌套
    2. 2.2. 属性嵌套
  3. 3. 注释
  4. 4. Mixin
  5. 5. 颜色函数
  6. 6. 文件引入
  7. 7. 继承
  8. 8. 流程控制
    1. 8.1. 条件语句
    2. 8.2. 循环语句
  9. 9. 自定义函数

SASS-语法(1)

2017-11-12 19:06:46
总字数 1.1k
预计阅读时间 4 分钟

变量

在scss当中定义变量的语法如下

$变量名 : 变量值;

代码块外部定义的变量可以在全局范围内使用

在代码块内部定义的变量是局部变量
例如

1
2
3
4
5
6
.box {
$color:red;
a{
color:$color;
}
}

如果该变量的值需要嵌入到字符串当中 , 需要加#{ }

1
2
3
4
$side : left;
.box {
border-#{$side}-radius:5px;
}

默认变量

sass的默认变量一般用来设置默认值 , 然后根据需求来进行覆盖
例如

1
2
$a_padding : 20px !default;
$a_padding : 6px;

如果对默认变量的值进行了覆盖 , 那么实际输出的就是覆盖之后的值 , 否则输出的就是默认值

如果是在一个单文件当中 , 并没有必要这样做
默认变量在组件化开发的时候会非常有用

什么时候需要声明变量

  • 该值至少重复出现了两次
  • 该值至少可能会被更新一次
  • 该值所有的表现都与变量有关

嵌套

使用嵌套的方式来编写css代码 , 可以使元素之间的层级关系更清晰 , 代码的可读性更强

选择器嵌套

1
2
3
4
5
div {
h1 {
color :red;
}
}

编译后的结果为

1
2
3
div h1 {
color : red;
}

前面如果加上 >可以作为父子选择器

在嵌套的代码块内 , 可以使用&引用父元素
比如

1
2
3
4
a {
&:hover{color:red;}
&:visited{color:gray;}
}

属性嵌套

有一些复合属性可以使用嵌套的方式来写
比如border

1
2
3
4
5
6
p {
border : {
color:red;
width:2px;
}
}

注意 : border的后面必须要加上冒号

注释

SCSS可以有两种风格的注释
一种是标准的css注释 /* */
编译会保留
另一种是单行注释 // , 编译过程不保留

Mixin

Mixin有点像C语言的宏定义 , 是可以重用的代码块

1
2
3
4
5
6
7
8
9
//使用@mixin命令,定义一个代码块
@mixin left {
float : left;
margin-left : 10px;
}
//使用@include调用这个mixin
.box {
@include left;
}

mixin的强大之处 , 在于可以去指定参数和缺省值

1
2
3
4
5
6
7
@mixin left($value:10px) {
float : left;
margin-left : $value;
}
.box {
@include left(20px);
}

如果引入的时候不传参数 , 则使用缺省值
实例 : 生成浏览器前缀

1
2
3
4
5
6
7
8
9
10
11
12
@mixin rounded($vert, $horz, $radius: 10px) {
 border-#{$vert}-#{$horz}-radius: $radius;
 -moz-border-radius-#{$vert}#{$horz}: $radius;
 -webkit-border-#{$vert}-#{$horz}-radius: $radius;
}

#navbar li {
@include rounded(top,left);
}
#footer {
@include rounded(top,left,5px);
}

颜色函数

颜色函数是基于某个颜色进行的色彩调整
利用这些函数 , 可以很方便完成界面上风格统一的色彩搭配
涉及色彩的部分 , 可以很方便修改 , 完成主题风格的切换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$base_color : chocolate;

@mixin size {
width:200px;
height:100px;
}

.div1 {
@include size;
background:{
color: darken($base_color, 10%);
}
}
.div2 {
@include size;
background:{
color: $base_color;
}
}
.div3 {
@include size;
background:{
color: lighten($base_color, 10%);
}
}

效果图
color_function

常用的颜色函数

  • darken , lighten - 调整亮度 , 变暗/变亮
  • sturate , desaturate - 增加/减小 饱和度
  • adjust-hue - 调整 色相
  • grayscale - 灰度处理
  • complement - 色彩反相

文件引入

使用@import 引入另一个样式文件 , 可以是scss文件 , 也可以是css文件

1
2
@import "path/filename.scss"
@import "path/base.css"

继承

SASS允许一个选择器 , 继承另一个选择器

1
2
3
4
5
6
7
.class1 {
border : 1px solid #ddd;
}
.class2 {
@extend .class1;
font-size : 120%;
}

在编译过后 , 会生成

1
2
3
4
5
6
.class1, .class2 {
border : 1px solid #ddd;
}
.class2 {
font-size:120%;
}

相比于mixin会生成很多重复的代码 , 这种方式能够对代码进行复用 , 有利于提高css解析的效率

流程控制

条件语句

使用@if和@else可以进行判断

1
2
3
4
5
@if lightness($color) > 30% {
 background-color: #000;
} @else {
 background-color: #fff;
}

循环语句

for循环

1
2
3
4
5
@for $i from 1 to 10 {
.border-#{$i} {
border: #{$i}px solid blue;
}
}

while循环

1
2
3
4
5
$i: 6;
@while $i > 0 {
.item-#{$i} { width: 2em * $i; }
$i: $i - 2;
}

each循环 , 类似于迭代器

1
2
3
4
5
@each $member in a, b, c, d {
.#{$member} {
background-image: url("/image/#{$member}.jpg");
}
}

each循环

自定义函数

使用@function可以自定义一个函数

1
2
3
4
5
6
@function double($n) {
@return $n * 2;
}
#sidebar {
width : double(5px);
}

附 : 知识结构梳理
Sass知识结构梳理

  • 前端
  • sass
  • 前端杂烩

扫一扫,分享到微信

SASS-语法(2)
SASS-初见 
© 2024 夏夜梦星辰
鲁ICP备19028444号
Power By Hexo
  • 所有文章
  • 友情链接
  • 关于我
{{searchItem.query}}
标签: 分类:
  • maven
  • 持续集成
  • JMS
  • 线程
  • JavaScript
  • ECMAScript6
  • 单元测试
  • Promise
  • Web Worker
  • 函数
  • prototype
  • 模块化
  • 正则表达式
  • 数据库
  • MongoDB
  • 索引
  • 集群
  • 全文检索
  • flutter
  • dart
  • git
  • 版本控制
  • linux
  • shell
  • docker
  • nginx
  • jenkins
  • opencv
  • vim
  • react
  • react native
  • 前端
  • css
  • HTML5
  • Hexo
  • sass
  • Three.js
  • TypeScript
  • Vue
  • 组件化
  • base64
  • webpack
  • nodejs
  • gulp
  • TensorFlow
  • 机器学习
  • 算法
  • 动态规划
  • 数据结构
  • Java
  • JavaScript
  • MongoDB
  • flutter
  • Git
  • linux
  • react
  • 前端杂烩
  • 男生女生
  • 算法
  • 十年饮冰,难凉热血
  • †少女癌†
  • 猫与向日葵
  • coderfun
  • JENKINS
  • API管理后台
愿你最终能接纳每一面每一种的自己
独自活着便是团圆