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

Sass基础

Sass基础

简介

Sass是一种stylesheet语言,可以被编译成CSSSass允许你使用诸如variabelsnested rulesmixinsfunctions等等语法,这些都将在本篇的接下来进行讲解。

因为之前一直学的后端,前端只是因为项目需要,简单的写过一些前端样式和界面 (javaScript,html,css) 。通过对Sass基础的了解后,感觉前端借助Sass具备了一点面向过程的感觉。

Variables

在原生的css中是没有变量这种说法的,当我们想要写一个样式时只能像这样:

body {font: 100% Helvetica, sans-serif;color: #333;
}

但是当我们在.scss中却可以借助变量来实现。

$font-stack: Helvetica, sans-serif;
$primary-color: #333;body {font: 100% $font-stack;color: $primary-color;
}

如果后端熟悉的你,是不是有点感觉了呢?😎

Sass被处理时,将$font-stack$primary-color放置到css中。

Nesting

当我们在写HTML时,可能会注意到我们会写一些基于视觉层次结构 (visual hierarchy) 的代码。你或许注意到这是一个嵌套 (nest) 的结构,但是在css中却不提供嵌套的写法。就变成下面这样,显而易见相当的麻烦。

<nav><ul></ul><li></li>
</nav>nav ul {margin: 0;padding: 0;list-style: none;
}
nav li {display: inline-block;
}

基于这个原因 ➡️ Sass提供了解决方法,你可以在写css的时候使用Sass语法来完成嵌套。可以看到ulli被嵌套写入了nav中。

nav {ul { margin: 0;  }li { display: inline-block; }
}

Modules

Sass提供了模块化支持,我们并不需要把所有的Sass写在单个文件里。听上去似乎很像C语言里的.h文件🤔是吧?

下面给出一个例子

body {font: 100% Helvetica, sans-serif;color: #333;
}.inverse {background-color: #333;color: white;
}

我们可以通过在styles.scss中使用 @use关键字来引入_example.scss来达到复用的效果。

注意❗当一个.scss要被 @use到主样式表styles.scss时,那么给他取名的时候应该在最前面**+**一个_下划线。

当一个_aaa.scss文件没有被 @use到另一个不完整的scss文件中,那么在执行sass --watch scss:css命令构建项目时就不会生成该文件为aaa.css

// _example.scss
$font-stack: Helvetica, sans-serif;
$primary-color: #333;body {font: 100% $font-stack;color: $primary-color;
}// styles.scss
@use 'example';.inverse {background-color: base.$primary-color;color: white;
}

Mixins

css中写一些prefixes时总是会有点无聊,这就是我大一时发誓“再也不碰前端”的原因🤣🤣🤣繁琐的prefixes写起来真的有够让人难受😿的。

但是Sass提供了Mixins功能,这个功能就很像函数了。

@mixin指令允许我们定义一个可以在整个样式表中重复使用的样式。比如当我们遇到下面这种令人无聊🫤的情况时!

.info {background: DarkGray;box-shadow: 0 0 1px rgba(169, 169, 169, 0.25);color: #fff;
}.alert {background: DarkRed;box-shadow: 0 0 1px rgba(139, 0, 0, 0.25);color: #fff;
}

通过 @mixin来写Mixins然后再用 @include引入样式。

@mixin theme($theme: DarkGray) {background: $theme;box-shadow: 0 0 1px rgba($theme, .25);color: #fff;
}.info {@include theme;
}
.alert {@include theme($theme: DarkRed);
}

Extend/Inheritance

使用 @extend让你的样式分享到1个或者多个选择器上。我们来看一个简单Demo

.error, .success, .message {border: 1px solid #ccc;padding: 10px;color: #333;
}.success {border-color: green;
}.error {border-color: red;
}

可以看到.success.error的样式和.warning几乎相同,这种情况下使用 @extend就非常好了。

相同的样式通过%stylesheet的格式命名,然后让选择器 @extend这些样式就🆗了。

/* This CSS will print because %message-shared is extended. */
%message-shared {border: 1px solid #ccc;padding: 10px;color: #333;
}// This CSS won't print because %equal-heights is never extended.
%equal-heights {display: flex;flex-wrap: wrap;
}.message {@extend %message-shared;
}.success {@extend %message-shared;border-color: green;
}.error {@extend %message-shared;border-color: red;
}

注意如果一个%stylesheet没有被extend的话就不会被编译生成。

Operators

Sass让数学运算在css中成为可能。Sass提供了诸如+-*math.div()%的运算符号,至于代表什么运算我觉得没必要再说了。

.container {display: flex;
}article[role=main] {width: 62.5%;
}aside[role=complementary] {width: 31.25%;margin-left: auto;
}

需要 @use sass:math

@use "sass:math";.container {display: flex;
}article[role="main"] {width: math.div(600px, 960px) * 100%;
}aside[role="complementary"] {width: math.div(300px, 960px) * 100%;margin-left: auto;
}

本篇参考Sass官方文档Sass: Sass Basics (sass-lang.com)

更多内容可移步🏃Sass: Documentation (sass-lang.com)

相关文章:

Sass基础

Sass基础 简介 Sass是一种stylesheet语言&#xff0c;可以被编译成CSS。Sass允许你使用诸如variabels&#xff0c;nested rules&#xff0c;mixins&#xff0c;functions等等语法&#xff0c;这些都将在本篇的接下来进行讲解。 因为之前一直学的后端&#xff0c;前端只是因为…...

Java中的消息队列有哪些?

在Java中&#xff0c;有几种常见的消息队列实现&#xff0c;包括&#xff1a; Apache Kafka&#xff1a;一个分布式流处理平台&#xff0c;具有高吞吐量、可持久化、可扩展等特点。 RabbitMQ&#xff1a;一个开源的消息代理&#xff0c;实现了AMQP&#xff08;高级消息队列协议…...

多维时序 | Matlab实现GRU-Adaboost和GRU多变量时间序列预测对比

多维时序 | Matlab实现GRU-Adaboost和GRU多变量时间序列预测对比 目录 多维时序 | Matlab实现GRU-Adaboost和GRU多变量时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | Matlab实现GRU-Adaboost和GRU多变量时间序列预测对比 模型描述 M…...

测试用例编写规范参考

章节目录&#xff1a; 一、规范目的二、模块划分三、颗粒度规范四、编写规范五、具体分项5.1 用例标题5.2 前置条件5.3 操作步骤5.4 预期结果 六、用例维护七、结束语 一、规范目的 规范合理&#xff0c;可执行性。一定要保证高可读性。 二、模块划分 同级别、同等级功能点。…...

unity3d:功能验证,收集开源项目的工程合集

unity3d功能验证&#xff0c;和收集开源项目的工程合集 目录持续更新地址 【腾讯文档】UnityForTest目录 https://docs.qq.com/doc/DWm9HSkVhTGdyUUVo 源码 https://github.com/luoyikun/UnityForTest 动画 创建骨骼动画 BoneAnimation场景 代码创建Mesh&#xff0c;骨骼…...

plotly_beforehover 用法:

在Plotly.js中&#xff0c;plotly_beforehover是在鼠标悬停在数据点上之前触发的回调事件。它的主要作用是在鼠标悬停事件发生前做一些准备工作。 plotly_beforehover事件是与图表对象绑定的&#xff0c;可以通过调用on方法来绑定事件处理程序。下面是一个示例代码&#xff1a…...

利用 AI 赋能云安全,亚马逊云科技的安全技术创新服务不断赋能开发者

文章分享自亚马逊云科技 Community Builder&#xff1a;李少奕 2023年6月14日&#xff0c;一年一度的亚马逊云科技 re:Inforce 全球大会在美国安纳海姆落下了帷幕。re:Inforce 是亚马逊云科技全球最大的盛会之一&#xff0c;汇集了来自全球各地的安全专家&#xff0c;共同学习、…...

18. 填坑Ⅰ

Description 又是北湖深坑&#xff0c;惊不惊喜&#xff0c;意不意外&#xff1f;&#xff01; 觉得用水填湖太没意思了&#xff0c;用石头填坑多有意思。 假设北湖的地面还是一维的&#xff0c;每一块宽度都为1&#xff0c;高度是非负整数&#xff0c;用一个数组来表示。 现提…...

CSS 实现平面圆点绕椭圆动画

前言 &#x1f44f;CSS实现平面圆点绕椭圆动画,速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现原理 transform-style&#xff1a;CSS 属性 transform-style 设置元素的子元素是位于 3D 空间中还是平面中。如果选择平面&#xf…...

docker login : x509: certificate signed by unknown authority

一. 背景 docker login 登录harbor镜像仓库报错. [rootmaster01 sloth]# docker login docker.harbor.master01.com Username: bigdata Password: Error response from daemon: Get https://docker.harbor.master01.com/v2/: x509: certificate signed by unknown authority …...

金蝶云星空二开,插件查看工具

可查询单据上挂载的系统原有插件、二开插件及插件类型 1.支持模糊查询单据列表 2.支持项目与账套二开插件对比 3.支持金蝶不同账套之间对比差异 操作步骤&#xff1a; 1.登陆界面&#xff0c;选择金蝶云管理中心账套登录获取账套列表&#xff1b; 2.单一标识查询&#xff1a;…...

error: ‘std::_hypot‘ has not been declared using std::hypot;

Cmake 使用qt的编译器 编译opencv时 执行mingw32-make时出现了错误 本质原因就是 _hypot 没有声明。所以找到对应的文件声明一下 就行了。 E:\*****\Qt5.14.1\Tools\mingw730_64\lib\gcc\x86_64-w64-mingw32\7.3.0\include\c 下面的math.h 文件。 可以看到这个文件有一个…...

介绍 Apache Spark 的基本概念和在大数据分析中的应用。

Apache Spark 是一个快速的开源大数据处理引擎&#xff0c;可以用于大数据处理、机器学习、图形计算等领域。它可以在多种计算环境中运行&#xff0c;包括独立模式、YARN、Mesos、Kubernetes等云计算平台。 Spark基于RDD&#xff08;Resilient Distributed Datasets&#xff0…...

Java设计模式:四、行为型模式-09:模板模式

文章目录 一、定义&#xff1a;模板模式二、模拟场景&#xff1a;模板模式三、改善代码&#xff1a;模板模式3.0 引入依赖3.1 工程结构3.2 模板模式结构图3.3 爬取商品生成海报实现3.3.1 HTTP获取连接类3.3.2 定义执行顺序的抽象类3.3.3 当当爬取抽象实现类3.3.4 京东爬取抽象实…...

【前端】Vue2 脚手架模块化开发 -快速入门

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理Vue2 脚手架模块化开发 &#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关注一下&#x1faf0;&#x…...

【广州华锐互动】AR昆虫认知学习系统实现对昆虫形态的捕捉和还原

随着科技的不断发展&#xff0c;人们对自然界的认识也在不断加深。在这个过程中&#xff0c;AR&#xff08;增强现实&#xff09;技术的出现为人们带来了全新的体验方式。为此&#xff0c;广州华锐互动开发了AR昆虫认知学习系统&#xff0c;本文将为大家详细介绍这款系统的特点…...

nginx压缩ttf文件 mine.types的作用

最近在运维过程中&#xff0c;前端提到发现在linux上下载某ttl文件&#xff08;字体文件&#xff09;太大&#xff0c;传输过程比较慢&#xff0c;于是就想着使用nginx的gzip进行压缩&#xff0c;经过不断尝试&#xff0c;终于发现在nginx的配置目录/etc/nginx/mine.types 文件…...

【云原生】Kubernetes容器编排工具

目录 1. K8S介绍 1.1 k8s的由来 下载地址 1.2 docker编排与k8s编排相比 1.3 传统后端部署与k8s 的对比 传统部署 k8s部署 ​2. k8s的集群架构与组件 &#xff08;1&#xff09; Kube-apiserver &#xff08;2&#xff09;Kube-controller-manager &#xff08;3&a…...

【Css】Less和Sass的区别:

文章目录 一、定义&#xff1a;【1】Less【2】Sass 二、相同之处:三、区别:【1】实现方式&#xff1a;【2】实现方式&#xff1a;【3】混合(Mixins)&#xff1a;【4】解析方式&#xff1a;【5】变量的作用域&#xff1a;【6】比起Less 一、定义&#xff1a; 【1】Less Less 是…...

八、MySQL(DML)如何修改表中的数据?

1、修改表数据 &#xff08;1&#xff09;基础语法&#xff1a; update 表名 SET 字段名1数值1,字段名2数值2&#xff0c;…… [where 条件]; &#xff08;2&#xff09; 操作实例&#xff1a; 第一步&#xff1a; 先准备一张表 insert into things values (10086,18,0x12…...

单细胞分析进阶:手把手教你用hdWGCNA挖掘Treg细胞关键基因模块(附完整代码)

单细胞分析进阶&#xff1a;手把手教你用hdWGCNA挖掘Treg细胞关键基因模块&#xff08;附完整代码&#xff09; 在免疫微环境中&#xff0c;调节性T细胞&#xff08;Treg&#xff09;扮演着维持免疫平衡的关键角色。理解这些细胞的基因共表达网络对于揭示其功能机制至关重要。本…...

OpenClaw+GLM-4.7-Flash:个人财务管理自动化实践

OpenClawGLM-4.7-Flash&#xff1a;个人财务管理自动化实践 1. 为什么需要自动化财务管理 每个月末&#xff0c;我都会面对一堆散乱的电子账单和银行流水。手动整理这些数据不仅耗时&#xff0c;还容易出错。直到我发现OpenClaw与GLM-4.7-Flash的组合&#xff0c;才真正实现了…...

Z-Image-Turbo-辉夜巫女项目实战:基于C语言的简单调用示例

Z-Image-Turbo-辉夜巫女项目实战&#xff1a;基于C语言的简单调用示例 1. 引言 你可能觉得&#xff0c;AI模型调用是Python、JavaScript这些高级语言的专利&#xff0c;C语言这种“古老”的系统级语言&#xff0c;似乎和时髦的AI应用隔着一道墙。但事实并非如此。AI模型通过H…...

只剩马斯克自己!xAI 11个联合创始人跑光了

11位联合创始人三年出清、只剩马斯克一人&#xff0c;xAI这场「天团散伙」背后&#xff0c;藏着AI时代最残酷的人才战争与帝国裂缝。3月28日&#xff0c;Ross Nordeen悄悄摘掉了自己在X平台上的xAI员工认证标识。他发了一张照片——「触碰一些草」。没有长篇告别信&#xff0c;…...

Zemax优化别再乱点‘锤子’了!一个光学新手的真实踩坑与避坑指南

Zemax优化实战&#xff1a;从新手误区到高效操作的进阶指南 刚接触Zemax的光学设计师们&#xff0c;往往会被软件中那个神秘的"锤形优化"按钮所吸引——看似简单的点击就能自动改善设计&#xff0c;这种诱惑难以抗拒。但很快就会发现&#xff0c;盲目依赖这个功能可能…...

从电机控制实战看Q格式:TI C2000 DSP的定点数优化秘籍

电机控制实战&#xff1a;TI C2000 DSP中Q格式的定点数优化艺术 在实时电机控制系统中&#xff0c;计算效率和精度往往是一对矛盾体。当TI C2000系列DSP遇上无刷电机控制&#xff0c;Q格式定点数运算便成为平衡这对矛盾的关键技术。本文将深入探讨如何通过Q格式在资源受限的定点…...

【MATLAB实战:从BCI Competition IV 2a数据加载到预处理全流程】

1. 初识BCI Competition IV 2a数据集 第一次接触脑机接口&#xff08;BCI&#xff09;研究时&#xff0c;最让人头疼的就是数据预处理。BCI Competition IV 2a数据集作为入门级黄金标准&#xff0c;包含了9名受试者的EEG数据&#xff0c;记录了左手、右手、双脚和舌头四种运动想…...

【AI】-----向量数据库核心应用场景

向量数据库核心应用场景 1. 大模型 / RAG 知识库&#xff08;最主流&#xff09; 企业内部文档、合同、产品手册语义检索解决大模型幻觉、知识过时问题客服机器人、智能问答、私域知识库 2. 推荐系统 电商&#xff1a;相似商品、猜你喜欢短视频/内容&#xff1a;基于用户兴趣的…...

IDC行业专家交流纪要

Q&#xff1a;字节 2026 年 IDC 招标的总需求、国内需求、当前招标进度分别是怎样的&#xff1f;此次招标呈现出怎样的特点&#xff0c;背后又有哪些原因&#xff1f;A&#xff1a;字节跳动 2026 年 IDC 招标整体规划总需求约 1.8GW&#xff0c;剔除海外需求削减的部分后&#…...

从标定板到生产线:OpenCV实战工业相机畸变校正全流程

1. 工业相机畸变&#xff1a;产线精度杀手的前世今生 第一次在产线上看到相机拍出来的零件尺寸和实物差了0.5毫米时&#xff0c;我盯着屏幕愣了三分钟——这个误差足以让整个自动化装配线变成废品生产线。工业相机的畸变就像近视眼没戴眼镜&#xff0c;看到的物体位置和形状都…...