sass使用笔记_html/css_WEB-ITnose

sass(syntactically awesome style sheets)是一个css预处理器,提供了许多便利的写法。sass坚持了dry(don`t repeat yourself)的原则,它可以提高css的开发效率,并使css更利于维护。

1、安装

安装gulp-sass插件安装命令如下

  1. npm install gulp-sass --save-dev

登录后复制

2、使用

sass有两种后缀文件名.sass和.scss

使用.sass的时候不能使用大括号,使用回车和至少两个空格来区分选择器和规则

示例:

  1. p color:#f00;b background:#ddd;

登录后复制

使用.scss时,基本和平时写css差不多,使用大括号来区分选择器和规则。正因为scss可以兼容css,更符合我们平常的书写习惯,所以一般我们都采用scss为后缀名。

立即学习“前端免费学习笔记(深入)”;

示例:

  1. p{ color:#f00;}b{ background:#ddd;}

登录后复制

gulp-sass的使用

  1. var gulp = require('gulp');var gulp-sass = require('gulp-sass');gulp.task('sass',function(){ gulp.src('./sass/**/*.scss') .pipe(sass(outputStyle:'compressed')) .pipe(gulp.dest('./css'));});

登录后复制

以上为gulp-sass的基本用法,即引用gulp和gulp-sass插件,然后读取scss文件进行编译,输出格式为compressed,并将编译成功的css文件输出到css文件夹。

欲了解更多关于gulp-sass插件的用法,请点击这里跳转

3、基本用法

3.1 变量

所有变量以$开头,sass使用冒号(:)来定义一个变量。

  1. $blue:#1875e7;div{ color:$blue;}

登录后复制

以上代码将被编译成

  1. div{color:#1875e7;}

登录后复制

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

  1. $side:left; div{ border-#{side}-radius:5px;}

登录后复制

以上代码将被编译成

  1. div{border-left-radius:5px;}

登录后复制

3.2计算功能

sass允许在代码中使用算式。sass中的算术操作符有:

加(+) 减(-) 乘(*) 除(/) 取余(%)

注意上面的操作符只能用于单位相同的数值运算。

  1. h2{ font-size:5px+2em;//错误!!!编译报错 font-size:5px+2;//7px}

登录后复制

此外,两个相同单位的数值相乘无法生成有效的css

  1. h2{font-size:5px*2px;}//invalid css

登录后复制

/操作符本身就是css简写语法的一部分如:font:16px/24px Arial;但是sass重载了这个运算符,用于执行除法操作,下面让我们看它是如何解析的:

  1. h2{ //不执行除法操作,原样输出 font-size:16px/24px; //使用差值语法之后,原样输出 font-size:#{$base-size}/#{$line-height}; //使用括号包裹之后,执行除法操作 font-size:(16px/24px); //使用变量,执行除法操作 font-size:$base-size/$line-height; //调用函数,执行除法操作 opacity:random(4)/5; //使用算术操作符,执行除法操作 padding-right:2px/4px+3px;}

登录后复制

操作符的优先级:

括号优先级最高 乘法,除法优先于加法,减法

写一个简单的计算示例:

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

登录后复制

以上代码将被编译成

  1. body{margin:7px;top:150px;right:20%;}

登录后复制

3.3嵌套

就是我写代码是最最常用的用法ps:属性也可以嵌套,比如:

  1. p{ border:{ color:red; }}

登录后复制

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

3.4注释

sass中有两种注释

  1. //......(编译后被省略)/*......*/(保留到编译后)

登录后复制

4、代码的重用

4、1继承

sass允许一个选择器继承另一个选择器

  1. .class1{}.class2{ @extend .class1; .......}

登录后复制

4.2 Mixin

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

  1. @mixin left{ float:left; margin-left:10px;}

登录后复制

使用@include命令,调用mixin

  1. div{ @include left}

登录后复制

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

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

登录后复制

使用的时候加入参数

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

登录后复制

4.3 颜色函数

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

  1. lighten(#ccc,10%);darken(#ccc,10%);grayscale(#ccc);complement(#ccc);

登录后复制

4.4插入文件

@import命令,插入外部文件@import “……”;@import可以导入css文件,也可以导入sass文件导入css文件,仍是以@import存在,这种方式在css中是不推荐使用的,因为,@import引用的CSS会等到页面全部被下载完再被加载。所以有时候浏览@import加载CSS的页面时开始会没有样式(就是闪烁),网速慢的时候还挺明显。导入sass文件的时候,在编译的时候实际是把两个sass文件合并,编译成一个css文件。

5、高级用法

5、1条件语句

@if…@else….

  1. @mixin txt($weight){ @if $weight == bold {font-weight:bold;} @else if $weight == light {font-weight:100;} @else if $weight == heavy {font-weight:900;} @else {font-size:normal;}}.txt1{ @include txt(bold); }.txt2{ @include txt(light); }.txt3{ @include txt(heavy); }

登录后复制

以上代码将被编译成:

  1. .txt1{font-weight:blod;}.txt2{font-weight:100;}.txt3{font-weight:900;}

登录后复制

5、2循环语句

@for@for有两种使用方式:from start to end,遍历范围[start,end-1]from start through end,遍历范围[start,end]

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

登录后复制

这段sass代码会被编译成

  1. .border-1{border:1px solid blue;}.border-2{border:2px solid blue;}.border-3{border:3px solid blue;}.border-4{border:4px solid blue;}.border-5{border:5px solid blue;}.border-6{border:6px solid blue;}.border-7{border:7px solid blue;}.border-8{border:8px solid blue;}.border-9{border:9px solid blue;}

登录后复制

@while

  1. $i:1; @while $i

    以上代码将被编译成

    .item-1 {width: 2em; }.item-2 {width: 4em; }.item-3 {width: 6em; }.item-4 {width: 8em; }
  2. 登录后复制

  3. @each@each指令同样可以用于循环输出,和@for的区别在于,@each是通过遍历list或者map实现循环输出的。

  4.  @each $member in a,b,c,d{    .#{$member}{        background-image:url("/images/#{$member}.jpg");    }}
  5. 登录后复制

  6. 以上代码将被编译成

  7. .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");}
  8. 登录后复制

  9. 53自定义函数

  10. sass允许用户自定义函数

  11. @function double($n){    @return $n*2;}div{    width:double(5px);}
  12. 登录后复制

  13. 以上代码将被编译成

  14. div{width:10px}
  15. 登录后复制

  16. 在我们的项目中经常会被用来计算百分比,或者根据html元素的font-size大小来计算rem比如

  17. @function to_rem($px){    @return $px/50 + rem;}.a{width:to_rem(30);}
  18. 登录后复制

  19. 以上代码将被编译成:

  20. .a{width:0.6rem}
  21. 登录后复制

  22. 本文整理自网络及《sasscompass实战》,之后将继续完善更新。参考文章:Sass的表达式和控制命令

  23.  
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
编程技术

CSS3面包屑导航和多步骤指示_html/css_WEB-ITnose

2025-3-29 12:56:45

编程技术

JS点击灯泡点亮或熄灭的网页特效_html/css_WEB-ITnose

2025-3-29 12:56:57

0 条回复 A文章作者 M管理员
欢迎您,新朋友,感谢参与互动!
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
私信列表
搜索