一、Scss

1.CSS有几个缺点

  • 语法不够强大,没有变量和合理的样式复用机制
  • 使得逻辑上相关的属性值必须以字面的形式重复输出,难以维护
  • 动态的样式语言为css富裕了动态语言的特性
  • 极大的提高了样式语言的可维护性

常见的样式语言:

1.scss/sass(scss兼容sass,scss更接近css的语法格式)

2.stylus

3.less

动态语言------css预处理----->*.css

2.什么是SCSS

是一款强化css的辅助工具

在css的语法上,增强了变量、嵌套,混合,导入,函数等高级功能。这些拓展另css更加强大与优雅。

3.scss的作用,有助于更好的管理样式文件,以及更高效的开发项目。

4.scss的使用

1.在服务器端使用

  • 安装nodejs解释器
  • 安装scss的编译程序

在线安装  npm install -g node-sass

注意:要求node.js版本在8.11以上

2. 把sass包中的4个文件拷贝进node.js文件夹

  • 在黑窗口或者ws的控制台(alt+f12)输入
  • node-sass-v 检测sass版本
  • 如果输入版本,说明sass安装成功

3.编写01.scss文件

  1. 把.scss转化为.css文件
  2. 在正确路径下,打开黑窗口,输入
  3. node-sass scss/01.scss    css/01.css
  4. 如果生成01.css则正确
  • 批量把scss转化为css,多文件转换命令
  • node-sass  scss 文件夹 -o css文件夹
  • 单文件监听命令,scss文件一旦保存,自动转换为css文件
  • node-sass -w scss/01.scss css/01.css

多文件监听

  • node-sass  -w scss -o css

二、SCSS的基础语法 

1.变量

使用$表示变量

变量的命名规范,遵循css中选择器的命名规范,

可以包含_ -,不能以数字开头,见名知意

  1. $jd-red:#f10125;颜色变量
  2. $w:100px;数值变量
  3. $before-content:"子曾经曰过"字符串变量
  4. $border-style:solid;样式变量

注意:

  1. 声明变量时,变量值可以应用其他的变量。
  2. 变量定义在{}规则外边,整个样式文件中都可以使用,如果定义在{}规则块外边,只能在当前规则块中使用。
  3. 声明重复变量,后声明的变量会覆盖前面的变量。
  4. !default规则,如果变量已经声明赋值了,那就用它之前声明的值

样式嵌套规则:

#content{

color:#f00;

div.top{

margin:0 auto;

h1{font-weight:normal}

p{font-size:20px;}

}

}

a{

color:#f00;

&:hover{

color:#00f;

}

}

群组选择器的嵌套

nav,div,footer{

a{

color:#000;

&:hover{color:#f00;}

}

}

属性嵌套

div{

border:{style:solid;width:1px;color:#f00;}

}

2.导入scss文件

在SCSS中,局部文件以下划线开头

这样做,sass在编译时就不会编译以下划线开头的文件,而是把这个文件用作导入。

引入局部文件时,是关键字@import "局部文件名",局部文件省略了下划线和后缀。

并且一个局部文件可以被多个SCSS文件引用。

3.混合器

把需要在多个样式文件中出现的,相同的部分提取出来,封装到混合器中。

关键字 @mixin 混合器名称{重用的样式}

使用,关键字 @include 混合器名称。就可以在很多的样式中使用封装好的样式了。

带参数的混合器(类似参数的function)

  • 定义混合器的时候,在()添加参数
  • 调用混合器的时候,在()把参数补上

@mixin lin-colors($normal,$hover,$visited){

color:$normal;

$:hover{color:$hover}

$:visited{color:$visited}

}

ul li a{

@include lin-colors{#f00,#0f0,#00f};

}

#content a{

@include lin-colors{#faa,#afa,#aaf};

}

4.继承

继承就是说一个选择器可以继承另一个选择器定义的所有样式

在css中的表现形式是两个选择器共有的部分,变成了群组选择器

三、运算

1.数字

  • 加减乘除,求模取值
  • 会在不同单位间转换值
  • width:1in+8pt;
  • scss不能转换相对单位
  • height:1rem+1em;

(1)注意:加法

p::before{

content:"Microsoft"+yahei;

font-family:A+"rial"

}

结果

content:"Microsoftyahei";

font-family:Arial;

+  可以用于连接字符串

如果用引用去连接无引号的字符串,结果是有引号的

如果用无引号去连接有引号的字符串,结果是无引号的

(2)减法

-  会被优先解析为变量名,所以使用变量和减法,需要-前后添加空格

width:$size  -  $my-width

(3)除法

在scss中,除号经常起到分隔的用途 /

p{

font:10px/5px;

$width:100px;

width:$width/2;

height:(500px/2);

margin:5px+8px/2px;

}

在以下的情况视为除法运算

  1. 如果值,或者值的一部分,是变量或者函数的返回值
  2. 如果值被小括号包裹,视为除法
  3. 如果值是算术表达式的一部分,视为除法

(4)运算表达式与其他值连用时,用空格做连接

margin:4px + 5px auto;

(5)在有引号的字符串中,使用#{}插值语句可以添加动态的值

content:"I ate #{16+23} baozis"

2.颜色的运算

颜色是分段计算的,红+红  绿+绿  蓝+蓝

rgb(23,32,45)+rgb(11,23,33)

rgba(11,22,33,0.1)+rgba(22,33,44,0.1)

两个rgba相加,alpha的值,必须相等才可以计算,因为算术运算符不会作用到alpha

四、函数

1.scss定义了多种函数,有些函数甚至直接在css中调用

1.颜色函数

  • rgba(red,green,blue,alpha)
  • hsl(hue,saturation,lightness)
  • hue:色调  取值 0~360 3个色段 每120 一个色段
  • saturation:饱和度 0.0%~100.0%
  • lightness:亮度 0.0%~100.0%

2.数字函数

round($value) 四舍五入

ceil($value)向上取整

floor($value)

max($v1,$v2,.......)

min($v1,$v2,........)

random()

3.字符串函数

unquote($string) 删除字符串引号

quote($string)给字符串添加引号

To-upper-case()

To-lower-case()

2.自定义函数

@function 函数名($n){

函数体;

@return 结果;

}

四.控制指令

@if  1+1=4{border-radius:50%}

@else if(1-1==-1){border-radius:30%}

@else {border-radius:10%}

@if,@else if ,@else

boolean 表达式,可以添加括号,也可以不加

Scss的使用场景的更多相关文章

  1. Vue ES6 Jade Scss Webpack Gulp

    一直以来非常庆幸曾经有翻过<代码大全2>:这使我崎岖编程之路少了很多不必要的坎坷.它在软件工艺的话题中有写到一篇:"首先是为人写程序,其次才是机器(Write Programs ...

  2. Scss - 简单笔记

    原文链接:scss 教程 手头上疯狂在用 scss,虽然可以在里面写原生的 css, 但是为了保持风格的一致性,还是滚去看了看 scss 文档. 一.变量 变量的引入是 scss 的一个核心特性,变量 ...

  3. vue2.0以上版本安装sass(scss)

    一.首先说明sass和scss的区别. 1.异同:1)简言之可以理解scss是sass的一个升级版本,完全兼容sass之前的功能,又有了些新增能力.语法形式上有些许不同,最主要的就是sass是靠缩进表 ...

  4. SCSS快速入门

    SCSS快速入门 1. 使用变量sass引入了变量.通过变量名来引用它们,使用$符号来标识变量.且在CSS中并无他用,不会导致与现存或未来的css语法冲突. 1-1. 变量声明sass变量的声明和cs ...

  5. [HTML] SCSS 备忘录

    Sass是成熟.稳定.强大的CSS预处理器,而SCSS是Sass3版本当中引入的新语法特性,完全兼容CSS3的同时继承了Sass强大的动态功能. 特性概览 CSS书写代码规模较大的Web应用时,容易造 ...

  6. Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G

    code&monkey   Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...

  7. 学习SCSS

    目录 变量 嵌套 引入 混合 继承 操作符 CSS扩展 嵌套属性 标签(空格分隔): 未分类 变量 变量用来存储需要在CSS中复用的信息,例如颜色和字体.SASS通过$符号去声明一个变量. $font ...

  8. 使用react+redux+react-redux+react-router+axios+scss技术栈从0到1开发一个applist应用

    先看效果图 github地址 github仓库 在线访问 初始化项目 #创建项目 create-react-app applist #如果没有安装create-react-app的话,先安装 npm ...

  9. SCSS 教程

    https://www.jianshu.com/p/a99764ff3c41 https://www.sass.hk/guide/ 1. 使用变量; sass让人们受益的一个重要特性就是它为css引入 ...

随机推荐

  1. python requests-toolbelt 生成上传multipart/form-data格式数据

    需求背景 想使用requests做一个自动上传的功能,发现这里问题挺多的,就记录一下. 如上图上传功能,一般分为input标签,非input标签.我这里也不管什么标签,直接抓包看数据流. Conten ...

  2. 用go语言爬取珍爱网 | 第二回

    昨天我们一起爬取珍爱网首页,拿到了城市列表页面,接下来在返回体城市列表中提取城市和url,即下图中的a标签里的href的值和innerText值. 提取a标签,可以通过CSS选择器来选择,如下: $( ...

  3. C# 获取pdf长宽,反推pdf图纸类型

    业务需求:读取pdf每页的长宽,然后根据国际标准,反推出pdf图纸类型 第一步:下载类库,并引入到项目中 链接:https://pan.baidu.com/s/1ud4-xhfDvi9OKolEBPw ...

  4. 【Java 基础】谈谈集合.List

    目录 1. ArrayList 1.1 ArrayList的构造 1.2 add方法 1.3 remove方法 1.4 查询方法 1.5 一些其他常用方法 1.6 ArrayList小结 2. Vec ...

  5. Axios 详解

    首先祝广大程序猿们节日快乐! 一.axios简介 基于promise,用于浏览器和node.js的http客户端 二.特点 支持浏览器和 node.js 支持 promise 能拦截请求和响应 能转换 ...

  6. Halcon一日一练:读取文件目录图像的三种方法

    第一种方法: 读了一个单一图像: read_image(Image,'fabrik') 这种方式可以快速的读取软件自身携带的库图像文件,系统设定了库图像映像文件的快速读取方式,我们也可以通过绝对地址的 ...

  7. C# 关于config文件中的usersettings

    在调整app.config的时候遇到了一点问题,把这个问题记录下来,可能我只是没有找到解决方案,问题本身也许并不复杂. 在VS中通过Properties中的Settings.settings来设置作用 ...

  8. java学习-IDEA相关使用

    1.配置git与github(用于将代码提交到GitHub) 添加自己的github账号 2.提交代码到github 登录https://github.com,即可看到刚刚提交到github的代码仓库 ...

  9. selenium驱动chrome浏览器问题

    selenium是一个浏览器自动化测试框架,以下介绍其如何驱动chrome浏览器? 1.下载与本地chrome版本对应的chromedriver.exe ,下载地址为http://npm.taobao ...

  10. ios 11 系统CPU过高,xib中textfield使用导致出过高

    ios11 发布之后,作为开发肯定是第一时间进行了升级测试,全新的系统不免会带来这样那样的问题.项目中使用xib的小伙伴们会发现,项目的cpu使用率非常高,尤其是初始化的时候,并没有线程的操作,CPU ...