Scss的使用场景
一、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文件
- 把.scss转化为.css文件
- 在正确路径下,打开黑窗口,输入
- node-sass scss/01.scss css/01.css
- 如果生成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中选择器的命名规范,
可以包含_ -,不能以数字开头,见名知意
- $jd-red:#f10125;颜色变量
- $w:100px;数值变量
- $before-content:"子曾经曰过"字符串变量
- $border-style:solid;样式变量
注意:
- 声明变量时,变量值可以应用其他的变量。
- 变量定义在{}规则外边,整个样式文件中都可以使用,如果定义在{}规则块外边,只能在当前规则块中使用。
- 声明重复变量,后声明的变量会覆盖前面的变量。
- !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;
}
在以下的情况视为除法运算
- 如果值,或者值的一部分,是变量或者函数的返回值
- 如果值被小括号包裹,视为除法
- 如果值是算术表达式的一部分,视为除法
(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的使用场景的更多相关文章
- Vue ES6 Jade Scss Webpack Gulp
		一直以来非常庆幸曾经有翻过<代码大全2>:这使我崎岖编程之路少了很多不必要的坎坷.它在软件工艺的话题中有写到一篇:"首先是为人写程序,其次才是机器(Write Programs ... 
- Scss - 简单笔记
		原文链接:scss 教程 手头上疯狂在用 scss,虽然可以在里面写原生的 css, 但是为了保持风格的一致性,还是滚去看了看 scss 文档. 一.变量 变量的引入是 scss 的一个核心特性,变量 ... 
- vue2.0以上版本安装sass(scss)
		一.首先说明sass和scss的区别. 1.异同:1)简言之可以理解scss是sass的一个升级版本,完全兼容sass之前的功能,又有了些新增能力.语法形式上有些许不同,最主要的就是sass是靠缩进表 ... 
- SCSS快速入门
		SCSS快速入门 1. 使用变量sass引入了变量.通过变量名来引用它们,使用$符号来标识变量.且在CSS中并无他用,不会导致与现存或未来的css语法冲突. 1-1. 变量声明sass变量的声明和cs ... 
- [HTML] SCSS 备忘录
		Sass是成熟.稳定.强大的CSS预处理器,而SCSS是Sass3版本当中引入的新语法特性,完全兼容CSS3的同时继承了Sass强大的动态功能. 特性概览 CSS书写代码规模较大的Web应用时,容易造 ... 
- Ext JS学习第十六天 事件机制event(一)  DotNet进阶系列(持续更新)  第一节:.Net版基于WebSocket的聊天室样例  第十五节:深入理解async和await的作用及各种适用场景和用法  第十五节:深入理解async和await的作用及各种适用场景和用法  前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
		code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ... 
- 学习SCSS
		目录 变量 嵌套 引入 混合 继承 操作符 CSS扩展 嵌套属性 标签(空格分隔): 未分类 变量 变量用来存储需要在CSS中复用的信息,例如颜色和字体.SASS通过$符号去声明一个变量. $font ... 
- 使用react+redux+react-redux+react-router+axios+scss技术栈从0到1开发一个applist应用
		先看效果图 github地址 github仓库 在线访问 初始化项目 #创建项目 create-react-app applist #如果没有安装create-react-app的话,先安装 npm ... 
- SCSS 教程
		https://www.jianshu.com/p/a99764ff3c41 https://www.sass.hk/guide/ 1. 使用变量; sass让人们受益的一个重要特性就是它为css引入 ... 
随机推荐
- 移动端Rem布局注意事项
			1.布局的总体结构框架: 2.注意事项: (a):如果是左右两栏的布局方式,须在article的同级加一个aside: 因为是同级,所以必须设置同样的样式:而且他俩的父级,也就是sectio ... 
- 重载operator new delete函数
			可以重载global的operator new delete 函数,细节如下: MyNewDelete.h #pragma once #include <stdlib.h> #includ ... 
- PHP会话机制---session的基本使用
			登录网站后,在每个网页都能拿到用户信息 (1) 使用超链接传递用户名,这样太繁琐了,不建议使用 . (2) 使用数据库,每打开一个页面都查询一次用户信息表,这样网页加载速度变慢,用户体验变差. (3) ... 
- java与java web数组括号的不同
			由于之前学JAVA SE数组时习惯了数组括号的写法,到了Web这里写了有点不太习惯了,赶快写篇博客加深一下印象哈 一. java和java web中的数组的不同 java: int[] arr = n ... 
- asp.net core mvc中自定义ActionResult
			在GitHub上有个项目,本来是作为自己研究学习.net core的Demo,没想到很多同学在看,还给了很多星,所以觉得应该升成3.0,整理一下,写成博分享给学习.net core的同学们. 项目名称 ... 
- linux使用jq工具解析json
			jq类似一个awk或grep一样的神器,可以方便地在命令行操作json 这里我使用海南万宁的天气接口做演示,地址:http://t.weather.sojson.com/api/weather/cit ... 
- ESP8266开发之旅 网络篇⑫ 域名服务——ESP8266mDNS库
			1. 前言 前面的博文中,无论是作为client端还是server端,它们之间的通信都是通过具体的IP地址来寻址.通过IP地址来寻址,本身就是一个弊端,用户怎么会去记住这些魔法数字呢?那么有没 ... 
- 宋宝华:Docker 最初的2小时(Docker从入门到入门)
			本文系转载,著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 最初的2小时,你会爱上Docker, ... 
- Redis(十三)Python客户端redis-py
			一.安装redis-py的方法 使用pip install安装redis-py C:\Users\BigJun>pip3 install redis Collecting redis Downl ... 
- unity  www下载导致内存占用增加问题
			服务端或者数据库更改导致客户端更改,最合理的处理方法是客户端时刻检测版本号(可以通过实时检测版本号),如果实时刷新数据库的数据开销比较大,尤其是有图片元素时. 采用unity www类下载时,虽然结束 ... 
