Sass语法小册-笔记迁移

Sass

1、@extend

一个元素使用的样式与另一个元素完全相同,但又添加了额外的样式。

.a{width: 100px;height: 100px;background-color: greenyellow;}
.b{@extend .a;background-color: orangered;//覆盖.a继承来的背景色
}
结果-》
.b[data-v-5d9daadb] {background-color: orangered;
}<style>
.a[data-v-5d9daadb], .b[data-v-5d9daadb] {width: 100px;height: 100px;background-color: greenyellow;--这个被覆盖掉

2、@if @else if @else

@if 的表达式返回值不是 false 或者 null 时,条件成立,输出 {} 内的代码:

p {@if 1 + 1 == 2 { border: 1px solid; }@if 5 < 3 { border: 2px dotted; }@if null  { border: 3px double; }
}
-》
p {border: 1px solid;
}
if else if else
$type: monster;
p {@if $type == ocean {color: blue;} @else if $type == matador {color: red;} @else if $type == monster {color: green;} @else {color: black;}
}
p {color: green; }

3、循环@for @while

@for

@for 指令可以在限制的范围内重复输出格式,每次按要求(变量的值)对输出结果做出变动。这个指令包含两种格式:@for $var from <start> through <end>,或者 @for $var from <start> to <end>,区别在于 throughto 的含义:当使用 through 时,条件范围包含 <start><end> 的值,而使用 to 时条件范围只包含 <start> 的值不包含 <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; }
这里的i 1 2 3 。如果使用from  to 这里的i 就是1 2 不包含end
@while

@while 指令重复输出格式直到表达式返回结果为 false。这样可以实现比 @for 更复杂的循环,只是很少会用到。例如:

$i: 6;
@while $i > 0 {.item-#{$i} { width: 2em * $i; }$i: $i - 2;
}
.item-6 {width: 12em; }.item-4 {width: 8em; }.item-2 {width: 4em; }

4、@each

each相当于for in,能够遍历一个列表。

@each 指令的格式是 $var in <list>, $var 可以是任何变量名,比如 $length 或者 $name,而 <list> 是一连串的值,也就是值列表。

@each $var in -1,-2,-3{.item#{$var}{color:red;}
}
这里的$var 就是-1 -2 -3

在这里插入图片描述

5、Mixin混合 @include引入混合

混合指令(Mixin)用于定义可重复使用的样式,避免了使用无语意的 class,比如 .float-left。混合指令可以包含所有的 CSS 规则,绝大部分 Sass 规则,甚至通过参数功能引入变量,输出多样化的样式。

使用 @include 指令引用混合样式,格式是在其后添加混合名称,以及需要的参数(可选):

@mixin center_hover{&:hover{display: flex;justify-content: center;align-content: center;color: yellow;}
}.a{@include center_hover();width: 100px;height: 100px;background-color: greenyellow;
}
.b{@extend .a;background-color: orangered;}

在这里插入图片描述

5.1、混入传参

参数用于给混合指令中的样式设定变量,并且赋值使用。在定义混合指令的时候,按照变量的格式,通过逗号分隔,将参数写进圆括号里。引用指令时,按照参数的顺序,再将所赋的值对应写进括号:

@mixin center_hover($bgc,$tx){&:hover{display: flex;justify-content: center;align-content: center;color: $bgc;transform: translateX($tx);}
}
.a{@include center_hover(gray,10px);也可以写成关键词参数 @include center_hover($bgc:gray,$tx:10px);width: 100px;height: 100px;background-color: greenyellow;}.b{@extend .a;background-color: orangered;}

5.2、向混入中导入内容@content

类似于插槽

在引用混合样式的时候,可以先将一段代码导入到混合指令中,然后再输出混合样式,额外导入的部分将出现在 @content 标志的地方:

@mixin content_margin(){@content;
}
@include content_margin{.a{margin: 20px;}
}.a{@include content_margin();}

6、函数指令@function

@function computed_width($n){@return $n*100px 
}width: computed_width(7); ->700px

7、关键词

7.1、插值语句#{}

#{}插值语句:通过 #{} 插值语句可以在选择器或属性名中使用变量:

  1. $name: foo;
    $attr: border;
    p.#{$name} {#{$attr}-color: blue;
    }
    

7.2、父级元素选择器&

&参考当前元素的父元素选择器,当父元素不存在&`将为null

如果父元素是a,下面代码就是a:hover

&:hover{color:red;
}

8.数据类型

8.1、数组

$list:(1px,2px,5px,6px)

nth 函数可以直接访问数组中的某一项;join 函数可以将多个数组连接在一起;append 函数可以在数组中添加新值;而 @each 指令能够遍历数组中的每一项。

nth(列表,index)
$colors: red, green, blue;
background-color: nth($colors, 2); // 输出 greenjoin()
$list1: 1, 2, 3;
$list2: a, b, c;
$list3: join($list1, $list2, "-"); // 输出 1-a, 2-b, 3-c如果未提供分隔符 `$separator`,则默认使用逗号作为分隔符。$list3: join($list1, $list2); // 输出 1, 2, 3, a, b, c$colors: red, green, blue;
$font-sizes: 12px, 14px, 16px;@each $color in $colors {@each $font-size in $font-sizes {$class-name: join(nth($color, 1), nth($font-size, 1), "-");.#{$class-name} {color: $color;font-size: $font-size;}}
}
结果.red-12px、.red-14px 和 .red-16px,以及类似的类 .green-12px、.green-14px 和 .green-16px 和 .blue-12px、.blue-14px 和 .blue-16px。

8.2、对象Maps

$map: (key1: value1, key2: value2, key3: value3);//map-get函数用于查找键值
$colors: (red: #ff0000,green: #00ff00,blue: #0000ff
);background-color: map-get($colors, red); // 输出 #ff0000//map-merge函数用于map和新加的键值融合
$map1: (a: 1,b: 2
);$map2: (b: 3,c: 4
);$map3: merge($map1, $map2); // 输出 (a: 1, b: 3, c: 4)
函数也可以将映射与其他数据类型(例如列表、字符串等)合并。$map: (a: 1,b: 2
);
$list: (3, 4);
$string: "hello";$merged: merge($map, $list, $string); // 输出 (a: 1, b: 2, 1: 3, 2: 4, 3: h, 4: e, 5: l, 6: l, 7: o)//@each命令可添加样式到一个map中的每个键值对。
$colors: (red: #ff0000,green: #00ff00,blue: #0000ff
);$font-sizes: (small: 12px,medium: 14px,large: 16px
);@each $color, $color-value in $colors {@each $font-size, $font-size-value in $font-sizes {$class-name: "#{$color}-#{$font-size}";.$class-name {color: $color-value;font-size: $font-size-value;}}
}
编译后的结果.red-small、.red-medium、.red-large、.green-small、.green-medium、.green-large、.blue-small、.blue-medium 和 .blue-large。

9.综合示例

①简化媒体查询

@devices-settings('phone':(320px,480px),'pad':(481px,768px,),'notebook':(769px,1024px,),'desktop':(1025px,1200px),'tv':1201px
)
@mixin respond-to($device){$device-setting : map-get($devices-settings,$device);@if type-of($device-setting) == 'list'{@min : nth($device-setting,1);@max : nth($device-setting,2);@media(min-width:$min) and (max-width:$max){@content}}@else{@media(min-width:$device-setting){@content}}
}
.test{@include respond-to('phone'){height:50px}	
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Github 2024-03-11 开源项目周报 Top15

根据Github Trendings的统计,本周(2024-03-11统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目3Jupyter Notebook项目3C#项目1HTML项目1CSS项目1Dart项目1Lua项目1Shell项目1Rust项目1Java项目1C++项目1屏幕截图转…

HTML 语义化:构建优质网页的关键

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

蓝桥杯真题讲解:整数删除

蓝桥杯真题讲解&#xff1a;整数删除 一、视频讲解二、暴力代码三、正解代码 一、视频讲解 蓝桥杯真题讲解&#xff1a;整数删除 二、暴力代码 // 暴力模拟 #include<bits/stdc.h> #define int long long #define INF 0x3f3f3f3f3f3f3f using namespace std; const in…

Java后端八股文之Redis

文章目录 1. Redis是什么&#xff1f;2. Redis为什么这么快&#xff1f;3. 为什么要使用缓存&#xff1f;4. Redis几种使用场景&#xff1a;5. Redis的Zset底层为什么要使用跳表而不是平衡树、红黑树或者B树&#xff1f;6.Redis持久化6.1 什么是RDB持久化6.1.1RDB创建快照会阻塞…

蓝桥杯[OJ 1621]挑选子串-CPP-双指针

目录 一、题目描述&#xff1a; 二、整体思路&#xff1a; 三、代码&#xff1a; 一、题目描述&#xff1a; 二、整体思路&#xff1a; 要找子串&#xff0c;则必须找头找尾&#xff0c;找头可以遍历连续字串&#xff0c;找尾则是要从头的基础上往后遍历&#xff0c;可以设头…

STM32 学习11 独立看门狗与窗口看门狗

STM32 学习11 独立看门狗与窗口看门狗 一、**看门狗概述**二、**STM32中的看门狗类型**1. 独立看门狗&#xff08;IWDG&#xff09;&#xff08;1&#xff09;基本概念&#xff08;2&#xff09;独立看门狗框图&#xff08;3&#xff09;独立看门狗配置步骤&#xff08;4&#…

【机器学习】科学库使用第1篇:机器学习(常用科学计算库的使用)基础定位、目标【附代码文档】

机器学习&#xff08;科学计算库&#xff09;完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;机器学习&#xff08;常用科学计算库的使用&#xff09;基础定位、目标&#xff0c;机器学习概述&#xff0c;1.1 人工智能概述&#xff0c;1.2 人工智能发展历…

ChatGPT国内能用吗?中国用户怎么才能使用ChatGPT?

与ChatGPT类似的国内网站&#xff0c;他们都能提供和ChatGPT相似的能力&#xff0c;而且可以在国内直接使用。 点击直达方式 百科GPT官网&#xff1a;baikegpt.cn ChatGPT是基于GPT-3.5架构的语言模型的一个实例&#xff0c;由OpenAI开发。以下是ChatGPT的发展历史&#xff1…

linux_aarch64_qt环境搭建

平台环境&#xff1a; ubuntu 16.04&#xff1a; gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12) aarch64 gnu gcc版本&#xff1a; gcc-linaro-5.4.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz Qt交叉编译版本: qt-everywhere-src-5.12.9.tar.xz 一、aarch64编…

信息系统项目管理师009:消费互联网(1信息化发展—1.3现代化创新发展—1.3.3 消费互联网)

文章目录 1.3.3 消费互联网1.基本属性2.应用新格局 1.3.3 消费互联网 消费互联网是以个人为用户&#xff0c;以日常生活为应用场景的应用形式&#xff0c;满足消费者在互联网中的消费需求而生的互联网类型。消费互联网以消费者为服务中心&#xff0c;针对个人用户提升消费过程的…

Elastic Stack--08--SpringData框架

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 SpringData[官网&#xff1a; https://spring.io/projects/spring-data](https://spring.io/projects/spring-data) Spring Data Elasticsearch 介绍 1.SpringData-…

什么是数据采集与监视控制系统(SCADA)?

SCADA数据采集是一种用于监控和控制工业过程的系统。它可以实时从现场设备获得数据并将其传输到中央计算机&#xff0c;以便进行监控和控制。SCADA数据采集系统通常使用传感器、仪表和控制器收集各种类型的数据&#xff0c;例如温度、压力、流量等&#xff0c;然后将这些数据汇…

Java 使用 EasyExcel 实现导入导出(新手篇教程)

官网镇楼↓&#xff0c;觉得我写的不好的同学可以去官网看哦 EasyExcel Maven <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.3</version> </dependency> Excel 导入 示例&…

【亲测有效】解决三月八号ChatGPT 发消息无响应!

背景 今天忽然发现 ChatGPT 无法发送消息&#xff0c;能查看历史对话&#xff0c;但是无法发送消息。 可能的原因 出现这个问题的各位&#xff0c;应该都是点击登录后顶部弹窗邀请 [加入多语言 alapha 测试] 了&#xff0c;并且语言选择了中文&#xff0c;抓包看到 ab.chatg…

ChatGPT+MATLAB应用

MatGPT是一个由chatGPT类支持的MATLAB应用程序&#xff0c;由官方Toshiaki Takeuchi开发&#xff0c;允许您轻松访问OpenAI提供的chatGPT API。作为官方发布的内容&#xff0c;可靠性较高&#xff0c;而且也是完全免费开源的&#xff0c;全程自己配置&#xff0c;无需注册码或用…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:QRCode)

用于显示单个二维码的组件。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 二维码组件的像素点数量与内容有关&#xff0c;当组件尺寸过小时&#xff0c;可能出现无法展示内容的情况&#xff0c;…

6.S081的Lab学习——Lab1: Xv6 and Unix utilities

文章目录 前言一、启动xv6(难度&#xff1a;Easy)解析&#xff1a; 二、sleep(难度&#xff1a;Easy)解析&#xff1a; 三、pingpong&#xff08;难度&#xff1a;Easy&#xff09;解析&#xff1a; 四、Primes(素数&#xff0c;难度&#xff1a;Moderate/Hard)解析&#xff1a…

使用maven打生产环境可执行包

一、程序为什么要打包 程序打包的主要目的是将项目的源代码、依赖库和其他资源打包成一个可执行的文件或者部署包&#xff0c;方便程序的发布和部署。以下是一些打包程序的重要理由&#xff1a; 方便部署和分发&#xff1a;打包后的程序可以作为一个独立的实体&#xff0c;方便…

System是什么?为什么不能直接输出null?

在看学习下面的知识前&#xff0c;得先对java核心类库有个大致的了解&#xff0c;详情可参考链接 java基本概念-扩展点-CSDN博客 1、System 1.1 System是什么&#xff1f; System是一个类&#xff0c;它包含了一些有用的属性和方法。 1.2 System实现的功能 &#xff08;1&…

openssl3.2 - 官方demo学习 - encode - ec_encode.c

文章目录 openssl3.2 - 官方demo学习 - encode - ec_encode.c概述笔记产生ecc私钥产生ecc公钥测试工程备注备注END openssl3.2 - 官方demo学习 - encode - ec_encode.c 概述 官方demos/encode 目录中给了2个例子工程 功能是载入(RSA/ECC)公钥, 然后自己就可以拿内存中的公钥对…