SASS指南针

/**配置sass-用gulp自动编译sass变量计算功能嵌套注释代码重用	-继承    -Mixin	-颜色函数插入文件高级用法	-条件语句	-循环语句	-自定义函数 */

一、配置sass-用gulp自动编译sass

SASS是Ruby语言写的,必须安装Ruby,再安装SASS,

基于gulp编写编译sass要安装gulp-sass

npm install gulp-sass --save-dev

gulpfile.js中写两个任务:

  • sass编译任务

  • sass文件自动编译任务

    const gulp = require('gulp');const sass = require('gulp-sass');gulp.task('sass',function () { return gulp.src('scss//*.scss') .pipe(sass()) .pipe(gulp.dest('css'));});gulp.task('watch-sass', function(donw) { gulp.watch('scss//*.scss',gulp.series('sass')); console.log("====== watching sass files... =====");});

这样就完成了sass文件的实时编译了。下面开始sass之旅~

二、变量

所有变量以$开头,如果变量需要镶嵌在字符串之中,就必须需要写在#{}之中

$blue:#1875e7;div {  color: $blue;}$side:left;.rounded {  border-#{$side}-radius:5px;}

对应的css:

div {    color: #1875e7;}.rounded {    border-left-radius: 5px;}

三、计算功能

在sass中使用算式

$var:1;body {  margin: (14px/2);  top: 50px + 100px;  right: $var * 10%;}

对应的css:

body {    margin: 7px;    top: 150px;    right: 10%;}

四、嵌套功能

SASS允许选择器嵌套、属性嵌套、在嵌套代码内,可用&引用父元素

/*选择器嵌套*/div {  h1 {	color: red;  }}/*属性嵌套*/p {  border:{    color:red;  }}/*嵌套代码内,可使用&引用父元素*/a {  &:hover {color:#fff}}

对应的css:

/*选择器嵌套*/div h1 {    color: red;}/*属性嵌套*/p {    border-color: red;}/*嵌套代码内,可使用&引用父元素*/a:hover {    color: #fff;}

五、注释

SASS共有两种注释风格。

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

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

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

/*comment1*/// comment2/*!  comment3 */

css:

/*comment1*//*!  comment3 */

六、代码的重用

6.1 继承

SASS允许一个选择器,继承另一个选择器,比如下面的class2继承了class1,要使用@extend命令:

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

6.2 Mixin

minxin是可以重用的代码块。

  • 使用@mixin命令,定义一个代码块;使用@include命令,调用这个minxin。

  • mixin还可以指定参数和缺省值,使用的时候可以根据需要加入参数

    /mixin定义一个代码块/@mixin left { float: left; margin-left: 10px;}div { @include left;}/mixin可以指定参数和缺省值, 使用的时候可以根据需要加入参数/@mixin right($value: 10px){ float: right; margin-left: $value;}div { @include right;}div2 { @include right(20px);}/用mixin生成浏览器前缀/@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); }

    /mixin定义一个代码块/div { float: left; margin-left: 10px; }/mixin可以指定参数和缺省值, 使用的时候可以根据需要加入参数/div { float: right; margin-left: 10px; }div2 { float: right; margin-left: 20px; }/用mixin生成浏览器前缀/#navbar li {     border-top-left-radius: 10px;     -moz-border-radius-topleft: 10px;     -webkit-border-top-left-radius: 10px; }#footer {     border-top-left-radius: 5px;     -moz-border-radius-topleft: 5px;     -webkit-border-top-left-radius: 5px; }

6.3 颜色函数 - sass中的内置函数

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

内置的意思就是不需要自己去定义。

1div { color: darken(#cc3,10%);} 2 3div { color: #a3a329; }

6.4 插入外部文件

@import用来插入外部文件

1@import "test2";/*在test.scss中引入test2.scss*/ 2 3/*我写在test2.scss中*/.csx { color: red; }

生成后的test.css如下:将test2.scss中写的也生成到了test.css中了

,这个和CSS的 @import引入不一样,css不会将两个文件进行合并处理。

七、高级用法

7.1 条件语句

@if 、@else命令

1/*条件语句*/p { @if 1 + 1 == 2 { border:1px solid; } @else { border: 2px dotted; }} 2 3p {border: 1px solid; }

7.2 循环语句

支持for循环

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

while循环

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

each命令 和for命令类似

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

7.3 自定义函数

1/*自定义函数*/@function double($base) { @return $base * 2;}.sidebar { margin-left: double(5px);} 2 3/*自定义函数*/.sidebar { margin-left: 10px; }

八、注意事项

变量运算时,符号两边要加空格,没加空格,编译就会失败

$a:$a - 2; // - 号两边要有空格

Demo地址:https://github.com/pluscai/blog/tree/master/sass-demo

本文分享自微信公众号 - BUG架构师(pluscai1057756095)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

SASS和LESS等优缺点对比,使用方法总结 (笔记大全)

sass优点:用户多,更容易找到会用scss的开发,更容易找到scss的学习资源;可编程能力比较强,支持函数,列表,对象,判断,循环等;相比less有更多的功能;Bootstrap/Foundation等使用scss;丰富的sass库:Compass/Bourbon;sass缺点:在公司内部安装nodesass会失败,需

SASS基础

特点:1.在css基础上增加特性:变量、嵌套(nesting)、混合(@mixin)、继承(@extend);2.通过函数进行颜色值与属性值的运算;3.提供控制指令等高级功能;4.自定义输出指令;数据类型:Sass和JavaScript语言类似,也具有自己的数据类型,在Sass中包含以下几种数据类型:1\