项目中经常用到的sass语法汇总
1、定义变量
使用:$(符号定义变量)
注意:使用时要带有‘$’符号,定义变量的方式与PHP相同
$变量:数值;
$color_r : red;
div{
color:$color_r;
}
2、if判断语句
执行逻辑与js中的if判断完全相同
使用:@if、 @else if、@else
注意:判断条件没有()直接写就行
2-1 @if 变量 判断符号 数值 { 样式 }
$c1 : red;
$c2 : blue;
$c3 : pink;
$c4 : green;
$res:z;
div{
width: 100px;
height: 100px;
@if $res == a {
color: $c1;
}
}
2-2 @if 变量 判断符号 数值 { 样式1 } @else { 样式2 }
div{
width: 100px;
height: 100px;
@if $res == a {
color: $c1;
} @else{
color: $c2;
}
}
2-3 @else if 变量 判断符号 数值 { 样式2 }
@if 变量 判断符号 数值 { 样式1 }
@else if 变量 判断符号 数值 { 样式2 }
@else if 变量 判断符号 数值 { 样式3 }
@else { 样式4 }
div{
width: 100px;
height: 100px;
@if $res == a {
color: $c1;
} @else if $res == b{
color: $c2;
} @else if $res == c{
color: $c3;
} @else{
color: $c4;
}
}
3、循环语句
注意:关键词前,添加@符号,没有()
for循环
3-1 @for 变量 from start数值 to end数值 {代码}
解释:从‘start数值’开始循环,‘end数值’结束循环,但不包括‘end数值’
例如:@for $i from 1 to 3{代码}
循环是 $i=1 和$i=2 的两次循环,没有3
@for $i from 1 to 6 {
li:nth-child( #{$i} ){
color: red;
border: 1px*$i solid #000;
}
}
3-2 @for 变量 from start数值 through end数值 {代码}
解释:从‘start数值’开始,中止数值是‘end数值’,并且包括‘end数值’
例如:@for $i from 1 throught 3
循环是 $i=1 和 $i=2 和 $i=3 的3次循环
@for $i from 1 through 5 {
li:nth-child( #{$i} ){
color: red;
border: 1px*$i solid #000;
}
}
each循环
循环数值的语法
sass中定义数组:$变量:(1,数值1),(2,数值2),(3,数值3)...
注意:sass中定义数组,数值索引下标从1开始
each语句
@each $变量1 ,$变量2 in $ 数值变量 {执行程序}
$变量1: 存储数组的索引
$变量2: 存储数值的数据
$arr : (1,red),(2,blue),(3,pink),(4,orange),(5,green);
@each $index , $value in $arr {
li:nth-child(#{$index}){
color: $value;
}
}
4、结构嵌套
父子 ,后代 关系
父子后代关系
之前的css,是 父级, 子级分开定义
现在是 在 父级中 嵌套定义子级属性
还可以嵌套定义父级的伪类选择器
父级{
css属性:属性值
> 子级{ 父子
子级css属性:属性值
}
子级{ 后代
子级css属性:属性值
}
&:hover{
伪类的属性:属性值
}
}
div{
width:300px;
height:300px;
background:pink;
// 直接在父级css中,定义子级样式
// >span{
// color:red;
// }
// 直接在父级中,定义后代样式
span{
color: blue;
}
// 直接定义当前标签的伪类选择器
&:hover{
background: gray;
}
}
5、属性嵌套
在当前属性值,设定特殊的属性值
例如:margin:四个方向属性都是100px {
需要单独设定 matgin-left:500px;};
div{
width: 100px;
height: 100px;
margin: 100px {
top: 50px;
};
border: 1px solid red{
top: 4px solid blue;
};
}
6、混合器 -- 类似于js中的函数
使用场景:
一般设定兼容前缀时使用
一些多次重复使用的css样式
使用:混合器关键词 @mixin 混合器名称(){}
调用混合器:@include 混合器名称()
如果是知识纯粹的编译 sass 文件,混合器是原样执行
如果使用 gulp 打包压缩,因为 gulp 有添加前缀的 打包规范,会根据兼容浏览器版本不同,添加不同的兼容语法
打包之后的 css 兼容,可能与你写的css兼容不同
语法形式1 没有参数 也就是没有()
定义时: @mixin 混合器名称 {}
使用时: @include 混合器名称()
// 没有参数
@mixin t1{
-webkit-transition:all 2s;
-moz-transition:all 2s;
-ms-transition:all 2s;
-o-transition:all 2s;
transition:all 2s;
}
h1{
@include t1();
}
语法形式2 有参数,但是参数没有默认值
定义时: @mixin 混合器名称($参数1,参数2) {}
使用时: @include 混合器名称(实参1,实参2)
// 有参数,没有默认值
@mixin t2($type,$time) {
-webkit-transition:$type $time;
-moz-transition:$type $time;
-ms-transition:$type $time;
-o-transition:$type $time;
transition:$type $time;
}
div{
width: 100px;
height: 100px;
// 调用混合器
// @include t1();
// 调用混合器,输入实参
@include t2( all , 3s );
}
p{
@include t2( height , 10s );
}
语法形式3 有参数,有默认值
必须给所有的形参都赋值默认值
不能有的有默认值有的没有默认值
定义时: @mixin 混合器名称($参数1:默认值,参数2:默认值) {}
使用时: @include 混合器名称(实参1,实参2)
// 有参数,有默认值
@mixin t3($type:all,$time:3s) {
-webkit-transition:$type $time;
-moz-transition:$type $time;
-ms-transition:$type $time;
-o-transition:$type $time;
transition:$type $time;
}
h1{
@include t3();
}
h2{
@include t3(font-size);
}
h3{
@include t3(left);
}
项目中经常用到的sass语法汇总的更多相关文章
- 项目中oracle存储过程记录——经常使用语法备忘
项目中oracle存储过程记录--经常使用语法备忘 项目中须要写一个oracle存储过程,需求是收集一个复杂查询的内容(涉及到多张表),然后把符合条件的记录插入到目标表中.当中原表之中的一个的日期字段 ...
- vue入坑教程(二)在vue项目中如何导入element以及sass
在项目中导入element以及sass.stylus等方便开发的工具以及UI框架 (1)如何在vue项目中导入elementUI框架 elementUI是饿了么团队开发出来基于vue的前端UI框架,其 ...
- 项目开发---使用node.js中sass语法
前言:本文中所有sass文件都指后缀名为scss的文件.在此也建议使用后缀名为scss的文件,以避免sass后缀名的严格格式要求报错. 一.sass插件的安装: gulp-sass-china // ...
- Vue项目中sass语法该怎么用?
最近开始着手Vue框架,被各种报错蹂躏,其中有一个就是sass语法,<style>标签中添加<style lang="scss">,发现报错,在网上找了一些 ...
- scss/less语法以及在vue项目中的使用(转载)
1.scss与less都是css的预处理器,首先我们的明白为什么要用scss与less,因为css只是一种标记语言,其中并没有函数变量之类的,所以当写复杂的样式时必然存在局限性,不灵活,而scss与l ...
- Vue项目中如何使用Element-UI以及如何使用sass
Vue项目中如何使用Element-UI以及如何使用sass 当我们在开发Vue项目的时候通常会选择Element-UI作为我们的UI框架,其官方中文文档地址是http://element.eleme ...
- ionic 项目中 使用 sass
注: 1.先安装node-sass -->> npm install --save node-sass --registry=https://registry.npm.taobao.or ...
- C++\CLI语法 在项目中的使用
通常情况下,对一个标准的com组件进行集成,网上普遍使用的方式有: 1.#import *.dll 或 #import *.ocx的方式,VS编译器重新编译后,就会自动生成组件对应的*.tlh文件,该 ...
- nuxt 脚手架创建nuxt项目中不支持es6语法的解决方案
node本身并不支持es6语法,我们通常在vue项目中使用es6语法,是因为,我们使用babel做过处理, 为了让项目支持es6语法,我们必须同时使用babel 去启动我们的程序,所以再启动程序中加 ...
随机推荐
- python -- 面向对象编程(继承、重写)
一.继承 子类可以继承父类的所有公有成员,但不能直接访问父类的私有成员,只能通过父类的公有方法间接访问私有属性或私有方法. 如: class DerviedClassName(BaseClassNam ...
- static能修饰什么
简洁易懂讲清原理,讲不清你来打我~ 修饰普通变量,修改变量的存储区域和生命周期,使变量存储在静态区,在main函数运行前就分配空间,有初始值就初始值,没有初始值就系统默认值初始化 修饰普通函数,修改函 ...
- 一定要收藏的5个优秀的SpringCloud开源项目
上一期为大家推荐了几个前端模板,没看过的点下面 一定要收藏的5个后台管理系统的前端框架 今天再为大家推荐几个优秀的SpringCloud开源脚手架项目,开箱即用,不管是学习还是开发新项目,都非常不错. ...
- Redis介绍及使用(八)
一.什么是Redis 1.Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库.(非关系型缓存数据库) 2.五种数据类型: 3.支持持久化. 参看链接:https:// ...
- 为什么每次下载后必须关闭掉IO流(十五)
读一个文件,忘记关闭了流,你在操作系统里对这个文件的写,删除等操作就会报错,告诉你这个文件被某个进程占用,这是为什么呢? java是从c++设计来的,但是无论是C语言还是C++,都需要手动释放内存,j ...
- Python自动化测试面试题-经验篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- (JAVA5)DOS命令
(JAVA5)DOS命令 开启DOS控制台的几种方式 win + R 输入cmd打开控制台 在任意的文件夹下面,按住shift键 + 右键单击(在此处打开Powershell窗口) 资源管理器的地址前 ...
- 打开JAVA之门:idea的安装及JAVA环境的创建
打开JAVA之门:idea的安装及JAVA环境的创建 1.idea的下载安装 首先打开 ->->->(IntelliJ IDEA: The Capable & Ergonom ...
- 针对不同场景的Python合并多个Excel方法
大家好,我是辰哥~ 在辰哥看来,技术能够减少繁琐工作带来的枯燥,技术+实际=方便.最近辰哥也是在弄excel文件的时候发现手动去整理有点繁琐枯燥,想着技术可以代替我去处理这部分繁琐的工作那何乐而不为呢 ...
- Bugku-web-web8
可以看到题目提示了一个txt的东西,猜测目录下会有flag.txt这个文件. 通过代码审计我们可以知道得到flag的条件,访问flag.txt得到一串字符. 那么payload就很好构造了,$f的值是 ...