当前位置: 首页 > news >正文

【SCSS变量】$ | | var | @for | @include | @function | @each 等常用方法使用

SCSS优点:编写清晰、无冗余、语义化的CSS,减少不必要的重复工作

  • 1、变量声明(`$`)和使用
  • 2、使用 `&` 代替父元素
  • 3、在HTML中使用 `:style={'--name': 动态值}`自定义属性,在SCSS中用`var(--name)`函数绑定动态变量值,
  • 4、混合器(`@mixin`)和使用(`@include`)
  • 5、给混合器(`@mixin`)定义参数,并使用(`@include`)传参
  • 6、使用 (`@extend`)继承 公共类(元素名、.class)
  • 7、使用 `@function` 和 `@for` 循环语句
  • 8、使用 `@each` 循环

1、变量声明($)和使用

// 用`$`声明变量
$color: red;
// 直接使用变量
span{ color: $color; }
p{ background: $color; }

2、使用 & 代替父元素

a{color: red;&:hover{color: green;}
}

3、在HTML中使用 :style={'--name': 动态值}自定义属性,在SCSS中用var(--name)函数绑定动态变量值,

<p v-for="(item, index) in dataList" :key="index" :style="{'--color': item.color}" >{{item.name}}</p>
p{color: var(--color);
}
data() {return {dataList: [{name: '红色', color: 'red'},{name: '蓝色', color: 'blue'},{name: '绿色', color: 'green'}]}
}

在这里插入图片描述

4、混合器(@mixin)和使用(@include

// @mixin声明混合器: 圆角边框@mixin round-radius{border-radius: 10px;background: red;
}
// 使用@include 混入一段重用样式的代码p{ width: 200px;height: 100px;@include round-radius;  // @include 使用变量
}

5、给混合器(@mixin)定义参数,并使用(@include)传参

// @mixin声明混合器: a不同状态的颜色参数@mixin link-colors($normal, $hover, $visited) {color: $normal;&:hover { color: $hover; }&:visited { color: $visited; }
}
// @include 使用变量,并传入实际参数a {@include link-colors(blue, red, green);
}
//Sass编译后最终生成的是:a { color: blue; }
a:hover { color: red; }
a:visited { color: green; }

6、使用 (@extend)继承 公共类(元素名、.class)

//通过选择器继承继承样式
.error {border: 1px solid red;background-color: #fdd;
}.seriousError {@extend .error; // 继承border-width: 3px;
}

7、使用 @function@for 循环语句

@for 指令可在限制的范围内重复输出格式,每次按要求(变量的值)对输出结果做出变动。
包含两种格式:
@for $var from <start> through <end>  代表 [ start, end ]
@for $var from <start> to <end>  代表 [ start, end },不包含end
另外,$var 可以是任何变量,如 $i;<start><end> 必须是整数值。

用法一:

@for $i from 1 through 3 {.item-#{$i} { width: 2em * $i; }
}
// 编译为:
.item-1 { width: 2em; }
.item-2 { width: 4em; }
.item-3 { width: 6em; }

用法二:

// 使用scss随机添加 box-shadow,参数 n = 个数,range = 范围@function multiple-box-shadow($n, $range) {$value: '#{random($range)}px #{random($range)}px #FFF';@for $i from 1 through $n {$value: '#{$value} , #{random($range)}px #{random($range)}px #FFF';}@return unquote($value); // 去掉''引号
}
#stars {width: 1px;height: 1px;box-shadow: multiple-box-shadow(700, 2000);
}

利用box-shadow随机画出小方块组成星空
在这里插入图片描述

8、使用 @each 循环

@each $color in red, blue, green{.#{$color}-icon {background-image: url('/images/#{$color}.png');}
}
// 编译为:
.red-icon {background-image: url('/images/red.png'); 
}
.blue-icon {background-image: url('/images/blue.png'); 
}
.green-icon {background-image: url('/images/green.png'); 
}
http://www.lryc.cn/news/138176.html

相关文章:

  • iOS 17 及 Xcode 15.0 Beta7 问题记录
  • docker-maven-plugin直接把镜像推到私有仓库
  • 2023年机器学习项目—布匹缺陷检测
  • RabbitMQ---订阅模型分类
  • pycharm添加虚拟环境以及虚拟环境安装pytorch
  • Git企业开发控制理论和实操-从入门到深入(三)|分支管理
  • 【VsCode】SSH远程连接Linux服务器开发,搭配cpolar内网穿透实现公网访问(1)
  • LC-1267. 统计参与通信的服务器(枚举 + 计数)
  • Linux TCP协议——三次握手,四次挥手
  • 人机对抗智能-部分可观测异步智能体协同(POAC)
  • 数学——七桥问题——图论
  • python 模块lxml 处理 XML 和 HTML 数据
  • SpringBoot 统⼀功能处理
  • hadoop 报错 java.io.IOException: Inconsistent checkpoint fields
  • workbench连接MySQL8.0错误 bad conversion 外部组件 异常
  • Qt Scroll Area控件设置,解决无法显示全部内容,且无法滚动显示问题。
  • 【Java架构-包管理工具】-Maven私服搭建-Nexus(三)
  • 守护进程(精灵进程)
  • csdn冷知识:如何在csdn里输入公式或矩阵
  • 【前端】CSS技巧与样式优化
  • Linux下的系统编程——makefile入门
  • redis常用五种数据类型详解
  • Python代理池健壮性测试 - 压力测试和异常处理
  • 回文子串-中心拓展
  • 2023.8各大浏览器11家对比:Edge/Chrome/Opera/Firefox/Tor/Vivaldi/Brave,安全性,速度,体积,内存占用
  • python中的matplotlib画散点图(数据分析与可视化)
  • 2023前端面试笔记 —— HTML5
  • 【LeetCode】面试题总结 消失的数字 最小k个数
  • 导入功能importExcel (现成直接用)
  • cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。应以 ‘{layoutlib}‘ 之一开头