1、sass语法

1.1 css的编译模式

  • css --- 普通
  • sass / scss --- 高效 // *********
  • less --- 高效

1.2 sass介绍

  • 来源: ruby语言
  • 基础的版本,后缀名为sass:没有,只能通过缩进来实现 -- 可读性差、难以维护
// css
.box {width: 100px}
// .sass
.box width: 100px; // 据说是这样
  • .scss 后缀 --- 可读性高、便于维护
html { background: red }
// scss语法--嵌套 --- 权重
.box {
color: blue;
.test {
font-size: 20px;
}
}
// ==》
.box {color: blue;}
.box .test { font-size: 20px;}

1.3 如何使用scss

最终需要使用的是css文件,编写的scss文件

转换工具 gulp / webpack / ruby工具 / 编辑器插件

选用gulp来处理scss文件

2、sass用法

2.1 安装 sass 模块

cnpm i gulp-sass -S (推荐)

cnpm i gulp-sass-china -S

2.2 配置处理scss文件gulp的任务

gulp.task('scss2css', () => {
gulp.src('scss/**/*')
.pipe(concat('main.scss')) // 合并scss文件
.pipe(sass()) // 转为css文件
.pipe(gulp.dest('dist/css'))
.pipe(minifyCss()) // 压缩
.pipe(rename('main.min.css'))
.pipe(gulp.dest('dist/css'))
.pipe(connect.reload())
}) // 在watch中监听
gulp.watch('scss/**/*', ['scss2css'])
// 在build中构建
gulp.task('build', ['copy-html', 'copy-css', 'copy-js', 'copy-data', 'copy-assets', 'scss2css'], () => {
console.log('success')
})

3、学习scss 语法

3.1 学习scss的注释语句

  • 单行注释 --- 推荐使用

使用//来完成单行注释---和js类似
并不会编译成css

  • 多行注释

使用的/* */ 来完成多行注释 --- 和 js类似
先编译成css文件,然后再注释掉css文件

3.2 变量

scss给css赋予了动态语言的特性(变量、函数、条件判断、循环....)

scss对于;很敏感,记住写;

3.2.1 单值变量

// scss
$baseColor: red;
.box {
background-color: $baseColor;
} // ==> css
.box {
background-color: red; }

3.2.2 scss做四则运算

// scss
$baseColor: red;
html {
color: $baseColor;
border: 1px solid $baseColor - 80;
background-color: $baseColor / 2;
background: $baseColor + 200;
} // ==> css
html {
color: red;
border: 1px solid #af0000;
background-color: maroon;
background: #ffc8c8; }

3.2.3 多值变量

多值变量使用 nth(变量名, 索引值) 索引值起始值为1 --- 类似于css中 nth-child

还不如写多个单值变量 --- 并不是 --- 假设需要设定一组button按钮的样式

// scss
$baseColor: red blue;
html {
background: nth($baseColor, 1);
color: nth($baseColor, 2);
}
// ==> css
html {
background: red;
color: blue; }

3.2.4 复杂变量 - 循环

// scss
$list: (top 30px) (right 30px) (bottom 10px) (left 40px);
@each $name, $value in $list{
.box-#{$name} {
width: $value;
}
} // ==>
.box-top {
width: 30px; } .box-right {
width: 30px; } .box-bottom {
width: 10px; } .box-left {
width: 40px; }
// scss
$headers: (h1: 32px, h2: 20px, h3: 14px);
@each $key, $value in $headers {
#{$key} {
font-size: $value;
}
}
// ==> css
h1 {
font-size: 32px; } h2 {
font-size: 20px; } h3 {
font-size: 14px; }

3.3 scss嵌套

// scss
html {
font-size: 12px;
body {
background: #f66;
header {
width: 100%;
height: 40px;
nav {
background-color: #00f;
}
}
section {
width: 100%;
min-height: 500px;
}
footer {
width: 100%;
height: 60px;
}
}
}
// ==> css
html {
font-size: 12px; }
html body {
background: #f66; }
html body header {
width: 100%;
height: 40px; }
html body header nav {
background-color: #00f; }
html body section {
width: 100%;
min-height: 500px; }
html body footer {
width: 100%;
height: 60px; }

3.4 mixin 混入

  • 无参数
// scss
@mixin marginCenter {
margin: 0 auto;
} .container {
width: 1000px;
min-height: 600px;
// margin: 0 auto;
@include marginCenter();
} // ==> css
.container {
width: 1000px;
min-height: 600px;
margin: 0 auto; }
  • 有参数
// scss
@mixin margin($top, $right, $bottom, $left) {
margin: $top $right $bottom $left;
}
.container {
@include margin(10px, 10px, 20px, 20px);
} // ==> css
.container {
margin: 10px 10px 20px 20px; }
  • 解决兼容问题
//scss
@mixin flexbox {
display:-webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
} .nav {
ul {
@include flexbox();
li{
color: #333;
}
}
}
footer {
ul {
@include flexbox();
li{
font-size: 14px;
}
}
} // ==> css
.nav ul {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex; }
.nav ul li {
color: #333; } footer ul {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex; }
footer ul li {
font-size: 14px; }
  • 混入 默认参数
// scss
@mixin opacity($val: 1) {
opacity: $val;
}
.box {
@include opacity();
}
.box1 {
@include opacity(0.5);
}
// ==> css
.box {
opacity: 1; } .box1 {
opacity: 0.5; }

3.5 扩展 / 继承

// scss
.active {
background-color: #f66;
color: #fff;
}
.success {
// background-color: #f66;
// color: #fff;
@extend .active;
font-size: 30px;
}
// ==> css
.active, .success {
background-color: #f66;
color: #fff; } .success {
font-size: 30px; }

3.6 函数

// scss
@function dark($color, $val) {
@return $color - $val;
}
@function light($color, $val) {
@return $color + $val;
}
.text {
color: dark(red, 200);
}
.text1 {
color: light(red, 200);
}
// ==>
.text {
color: #370000; } .text1 {
color: #ffc8c8; }

3.7 条件判断

// scss
// @mixin flex($val: 1) {
// box-flex:$val;
// -webkit-box-flex:$val;
// -moz-box-flex:$val;
// flex:$val;
// -webkit-flex:$val;
// } @mixin flex($val) {
@if $val == auto {
box-flex:1;
-webkit-box-flex:1;
-moz-box-flex:1;
flex:1;
-webkit-flex:1;
} @else {
box-flex:$val;
-webkit-box-flex:$val;
-moz-box-flex:$val;
flex:$val;
-webkit-flex:$val;
}
} .test {
@include flex(auto);
} li {
@include flex(3);
}
// ==> css
.test {
box-flex: 1;
-webkit-box-flex: 1;
-moz-box-flex: 1;
flex: 1;
-webkit-flex: 1; } li {
box-flex: 3;
-webkit-box-flex: 3;
-moz-box-flex: 3;
flex: 3;
-webkit-flex: 3; }

3.8 导入另一个scss文件

// val.scss 变量
$baseColor: red;
$baseFontSize: 12px;
// base.scss 混入
@mixin flex {
flex: 1
}
// test.scss 应用
@import 'val.scss';
@import 'base.scss'; .box {
@include flex();
font-size: $baseFontSize;
} // ==》 css
.box {
flex: 1;
font-size: 12px; }
```0

sass的语法及其用法的更多相关文章

  1. sass 基本语法

    sass语法 文件后缀名 sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号:另一种就是我们这里使用的scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号. 而本教程 ...

  2. ES6语法 promise用法

    ES6语法 promise用法 function doSomething(){ return new Promise((resolve,reject)=>{ resolve('jjjj');// ...

  3. sass高级语法的补充

    1. 继承 2.混入 3.函数 我这篇博客需要点基础才能看懂, 但我这篇博客是对上一篇的 sass高级语法 的补充 从这方面来看也无所谓了

  4. sass高级语法

    github地址:https://github.com/lily1010/sass/tree/master/course03 用到的sass语法是: sass --watch test.scss:te ...

  5. sass笔记-2|Sass基础语法之让样式表更具条理性和可读性

    这一篇主要详述保持sass条理性和可读性的3个最基本方法--嵌套.导入和注释. 零. 变量 变量本身的作用是为了保持属性值的可维护性,把所有需要维护的属性值放在同一个地方,快速更改,处处生效,可谓售后 ...

  6. sass初级语法

    github地址:https://github.com/lily1010/sass/tree/master/course01 用到的sass语法是: sass --watch test.scss:te ...

  7. sass中级语法

    github地址:https://github.com/lily1010/sass/tree/master/course02 用到的sass语法是: sass --watch test.scss:te ...

  8. CSS语法与用法小字典

    前言:这是上学时期对CSS学习的整理,一直没见过光,由于不是专门做前端开发的,难免写不到重点,但对于看懂CSS,和掌握一些基本的用法,熟悉里面的门路还是大有裨益的.由于是从word中贴过来的,排版和格 ...

  9. Sass基础语法

    Sass是CSS3语言的扩展,在CSS的基础之上添加了新特性和语法,能省事地写出更好的样式表.Sass引擎是基于Ruby的. 导入Sass文件: @import "colors" ...

随机推荐

  1. MySQL数据库使用xtrabackup备份实现小例子

    关于MySQL数据库的备份的工具和方式也比较多,本文只简单介绍一些我司一个平台的备份方案.Xtrabackup是由percona开源的免费数据库热备份软件,但是只能对InnoDB数据库和XtraDB存 ...

  2. 关于.net中使用reportview所需注意

    参考文章链接:http://www.cnblogs.com/watercold/p/5258608.html 这段时间在做一个winform的小项目时,发现使用.net中的ReportViewer插件 ...

  3. 《YC创业营:硅谷顶级创业孵化器如何改变世界》:YC2011批量天使投资记录 三星推荐

    这个YC创业营是一个硅谷的天使投资基金,每年两次批量投资创业公司.本书说的是2011年YC批量选择了64个创业团队,让他们集中到硅谷办公3个月,给他们创业指导,帮他们找A轮投资. YC创始人偏爱25岁 ...

  4. 莫比乌斯反演/线性筛/积性函数/杜教筛/min25筛 学习笔记

    最近重新系统地学了下这几个知识点,以前没发现他们的联系,这次总结一下. 莫比乌斯反演入门:https://blog.csdn.net/litble/article/details/72804050 线 ...

  5. maven 配置自动本地/线上不同配置自动打包

    工程结构:在resource下新建开发,线上不同文件夹存放不同配置文件 pom.xml配置文件 <!-- maven配置不同环境打包 --> <build> <plugi ...

  6. hdu 4235 容斥原理模板题

    题目大意: 输入样例个数T,每个样例输入三个数a,b,n,求[a,b]之间与n互素的个数 基本思路: 互斥,想想这个:AUBUC=A+B+C-A∩B-A∩C-B∩C+A∩B∩C fac存的是n的素因数 ...

  7. IBM和DoE推出世界上最快的超级计算机

    IBM和美国能源部的橡树岭国家实验室今天发布了该部门最新的超级计算机Summit.IBM声称峰会目前是世界上“最强大,最聪明的科学超级计算机”,其峰值性能每秒高达20万亿次.当新的榜单在本月晚些时候发 ...

  8. 验证码生成(servlet)

    一 效果如下: 二 java 代码如下: import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import j ...

  9. 提高wifi速度的设置办法

    系列的提高wifi速度的设置办法 在DNS一栏有你们家的地址,在你们家的地址前输入“114.114.114.114”并以“,”结尾(注意:要用英文输入法哦.) 设置完后点击左上角的“无线局域网”回到初 ...

  10. pgrep,pidof工具的使用

    博客pgrep,pidof工具的使用 最灵活:ps 选项 | 其它命令 按预定义的模式:pgreppgrep [options] pattern-u uid: effective user,生效者-U ...