博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS预处理器-Sass
阅读量:6334 次
发布时间:2019-06-22

本文共 3469 字,大约阅读时间需要 11 分钟。

hot3.png

CSS预处理器-Sass

1、简介

Sass是一款前端CSS框架,它扩展了CSS3,增加了规则、变量、混入、选择器、继承等等特性。SASS是一种CSS的开发工具,生成良好格式化的CSS代码,并且还提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护。

2、安装

SASS是Ruby语言写的,但是两者的语法没有关系。不懂Ruby,照样使用。只是必须先安装Ruby,然后再安装SASS。

如果已经安装好了Ruby,就可以在命令行直接输入下面的命令:

1
gem install sass

然后,就可以使用了。

3、使用

SASS文件就是普通的文本文件,里面可以直接使用CSS语法。文件后缀名是.scss,意思为Sassy CSS。

下面的命令,可以在屏幕上显示.scss文件转化的css代码。我们假设文件名为beyondweb。

1
sass beyondweb.scss

如果要将显示结果保存成文件,后面再跟一个.css文件名。

1
sass beyondweb.scss beyondweb.css

SASS提供四种编译风格可供选择:

nested:嵌套缩进的css代码,它是默认值

expanded:没有缩进的、扩展的css代码

compact:简洁格式的css代码

compressed:压缩后的css代码

生产环境当中,一般使用最后一个选项

1
sass --style compressed beyondweb.sass beyondweb.css

我们也可以让SASS监听某个文件或目录,一旦源文件有变动,就自动生成编译后的版本

1
2
3
4
// watch a file
sass --watch input.scss:output.css
// watch a directory
sass --watch app/sass:public/stylesheets

4、基本用法

变量:SASS允许使用变量,所有变量以$开头

1
2
3
4
$    
red    
:    
#f00    
; 
div {
        
color : $    
red    
;
}

如果变量需要镶嵌在字符串之中,就必须需要写在#{}之中

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

计算功能:SASS允许在代码中使用算式

1
2
3
4
5
body {
      
margin    
: (    
10px    
/    
2    
);
      
top    
:    
50px    
+    
30px    
;
        
right    
: $var *    
10%    
;
}

嵌套:SASS允许选择器嵌套,比如,下面的CSS代码

1
2
3
div h    
1    
{
        
color    
:    
#f00    
;
}

可以写成:

1
2
3
4
5
div {
        
h    
1    
{
            
color    
:    
#f00    
;
        
}
}

属性也可以嵌套,比如border-color属性,可以写成:

1
2
3
4
5
div {
        
border    
: {
            
color    
:    
#f00    
;
        
}
}

注意,border后面必须加上冒号。

在嵌套的代码块内,可以使用$引用父元素。比如a:hover伪类,可以写成:

1
2
3
a {
        
&:hover {    
color    
:    
#f00    
; }
}

注释:SASS共有两种注释风格。

标准的CSS注释 /* comment */ ,会保留到编译后的文件。

单行注释 // comment,只保留在SASS源文件中,编译后被省略。

在/*后面加一个感叹号,表示这是"重要注释"。即使是压缩模式编译,也会保留这行注释,通常可以用于声明版权信息。

1
2
3
4
/*!
        
重要注释!
        
BeyondWeb.cn
*/

5、代码重用

继承:SASS允许一个选择器,继承另一个选择器。比如,现有class1:

1
2
3
.class    
1    
{
        
border    
:    
1px    
solid    
#f00    
;
}

class2要继承class1,就要使用@extend命令:

1
2
3
4
.class    
2    
{
        
@extend .class    
1    
;
        
font-size    
:    
120%    
;
}

Mixin:Mixin有点像C语言的宏(macro),是可以重用的代码块,使用@mixin命令,定义一个代码块。

1
2
3
4
@mixin    
left    
{
        
float    
:    
left    
;
        
margin-left    
:    
20px    
;
}

使用@include命令,调用这个mixin:

1
2
3
div {
        
@include    
left    
;
}

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

1
2
3
4
@mixin    
left    
($value:    
10px    
) {
        
float    
:    
left    
;
        
margin-right    
: $value;
}

使用的时候,可以根据需要传入参数:

1
2
3
div {
        
@include    
left    
(    
20px    
);
}

下面是一个mixin的实例,用来生成浏览器前缀:

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

使用的时候,可以像下面这样调用:

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

颜色函数:SASS提供了一些内置的颜色函数,以便生成系列颜色:

1
2
3
4
lighten(    
#cc3    
,    
10%    
) //    
#d6d65c
darken(    
#cc3    
,    
10%    
) //    
#a3a329
grayscale(    
#cc3    
) //    
#808080
complement(    
#cc3    
) //    
#33c

导入文件:@import命令,用来插入外部文件

1
@import    
"path/beyondweb.scss"    
;

如果插入的是.css文件,则等同于css的import命令

1
@import    
"base.css"    
;

6、条件语句与自定义函数

if语句

@if可以用来判断:

1
2
3
4
p {
        
@if    
1    
+    
1    
==    
2    
{    
border    
:    
1px    
solid    
; }
        
@if    
5    
<    
3    
{    
border    
:    
2px    
dotted    
; }
}

配套的还有@else命令:

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

循环语句

SASS支持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命令,作用与for类似:

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

自定义函数:SASS允许用户编写自己的函数。

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

Ok,以上就是关于CSS预处理器-Sass的一个简单的介绍及使用方法的总结。但然还很不全面,更多内容请关注

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:

转载于:https://my.oschina.net/guoxin2014/blog/313715

你可能感兴趣的文章
R学习笔记 第五篇:字符串操作
查看>>
在Mac OS下配置PHP开发环境
查看>>
(转)介绍下Nuget在传统Asp.net项目中的使用
查看>>
C# ArcEngine 实现点击要素高亮并弹出其属性
查看>>
初识GO语言——安装Go语言
查看>>
SDK命令行操作
查看>>
基于Bootstrap的DropDownList的JQuery组件的完善版
查看>>
Hadoop MapReduce编程 API入门系列之分区和合并(十四)
查看>>
并查集的应用之求解无向图中的连接分量个数
查看>>
7个神奇的jQuery 3D插件
查看>>
在线浏览PDF之PDF.JS (附demo)
查看>>
波形捕捉:(3)"捕捉设备"性能
查看>>
AliOS Things lorawanapp应用介绍
查看>>
美国人的网站推广方式千奇百怪
查看>>
java web学习-1
查看>>
用maven+springMVC创建一个项目
查看>>
linux设备驱动第四篇:以oops信息定位代码行为例谈驱动调试方法
查看>>
redis知识点整理
查看>>
Hello World
查看>>
Spring3全注解配置
查看>>