sass介绍

1、Sass简介

Sass 是一种 CSS 的预编译语言。它提供了 变量(variables)、嵌套(nested rules)、 混合(mixins)、 函数(functions)等功能,并且完全兼容 CSS 语法。Sass 能够帮助复杂的样式表更有条理, 并且易于在项目内部或跨项目共享设计。

浏览器并不支持 Sass 代码。因此,你需要使用一个 Sass 预处理器将 Sass 代码转换为 CSS 代码。

在使用 Sass 之前,你需要在项目中安装它;

1.1、npm安装步骤:

确保已经安装了Node.js和npm;

//全局安装
npm install -g sass
//查看安装版本
sass --version
//简写
sass -v

使用前需要先创建一个SCSS文件,例如common.scss;
sass文件一般保存在.scss的文件中,css则是保存在.css文件中;

其他安装介绍

2、变量

变量通常用来存储一些会重复利用的样式;例如颜色、字体;
格式:$符号作为变量的标志;
命名:变量名是不以数字开头的可包含字母、数字、下划线、横线(连接符),可使用驼峰命名法、下划线链接命名法;
写法:同css,变量名与值之间用冒号分割;
Sass map :Sass map 是一种数据结构,允许你存储一系列的键值对,类似于 JavaScript 中的对象

sass变量可以存储的信息包含:字符串、数字、颜色值、布尔值、列表、null值;

//变量创建
$mainColor:#00b362;//颜色变量
$blackColor:#000;
$fontSize:16px; //数字变量
$fontFamily:"Helvetica Neue", Helvetica, Arial, sans-serif;//字符串变量
$color-map: (color1: #fa0000, color2: #fbe200, color3: #95d7eb);//Sass map
//变量使用
body{font:14px $fontStack;color: $blackColor;
}
//你可以使用 map-get 函数来获取特定键的值
.ceshi-main{p{font-size: 28rpx;}p:nth-child(1){color: map-get($colorMap, color1);}p:nth-child(2){color: map-get($colorMap, color2);}p:nth-child(3){color: map-get($colorMap, color3);}
}

3、嵌套

Sass 允许您嵌套 CSS 选择器,嵌套方式 与 HTML 的视觉层次结构相同。请注意,过度嵌套的规则 将导致过度限定的 CSS,这些 CSS 可能很难维护,并且 通常被认为是不好的做法。

使用大括号和缩进来表示层级关系,可以多层嵌套

//.scss嵌套写法
nav {ul {margin: 0;padding: 0;list-style: none;}li { display: inline-block; }a {display: block;padding: 6px 12px;text-decoration: none;}& > p {color: #f00;}& + p {color: #0ff;}&:nth-child(2) a{color: #ff0;}
}
//.css相同层次结构写法
nav ul {margin: 0;padding: 0;list-style: none;
}
nav li {display: inline-block;
}
nav a {display: block;padding: 6px 12px;text-decoration: none;
}
nav > p{color: #f00;
}
nav + p{color: #0ff;
}
nav:nth-child(2) a{color: #ff0;
}

备注:
nav > p 写法为后代选择器,只匹配直接后代;
nav + p 写法为兄弟组合器,只有与nav相邻的P标签会匹配此语法;
nav:nth-child(2) 写法为伪类选择器;

<nav><p></p>
</nav>

在这里插入图片描述

4、混合@mixin与@include

混合器类似于函数,可以包含可重用的样式和变量,简化复杂样式定义。

@mixin 指令允许我们定义一个可以在整个样式表中重复使用的样式。
@include 指令可以将混入(mixin)引入到文档中。

//定义无参数的混合器
@mixin name{background: #fff;box-shadow: 0 0 1px rgba(0,0,0,.25);color: #222;
}.main{@include name;//使用默认值
}
//定义有参数混合器,name混合器名称,$theme混合器传参,#f00参数默认值
@mixin name($theme:#f00){background: $theme;box-shadow: 0 0 1px rgba($theme, .25);color: #fff;
}//使用混合器,使用@include关键字
.info{@include name;//使用默认值
}
.success {@include name($theme:#73df8a);//传参
}
//设置可变参数
@mixin box-shadow($shadows...){-moz-box-shadow: $shadows;-webkit-box-shadow: $shadows;box-shadow: $shadows;
}//引用
.shadows {@include box-shadow(0px 4px 5px #666, 2px 6px 10px #999);
}
//浏览器前缀使用混入
@mixin transform($property) {-webkit-transform: $property;-ms-transform: $property;transform: $property;
}//使用
.myBox {@include transform(rotate(20deg));
}//转换为css代码
.myBox {-webkit-transform: rotate(20deg);-ms-transform: rotate(20deg);transform: rotate(20deg);
}

注意:Sass 的连接符号 - 与下划线符号 _ 是相同的,也就是 @mixin color-set { } 与 @mixin color_set { } 是一样的混入。

//具体实例设置,定义混合器
@mixin colorSet($bgColor:#fff4e4,$boxColor:#000d8b){background: $bgColor;box-shadow: 0 0 10px rgba($boxColor,0.5);-moz-box-shadow: 0 0 10px rgba($boxColor,0.5);-webkit-box-shadow: 0 0 10px rgba($boxColor,0.5);color: #000;
}
//使用混合器
.ceshi-main{.info{width: 60px;height: 60px;@include colorSet;//使用默认值}.info2{width: 60px;height: 60px;@include colorSet(#edfff1,#00470f);//使用默认值//@include colorSet($bgColor:#edfff1,$boxColor:#00470f);}
}
//渲染结果
.ceshi-main .info{width: 60px;height: 60px;background: #fff4e4;box-shadow: 0 0 10px rgba(0, 13, 139, 0.5);-moz-box-shadow: 0 0 10px rgba(0, 13, 139, 0.5);-webkit-box-shadow: 0 0 10px rgba(0, 13, 139, 0.5);color: #000;
}
.ceshi-main .info2{width: 60px;height: 60px;background: #edfff1;box-shadow: 0 0 10px rgba(0, 71, 15, 0.5);-moz-box-shadow: 0 0 10px rgba(0, 71, 15, 0.5);-webkit-box-shadow: 0 0 10px rgba(0, 71, 15, 0.5);color: #000;
}

混合器也支持嵌套

//定义混合器
@mixin mainText($size:14px,$color:#222,$lightColor:#999){color: $color;font-size: $size;p{color: $color;font-size: $size;}span{font-size: 24rpx;color: $lightColor;}
}
//使用混合器
.info{@include mainText;
}
.success{@include mainText(18rpx, #3bc157, #c6e7cd);
}
.error{@include mainText(18rpx, #e73535, #eab7b7);
}

5、sass函数

sass定义了各种类型的函数,字符串相关、数字相关、列表相关、映射相关、选择器相关、颜色相关等等;
菜鸟教程参考文档

数字函数

函数描述&实例
abs(number)返回一个数值的绝对值
ceil(number)向上取整
comparable(num1,num2)返回一个布尔值,判断num1和num2是否可以进行判断
floor(number)向下取整
max(number…)返回最大值
min(number…)返回最小值
round(number…)返回最接近该数的一个整数,四舍五入
abs(15)//结果15
abs(-15)//结果15ceil(15.20)  //结果: 16comparable(15px, 10px)//结果: true
comparable(20mm, 1cm) //结果: true
comparable(35px, 2em) //结果: falsefloor(15.80) //结果: 15max(5, 7, 9, 0, -3, -7) //结果: 9min(5, 7, 9, 0, -3, -7) //结果: -7round(15.20) //结果: 15
round(15.80) //结果: 16

Sass Map(映射)函数

函数描述&实例
map-get(map, key)返回 Map 中 key 所对应的 value(值)。如没有对应的 key,则返回 null 值。
map-has-key(map, key)判断 map 是否有对应的 key,存在返回 true,否则返回 false。
$font-sizes: ("small": 12px, "normal": 18px, "large": 24px)
map-get($font-sizes, "small") //结果: 12pxmap-has-key($font-sizes, "big") //结果: false

6、sass的@import

sass与css类似,支持@import指令;@import 指令可以让我们导入其他文件等内容;

CSS @import 指令在每次调用时,都会创建一个额外的 HTTP 请求。但,Sass @import 指令将文件包含在 CSS 中,不需要额外的 HTTP 请求。

注意:包含文件时不需要指定文件后缀,Sass 会自动添加后缀 .scss。

//创建index.scss文件
//导入 common.scss文件。
@import "common";
//common.scss文件
html,body,ul,li,ol,p,img,h1,span{margin:0;padding:0;
}

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

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

相关文章

[JavaScript]如何利用作用域块避免闭包内存泄漏?

出自《你不知道的JavaScript》上卷 以下是本书给出的反例: function process (data) {...} var bigdata{...} process(bigdata); var btn document.getElementById(x); btn.addEventListener(click, function click{...});click会被回调在其他位置, 在addEventListener函数内…

leetcode hot100(五)

11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你…

Unity 云渲染本地部署方案

Unity Render Streaming 云渲染环境搭建 0.安装 Unity Render Streaming 实现原理: 服务器与客户端实现功能包括: 详细内容见官方文档&#xff1a; 官方文档: https://docs.unity3d.com/Packages/com.unity.renderstreaming3.1/manual/tutorial.html Unity 流送云渲染介绍: …

洛谷 P3986 斐波那契数列

P3986 斐波那契数列 题目描述 定义一个数列&#xff1a; f ( 0 ) a , f ( 1 ) b , f ( n ) f ( n − 1 ) f ( n − 2 ) f(0) a, f(1) b, f(n) f(n - 1) f(n - 2) f(0)a,f(1)b,f(n)f(n−1)f(n−2) 其中 a, b 均为正整数&#xff0c;n ≥ 2。 问有多少种 (a, b)&…

【java面型对象进阶】------继承实例

继承结构下的标准Javabean 代码如下&#xff1a; package demo10;//定义员工父类 public class Employee {private String id;private String name;private double salary;//构造方法public Employee(){}public Employee(String id,String name,double salary){this.idid;thi…

Vitis 2024.1 无法正常编译custom ip的bug(因为Makefile里的wildcard)

现象&#xff1a;如果在vivado中&#xff0c;添加了自己的custom IP&#xff0c;比如AXI4 IP&#xff0c;那么在Vitis&#xff08;2024.1&#xff09;编译导出的原本的.xsa的时候&#xff0c;会构建build失败。报错代码是&#xff1a; "Compiling blank_test_ip..."…

【图论】并查集的学习和使用

目录 并查集是什么&#xff1f; 举个例子 组成 父亲数组&#xff1a; find函数&#xff1a; union函数&#xff1a; 代码实现&#xff1a; fa[] 初始化code: find code&#xff1a; 递归实现: 非递归实现: union code : 画图模拟&#xff1a; 路径压缩&#xff1a…

Java使用FFmpegFrameGrabber进行视频拆帧,结合Thumbnails压缩图片保存到文件夹

引入依赖 <dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.17</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ja…

mysql与redis的日志策略

MySQL 和 Redis 在日志记录方面采用了不同的策略&#xff0c;分别对应写前日志&#xff08;Write-Ahead Logging, WAL&#xff09;和写后日志&#xff08;Write-After Logging&#xff09;。以下是它们的详细说明&#xff1a; 1. MySQL&#xff1a;写前日志&#xff08;Write-A…

nacos安装,服务注册,服务发现,远程调用3个方法

安装 点版本下载页面 服务注册 每个微服务都配置nacos的地址&#xff0c;都要知道 服务发现 2个是知道了解 远程调用基本实现 远程调用方法2&#xff0c;负载均衡API测试 远程调用方法3&#xff0c;注解 负载均衡的远程调用&#xff0c; 总结 面试题

Ubuntu Qt: no service found for - “org.qt-project.qt.mediaplayer“

1、前言 在一次项目过程中&#xff0c;因项目需求&#xff0c;需要将windows开发的Qt项目迁移到ubuntu系统中&#xff0c;且在某个功能项中需要播放音频&#xff0c;在windows系统中能够正常运行&#xff0c;但在ubuntu系统中却显示defaultServiceProvider::requestService(): …

Blender制作次表面材质

效果: 主要用沃罗诺伊纹理做出云絮感 然后EV开启次表面设置

用 pytorch 从零开始创建大语言模型(四):从零开始实现一个用于生成文本的GPT模型

从零开始创建大语言模型&#xff08;Python/pytorch &#xff09;&#xff08;四&#xff09;&#xff1a;从零开始实现一个用于生成文本的GPT模型 4 从零开始实现一个用于生成文本的GPT模型4.1 编写 L L M LLM LLM架构4.2 使用层归一化对激活值进行标准化4.3 使用GELU激活函数…

vmware tools灰化

Windows7 32位的某些版本&#xff0c;已经不被vmware支持。下面是解决方法&#xff1a; 安装kb4474419补丁包&#xff1a;https://www.catalog.update.microsoft.com/Search.aspx?qKB4474419网络共享。必须要虚拟机和主机可通信。此方法不错&#xff0c;但是操作起来太麻烦。…

ubuntu高并发内核参数调优 - (压测客户端调优)

业务上要求集群提供10w并发&#xff0c;10w并发听上去不是很难&#xff0c;但10w并发持续1小时呢 在业务上线之前还需要我们自己对业务进行压测&#xff0c;俗称benchmark。 压测的服务器也是需要进行性能调优的&#xff0c;以下列出调优前后的参数对比&#xff0c;更直观的分析…

html5制作2048游戏开发心得与技术分享

2048游戏开发心得与技术分享 这里写目录标题 2048游戏开发心得与技术分享项目概述技术架构1. 核心技术栈2. 项目结构 核心功能实现1. 数据结构设计2. 移动逻辑实现3. 触摸支持 性能优化1. DOM操作优化2. 事件处理优化 开发心得1. 代码组织2. 调试技巧3. 用户体验优化 项目亮点技…

dify+deepseek联网搜索:免费开源搜索引擎Searxng使用(让你的大模型也拥有联网的功能)

docker安装SearXng 项目地址:https://github.com/searxng/searxng-docker 第一步 git clone下来 git clone https://github.com/searxng/searxng-docker.git第二步 进入 searxng-docker目录中修改docker-compose.yaml(直接复制粘贴) cd searxng-dockerdocker-compose.yaml …

docker的anythingllm和open-webui压缩包分享(国内镜像拉取,百度云压缩包分享)

文章目录 前言第一部分&#xff1a;镜像获取&#x1f680; 方式一&#xff1a;切换国内下载镜像✅1. 下载anythingllm✅ 2. 下载open-webui &#x1f680;方式二&#xff1a;下载我分享的百度云✅ anythingllm压缩包百度云链接❎ open-webui压缩包 第二部分&#xff1a;下载之后…

DeepSeek-R1深度解读

deepseek提出了一种通过强化学习&#xff08;RL&#xff09;激励大语言模型&#xff08;LLMs&#xff09;推理能力的方法&#xff0c;个人认为最让人兴奋的点是&#xff1a;通过RL发现了一个叫“Aha Moment”的现象&#xff0c;这个时刻发生在模型的中间版本中。在这个阶段&…

从零实现B站视频下载器:Python自动化实战教程

一、项目背景与实现原理 1.1 B站视频分发机制 Bilibili的视频采用 音视频分离技术,通过以下方式提升用户体验: 动态码率适配(1080P/4K/HDR) 分段加载技术(基于M4S格式) 内容保护机制(防盗链/签名验证) 1.2 技术实现路线 graph TDA[模拟浏览器请求] --> B[获取加密…