SASS 控制指令详解@for、@if、@each、@while

SASS 控制指令详解

SASS 提供了多种控制指令,如 @for@if 和 @each,这些指令可以让你在样式表中编写更复杂和动态的逻辑。下面分别详细介绍这些指令的使用方法和示例。


1. @for 循环

@for 循环用于生成一系列重复的样式规则。它可以有两种形式:from ... through 和 from ... to

@for $variable from <start> through <end> {
  // 循环体
}

@for $variable from <start> to <end> {
  // 循环体
}
/* 
$variable:循环变量。
<start>:循环的起始值。
<end>:循环的结束值(包含在内)。
 */
  • from ... through:包含结束值。
  • from ... to:不包含结束值。

示例

// 生成一系列边框半径类
@for $i from 2 through 20 {
  .br-#{$i*2} {
    border-radius: 2rpx * $i;
  }
}

// 生成一系列宽度类
@for $i from 1 to 11 {
  .w-#{$i*10} {
    width: 10% * $i;
  }
}

 编译后的 CSS

/* 圆角 */
.br-4 {
  border-radius: 4rpx;
}

.br-6 {
  border-radius: 6rpx;
}

/* ...省略中间部分... */

.br-40 {
  border-radius: 40rpx;
}

/*宽*/

.w-10 {
  width: 10%;
}

.w-20 {
  width: 20%;
}

/* ...省略中间部分... */

.w-100 {
  width: 100%;
}

2. @if 条件语句

@if 语句用于根据条件生成不同的样式规则。可以与 @else if 和 @else 一起使用。

@if <condition> {
  // 条件为真时的样式
}
@else if <condition> {
  // 条件为真时的样式
}
@else {
  // 所有条件都不为真时的样式
}

示例

$theme: light;

body {
  @if $theme == light {
    background-color: white;
    color: black;
  } @else if $theme == dark {
    background-color: black;
    color: white;
  } @else {
    background-color: gray;
    color: black;
  }
}

编译后的 CSS

body {
  background-color: white;
  color: black;
}

3. @each 循环

@each 循环用于遍历列表或映射(map),并为每个项生成样式规则。

@each $variable in <list-or-map> {
  // 循环体
}

示例

// 遍历颜色列表
$colors: red, green, blue;

@each $color in $colors {
  .bg-#{$color} {
    background-color: $color;
  }
}

// 遍历映射
$breakpoints: (
  small: 480px,
  medium: 768px,
  large: 1024px
);

@each $name, $width in $breakpoints {
  @media (min-width: $width) {
    .#{$name}-screen {
      width: 100%;
    }
  }
}

编译后的 CSS

.bg-red {
  background-color: red;
}

.bg-green {
  background-color: green;
}

.bg-blue {
  background-color: blue;
}

@media (min-width: 480px) {
  .small-screen {
    width: 100%;
  }
}

@media (min-width: 768px) {
  .medium-screen {
    width: 100%;
  }
}

@media (min-width: 1024px) {
  .large-screen {
    width: 100%;
  }
}

4. @while 指令

@while 指令在 SASS 中用于创建基于条件的循环。与 @for 不同,@while 循环会一直执行,直到指定的条件不再满足为止。这使得 @while 在某些情况下非常有用,尤其是在需要动态生成不确定数量的样式规则时。

$variable: initial-value;

@while <condition> {
  // 循环体
  // 更新变量
}
  • $variable:初始化变量(就是个变量名,可以是任何名字,例如 aa,bb,cc)。
  • <condition>:循环条件,当条件为真时继续执行循环体。
  • 更新变量:在循环体中更新变量的值,以确保最终能够退出循环。

 示例

生成一系列背景颜色

假设我们想生成一系列带有不同背景颜色的类,每种颜色的透明度逐渐增加。

$i: 1;
$opacity-step: 0.1;
/* 声明两个变量 */

@while $i <= 10 {
  .bg-#{$i} {
                                 /* 让$1 * $opacity-step */
    background-color: rgba(0, 0, 255, $i * $opacity-step);
  }
  $i: $i + 1;
  /* 让$1 每次循环 +1 */
}

 编译后的 CSS

.bg-1 {
  background-color: rgba(0, 0, 255, 0.1);
}

.bg-2 {
  background-color: rgba(0, 0, 255, 0.2);
}

.bg-3 {
  background-color: rgba(0, 0, 255, 0.3);
}

/* ... */

.bg-10 {
  background-color: rgba(0, 0, 255, 1);
}

假设我们想生成一系列宽度类,每个类的宽度逐渐增加。

$i: 1;
$width-step: 10%;

@while $i <= 10 {
  .w-#{$i} {
    width: $i * $width-step;
  }
  $i: $i + 1;
}

编译后的 CSS

.w-1 {
  width: 10%;
}

.w-2 {
  width: 20%;
}

.w-3 {
  width: 30%;
}

/* ... */

.w-10 {
  width: 100%;
}

注意事项

  • 更新变量:在 @while 循环中,必须确保在每次迭代中更新条件变量,否则可能会导致无限循环。
  • 条件表达式:条件表达式必须返回一个布尔值(真或假),通常使用比较运算符(如 <=>=== 等)。
总结
  • @for 循环:用于生成一系列重复的样式规则,支持 from ... through 和 from ... to 两种形式。
  • @if 条件语句:根据条件生成不同的样式规则,可以与 @else if 和 @else 一起使用。
  • @each 循环:用于遍历列表或映射,并为每个项生成样式规则。
  • @while 循环:用于创建基于条件的循环,直到条件不再满足为止。
  • 语法@while <condition> { ... }
  • 示例:生成一系列背景颜色和宽度类。
  • 注意事项:确保在每次迭代中更新条件变量,避免无限循环。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/914629.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CTFhub靶场RCE学习

靶场 eval执行 <?php if (isset($_REQUEST[cmd])) {eval($_REQUEST["cmd"]); } else {highlight_file(__FILE__); } ?> PHP代码显示&#xff0c;要求将命令赋值给cmd然后执行 先查看一下根目录文件 ?cmdsystem("ls");&#xff01;切记最后的分…

软件架构技术深入解析:AOP、系统安全架构、企业集成平台与微服务架构

目录 试题一 论面向方面的编程技术及其应用 解析 试题二 论系统安全架构设计及其应用 解析 试题三 论企业集成平台的理解与应用 解析 &#xff08;1&#xff09;通信服务 &#xff08;2&#xff09;信息集成服务 &#xff08;3&#xff09;应用集成服务 &#xff08;…

计算机网络基础:从IP地址到分层模型

计算机网络 1.计算机网络概述 概述 ​ 计算机网络是指两台或更多的计算机组成的网络&#xff0c;在同一个网络中&#xff0c;任意两台计算机都可以直接通信。互联网是网络的网络&#xff08;Internet&#xff09;&#xff0c;即把很多计算机网络连接起来&#xff0c;形成一个…

SpringCloud篇(服务提供者/消费者)(持续更新迭代)

在服务调用关系中&#xff0c;会有两个不同的角色&#xff1a; 服务提供者&#xff1a;一次业务中&#xff0c;被其它微服务调用的服务。&#xff08;提供接口给其它微服务&#xff09; 服务消费者&#xff1a;一次业务中&#xff0c;调用其它微服务的服务。&#xff08;调用…

【UML】类图及其六种关系,超详细介绍,细节满满

目录 一、概念 推荐一个画UML相关图的软件&#xff1a;ProcessOn 二、快速介绍类图 1、普通类的类图 2、抽象类的类图 3、接口的类图 三、类与类之间的关系 &#xff08;一&#xff09;、关联关系 1、单向关联 2、双向关联 3、自关联 &#xff08;二&#xff09;、聚…

HTML文件中引入jQuery的库文件

方法一&#xff1a; 1. 首先&#xff0c;在官方网站(https://jquery.com/)上下载最新版本的jQuery库文件&#xff0c;通常是一个名为jquery-x.x.x.min.js的文件。 2. 将下载的jquery-x.x.x.min.js文件保存到你的项目目录中的一个合适的文件夹中&#xff0c;比如将它保存在你的项…

使用Wireshark获取USB HID(Human Interface Device)报告描述符

使用Wireshark选择需要获取的USB进行抓取数据&#xff0c;找到设备&#xff08;host&#xff09;接收信息的数据 第二栏出现hid报告&#xff0c;右击选择复制流 将复制的内容粘贴到USB标准请求及描述符在线分析工具 - USB中文网 进行解析 以图中获取手写板的数据为例&#xff…

ReactPress与WordPress:一场内容管理系统的较量

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress WordPress官网&#xff1a;https://wordpress.org/ ReactPress与WordPress&#xff1a;一场内容管理系统的较量 在当今数字化时代&#xff0c;内容管理系统&#xff08;CMS&#xff09;已成为…

DevExpress WinForms中文教程:Data Grid - 如何绑定到实体框架数据源?

在本教程中&#xff0c;您将学习如何将DevExpress WinForms的网格控件绑定到实体框架数据源、如何使用数据注释属性来更改网格显示和管理数据的方式&#xff0c;以及如何将单元格值更改发送回数据源。 P.S&#xff1a;DevExpress WinForms拥有180组件和UI库&#xff0c;能为Wi…

使用多种机器学习调参模型进行二分类建模的全流程,代做分析辅导

使用多种机器学习调参模型进行二分类建模的全流程教程 机器学习全流程分析各个模块用到的总的参数文件 0. 分析参数文件 参数文件名称&#xff1a;total_analysis_params_demo.xlsx &#xff0c;很多分析模块都是这个总的参数文件&#xff0c;我的这个总的参数文件如果有更新…

材质(一)

描述&#xff1a; 材质蓝图&#xff0c;蓝图可以这么定义&#xff0c;是一种数据结构&#xff0c;是一种带有流水线的模糊的数据结构&#xff0c; 材质蓝图也是一种蓝图。 示例操作:

SCI论文数据可视化的在线网址

目录 SCI论文数据可视化的在线网址 EVenn(Evenn):免费 SCI论文数据可视化的在线网址 数据可视化的在线网址,以下是一些值得推荐的资源: ImageGP(ImageGP | ImageGP):该平台可以在线生成常见的线图、柱状图、散点图、箱线图、集合图、热图和直方图等。用户只需粘贴数…

电子应用产品设计方案-4:基于物联网和人工智能的温度控制器设计方案

一、概述 本温度控制器旨在提供高精度、智能化、远程可控的温度调节解决方案&#xff0c;适用于各种工业和民用场景。 二、系统组成 1. 传感器模块 - 采用高精度的数字式温度传感器&#xff0c;如 TMP117&#xff0c;能够提供精确到 0.01C 的温度测量。 - 配置多个传感器分布在…

5G的发展演进

5G发展的驱动力 什么是5G [远程会议&#xff0c;2020年7月10日] 在来自世界各地的政府主管部门、电信制造及运营企业、研究机构约200多名会议代表和专家们的共同见证下&#xff0c;ITU-R WP 5D#35e远程会议宣布3GPP 5G技术&#xff08;含NB-IoT&#xff09;满足IMT-2020 5G技…

人工智能--自然语言处理简介

上一篇&#xff1a;《人工智能模型训练中的数据之美——探索TFRecord》 序言&#xff1a;自然语言处理&#xff08;NLP&#xff09;是人工智能中的一种技术&#xff0c;专注于理解基于人类语言的内容。它包含了编程技术&#xff0c;用于创建可以理解语言、分类内容&#xff0c…

第8章 利用CSS制作导航菜单

8.1 水平顶部导航栏 水平莱单导航栏是网站设计中应用范围最广的导航设计&#xff0c;一般放置在页面的顶部。水平 导航适用性强&#xff0c;几乎所有类型的网站都可以使用&#xff0c;设计难度较低。 如果导航过于普通&#xff0c;无法容纳复杂的信息结构&#xff0c;就需要在…

企望制造ERP系统 drawGrid.action SQL注入致RCE漏洞复现

0x01 产品简介 企望制造ERP系统是一款专为制造企业设计的企业资源计划(ERP)软件,旨在优化企业的资源配置,提高运营效率,并增强企业的竞争力。系统集成了财务管理、生产管理、供应链管理、客户关系管理(CRM)、人力资源管理(HRM)等多个核心功能模块,能够全面覆盖企业的…

基于JDBC的书库系统(MySQL)

一、创建数据库中的表 1、需求 有一张表叫javabook【创建表要求使用sql语句进行】 表中列 bookid 整数自增类型 表中列 bprice 小数类型 表中列 bookname 字符串类型 长度不能小于50 工程和包要求&#xff1a; domain dao …

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪BD311R 发布时间: 2024-10-23 11:28:42 一、 产品图片&#xff1a; 二、 产品特性&#xff1a; 4G性能&#xff1a;支持2K超高清图传&#xff0c;数据传输不掉帧&#xff0c;更稳定。 独立北…

腾讯音乐2024Q3财报:“稳”是核心,再进一步

11月12日&#xff0c;腾讯音乐娱乐集团&#xff08;以下简称“腾讯音乐”&#xff09;发布了截至2024年9月30日止的第三季度未经审计财务报告&#xff0c;各项核心财务指标均符合市场预期。本季度总收入为70.2亿元&#xff0c;同比增长6.8%&#xff1b;调整后净利润为19.4亿元&…