什么是预处理器?

css预处理器,为css增加一些编程特性,更简洁,更使用,可读性更佳,更利于代码维护。没有浏览器兼容问题。

SCSS:

sass是最早的css预处理语言,scss继承了sass的强大功能。,并在它的基础上增加了新功能,且其语法完全兼容css3。SCSS还能识别大部分css hacks和特定于浏览器的语法,例如:古老的IE filter。由于SCSS是CSS的扩展,因此,所有在css中工作的代码也能在scss中正常工作。

说明:学习scsss没必要去了解sass,忽略就好了。

SCSS基于Ruby语言开发而成,因此安装SCSS前需要安装Ruby。
特别说明:mac下自带Ruby无需再次安装。
window下首先要从官网下载Ruby,然后进行安装。

特别说明:要选中第二个添加到环境变量复选框。
打开命令cmd命令行窗口:ruby -v查看是否安装成功

  1. 安装scss:
npm install sass-loader --save-dev
npm install node-sass --save-dev
  1. 在build文件夹下的webpack.base.conf.js的rules里添加配置
{test:/\.scss$/,
loaders:['style','css','sass']
}
  1. 通过lang=""使用scss
<style lang="scss"></style>

scss语法:

  • 注释
/* */ 在css中显示;
//   在css中不显示;
/* 重要注释 !*/    压缩不会被删除;
  • @imort命令导入外部sass , scss, css 文件;
<style lang="scss">
@import './text.scss';//导入外部文件
</style>
  • 变量的声明
<style lang="scss">
$color:red;//$变量名:变量值;
</style>
  • 默认变量
<style lang="scss">
$color:red!default;//!default 用来设置默认值
$color:purple; //根据需求覆盖默认变量
.father01 {color:$color;
}
</style>
  • 全局变量和局部变量:全局变量是元素外声明的变量,局部变量是在元素里声明的变量,重复声明时局部变量会覆盖全局变量的值;

  • 局部变量值后加上 !global 关键词可以使得局部变量变成全局变量;

$height:200px; //全局变量声明不在大花括号内
$bgcolor:blue;
body {.father01 {  //嵌套width:$width;height:$height;$border:1px solid red; //局部变量是声明在元素内的border: $border;$color:red!global;//使用!global关键字可以局部变量变成全局变量$bgcolor:purple; //全局变量和局部变量名一致时,调用局部变量进行覆盖background-color: $bgcolor;}.father02{corlor:$color;//使用全局变量}
  • 变量嵌套引用:即字符串插值,需要使用 #{} 来进行包裹
$left:left;//使用字符串插值之前必须先声明
.father02 {width: 300px;height:300px;border-#{$left}:2px solid purple;
}
  • 嵌套:选择器嵌套/属性嵌套
nav {//选择器嵌套ul {...}li { ... }a {...}
}.demo {/*===== 属性嵌套 =====*/font: {// 命令空间后带有冒号:  强烈不建议使用!!family: fantasy;size: 30em;weight: bold;}
}
/*===== 相当于如下CSS =====*/
.demo {font-family: fantasy;font-size: 30em;font-weight: bold; }
  • 继承:使用 @extend.类名 继承某个类的所有样式
.container {...
}
.myText {@extend .container; //这里将继承.container类的所有样式...
}
  • ·SCSS占位符 %: 使用% 声明的代码块,如果不被@extend调用的话就不会被编译。编译出来的代码会将相同的代码合并在一起,代码变得十分简洁
%m5 { ...
}
.P1 { @extend %m5;
}
  • 定义可重复使用的代码块并调用:@mixin定义 @include调用
@mixin normalStyle {//使用@mixin命令定义可重复使用的代码块...
}
.container {@include normalStyle;//使用@include 命令引用@mixin定义的代码块
}
  • 混合:在使用@mixin和@include时,传入参数和默认值:用来分组哪些需要复用的css声明
@mixin normalStyle($width,$height,$defaultValue:orange) {width:$width;height:$height;background-color:$defaultValue;
}
.container {@include normalStyle(300px,100px,red);
}
  • scss条件语句
.container {p {@if 1+1<3 {...} @else {...}}
}
  • 循环
//for 循环
@for $i from 1 to 5 {.item-#{$i} {border:#{$i}px solid;}
}
//while 循环
$m:8;
@while $m > 0 {.items-#{$m} {width:2em*$m;}$m:$m - 2 ;
}
//这里可以对$m进行运算 让它每次都减去2
//each 语法
@each $item in class01,class02 { //$item就是遍历了in关键词后面的类名列.#{$item} {background-color:purple;}
}
//会编译成 .class01 , .class02 {background-color:purple;}
  • 使用@function 自定义函数及使用
@function double($sn){ //SCSS允许自定义函数@return $sn*2;
}
.myText {...width:double(200px); //使用在SCSS中自定义的函数
}
  • 可以直接使用SCSS内置的颜色函数
.myText {color:black;&:hover{//以下的lighten()、darken()等是SCSS内置的颜色函数color:lighten(#cc3, 10%); // #d6d65c颜色变浅color:darken(#cc3, 10%); // #a3a329颜色加深color:grayscale(#cc3); // #d6d65ccolor:complement(#cc3); // #a3a329}
}
  • 操作符:+ - * / %
.container { width: 100%; }article[role="main"] {float: left;width: 600px / 960px * 100%;     //相当于  width: 62.5%;
}aside[role="complementary"] {float: right;width: 300px / 960px * 100%;   //相当于 width: 31.25%;
}
  • $ 引用父级选择器:
.container {&>p {   //使用&来引用父元素 可以编译成CSS的 .container>p {} 效果...}
}/*===== SCSS =====*/
a {...&:hover {... }body.firefox & { ... }
}
/*===== 以上内容相当于以下CSS内容 =====*/
a {...
}
a:hover {...
}
body.firefox a {...
}/*======="&"必须出现在复合选择器开头的位置,后面再连接自定义的后缀*/
/*===== SCSS =====*/
#main {...&-sidebar { ...}
}
/*===== 以上内容相当于以下CSS内容 =====*/
#main {...
}
#main-sidebar {...
}

!!参考csdn
!!参考简书
蚂蚁部落文档

css预处理器scss的理解相关推荐

  1. CSS预处理器--SCSS

    介绍 Scss是成熟.稳定.强大的CSS预处理器,而SCSS是Sass3版本当中引入的新语法特性,完全兼容CSS3的同时继承了Sass强大的动态功能. 以下为基本语法 一.注释 注释分为单行注释和多行 ...

  2. CSS - 预处理器SCSS

    目录 SCSS简介 SCSS 编译环境安装 Live Sass Compiler ​编辑 npm包 sass SCSS语法概览 嵌套语法 选择器嵌套 选择器嵌套中的父选择器 & 属性嵌套 注释 ...

  3. CSS预处理器 Sass/Scss

    文章目录 介绍 Sass是什么 Scss是什么 Scss 与 Sass异同 为什么使用 Sass? Sass 安装 NPM 安装(推荐使用) Windows 上安装 Mac OS X (Homebre ...

  4. css预处理器sass/scss入门

    sass/scss入门 一.css预处理器是什么? 二.为什么要用css预处理器? 三.sass.less.stylus的区别? 四.sass与scss 五.sass安装 六.sass常见用法 6.1 ...

  5. 您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus

    2019独角兽企业重金招聘Python工程师标准>>> CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS ...

  6. 初识css预处理器:Sass、LESS

    这篇文章是初步介绍css预处理的,详细学习请移步官网~ sass中文文档:https://www.sass.hk/docs less中文文档:http://lesscss.cn/ 什么是css预处理器 ...

  7. 再谈 CSS 预处理器

    CSS 预处理器是什么?一般来说,它们基于 CSS 扩展了一套属于自己的 DSL,来解决我们书写 CSS 时难以解决的问题: 语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器: ...

  8. css预处理器sass使用教程(多图预警)

    css预处理器赋予了css动态语言的特性,如变量.函数.运算.继承.嵌套等,有助于更好地组织管理样式文件,以及更高效地开发项目.css预处理器可以更方便的维护和管理css代码,让整个网页变得更加灵活可 ...

  9. CSS预处理器——Sass、LESS和Stylus区别及联系

    一.什么是CSS预处器 CSS预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为CSS增加了一些编程的特性,将CSS作为目标生成文件,然后开发者就只要使用这种语言进行编码工作.通俗的说 ...

最新文章

  1. java audit模块实现_Apollo 源码解析 —— Config Service 操作审计日志 Audit
  2. MaterialEditText 控件学习
  3. mongodb 索引去重_PostgreSQL13新特性解读Btree索引去重Deduplication
  4. centos7安装tomcat8.5.46版本
  5. 阿里云能耗宝新品发布
  6. java有any类型吗_Java开发网 - 一个关于CORBA中any类型的问题
  7. 关于Ajax的type为post提交方式出现请求失效问题
  8. [python opencv 计算机视觉零基础到实战] 七、逻辑运算与应用
  9. python3 django开发_python3开发进阶-Django框架学习前的小项目(一个简单的学员管理系统)...
  10. ORACLE数据库事务隔离级别
  11. jQuery size()函数
  12. Playing with OS(操作系统)
  13. 谷歌翻译,一键复活脚本
  14. PCB设计经典资料学习汇总
  15. 原生安卓开发!最详细的解释小白也能听懂,全网独家首发!
  16. 基于微信小程序云开(统计学生信息并导出excel)2.0版
  17. 三电平igbt死区时间计算_一种T型三电平IGBT互补死区驱动电路的制作方法
  18. Go语言实现获取有道网页结果
  19. 华为电脑怎么不上鸿蒙,我找不到不喜欢华为鸿蒙操作系统的理由
  20. 计算机类毕业设计优秀最新题目

热门文章

  1. 新电脑不显示文件后缀名/文件扩展名
  2. 【密码学原理与实践】验证本原元元素
  3. SQL问题解决 --- [Err] 42000 - [SQL Server]当 IDENTITY_INSERT 设置为 ON 或某个复制用户向 NOT FOR REPLICATION ...错误解决
  4. 【quartus-Modelsim仿真问题】Error: (vsim-3170) Could not find .../modelsim/rtl_work.adder8_vhd_tst
  5. 有手机了,为什么还需要平板
  6. 导入页面前Excel校验
  7. 2D-3D游戏资产合集包 Craftpix 2D-3D Game Assets Collection
  8. C语言进阶-ifndef的用法
  9. 关于在2440上移植rtl8192和rtl8188cus linux驱动遇到的问题及解决方法!!!
  10. mysql中unsigned怎么用_mysql 数据库unsigned的用法