sass的语法及其用法
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的语法及其用法的更多相关文章
- sass 基本语法
		sass语法 文件后缀名 sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号:另一种就是我们这里使用的scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号. 而本教程 ... 
- ES6语法 promise用法
		ES6语法 promise用法 function doSomething(){ return new Promise((resolve,reject)=>{ resolve('jjjj');// ... 
- sass高级语法的补充
		1. 继承 2.混入 3.函数 我这篇博客需要点基础才能看懂, 但我这篇博客是对上一篇的 sass高级语法 的补充 从这方面来看也无所谓了 
- sass高级语法
		github地址:https://github.com/lily1010/sass/tree/master/course03 用到的sass语法是: sass --watch test.scss:te ... 
- sass笔记-2|Sass基础语法之让样式表更具条理性和可读性
		这一篇主要详述保持sass条理性和可读性的3个最基本方法--嵌套.导入和注释. 零. 变量 变量本身的作用是为了保持属性值的可维护性,把所有需要维护的属性值放在同一个地方,快速更改,处处生效,可谓售后 ... 
- sass初级语法
		github地址:https://github.com/lily1010/sass/tree/master/course01 用到的sass语法是: sass --watch test.scss:te ... 
- sass中级语法
		github地址:https://github.com/lily1010/sass/tree/master/course02 用到的sass语法是: sass --watch test.scss:te ... 
- CSS语法与用法小字典
		前言:这是上学时期对CSS学习的整理,一直没见过光,由于不是专门做前端开发的,难免写不到重点,但对于看懂CSS,和掌握一些基本的用法,熟悉里面的门路还是大有裨益的.由于是从word中贴过来的,排版和格 ... 
- Sass基础语法
		Sass是CSS3语言的扩展,在CSS的基础之上添加了新特性和语法,能省事地写出更好的样式表.Sass引擎是基于Ruby的. 导入Sass文件: @import "colors" ... 
随机推荐
- 北京太速科技有限公司 layout 事业部
			涵盖领域设计能力 ·通信板卡:PCI/PCIE/CPCI/VPX/光通信/无线通信/射频雷达/显卡 1.最小线宽:2MIL·主板服务器:电脑主板/交换机/服 ... 
- python关键字global和nonlocal总结
			函数中使用全局变量 a = 100 b = 200 def func(): def sub(): return b return a + b + sub() 执行fun()后返回值为:500 a, b ... 
- foreach与正常for循环效率对比
			foreach foreach编译成字节码之后,使用的是迭代器实现的. foreach特点: 无须获取容器大小 需要创建额外的迭代器变量 遍历期间得到的是对象,没有索引位置信息,因此不能进行赋值操作. ... 
- Go 迭代切片
			迭代切片有两种方式: 1. 使用 for range 迭代切片 // 其长度和容量都是 4 个元素 slice := [], , , } // 迭代每一个元素,并显示其值 for index, v ... 
- MySQL-其它整理
			来自:http://www.w3school.com.cn/sql/sql_server.asp 一:基本操作 1)插入 INSERT INTO 表名称 VALUES (值1, 值2,....): I ... 
- 【C++11新特性】 C++11智能指针之shared_ptr
			C++中的智能指针首先出现在“准”标准库boost中.随着使用的人越来越多,为了让开发人员更方便.更安全的使用动态内存,C++11也引入了智能指针来管理动态对象.在新标准中,主要提供了shared_p ... 
- CNN笔记:通俗理解卷积神经网络
			CNN笔记:通俗理解卷积神经网络 2016年07月02日 22:14:50 v_JULY_v 阅读数 250368更多 分类专栏: 30.Machine L & Deep Learning 机 ... 
- shell脚本学习 (9) 提取开头或结尾的几行
			1 提取开头的n行 用head awk或者 sed实现 do.txt sed 1q do.txt awk 'FNR <= 1' do.txt do.txt文件 2 显示行尾的几行 用tail - ... 
- 540D - Bad Luck Island(概率DP)
			原题链接:http://codeforces.com/problemset/problem/540/D 题意:给你石头.剪刀.布的数量,它们之间的石头能干掉剪刀,剪刀能干掉布,布能干掉石头,问最后石头 ... 
- vue项目打包之后原本好的样式变得不好了的原因分析
			这个主要是打包的过程将所有的css文件进行归类压缩,导致原先其他文件里的样式对当前的产生了影响,应该有同样的类名了.怎么改?要么改类名,要么用scope,scss的写法. 
