CSS革命:用Sass/SCSS引领前端创新
目录
- 前言
- SCSS
- Sass
- Sass 和 SCSS 的区别
前言
在现代的前端开发中,CSS已成为呈现网页和应用程序样式的核心。然而,原生的CSS语法在大型项目中可能变得混乱、冗长且难以维护。
为了解决这些问题,SCSS(Sass CSS)和Sass(Syntactically Awesome Style Sheets)应运而生。
本文将带你简单了解sass和scss。
sass中文网
scss中文网
SCSS
SCSS(Sass CSS)是一种CSS预处理器,它扩展了普通的CSS语法,提供了更强大、更灵活的功能。
SCSS使用类似于CSS的语法,并引入了变量、嵌套、混合、继承等概念,使得CSS代码更易于编写和维护。
-
变量(Variables):您可以使用变量来存储颜色、字体、间距等重复使用的值,并在需要的地方引用它们。这样可以简化代码,方便统一修改。
$primary-color: #007bff;.button {background-color: $primary-color; }
-
嵌套选择器(Nested Selectors):可以在SCSS中嵌套选择器,以减少代码量,改善可读性。
.container {width: 100%;.title {font-size: 24px;} }
-
混合(Mixins):混合是一段可重用的代码块,可以像函数一样在需要的地方引用。它可以包含任意数量的属性和样式。
@mixin flexbox {display: flex;justify-content: center;align-items: center; }.container {@include flexbox; }
-
继承(Extend):可以通过继承样式来减少重复的CSS代码。
.button {border: 1px solid #ccc;padding: 10px; }.primary-button {@extend .button;background-color: #007bff;color: #fff; }
-
导入其他文件(Import):可以将SCSS代码拆分到多个文件中,并使用
@import
指令将它们导入到主文件中。// main.scss @import "variables"; @import "buttons";
-
@content
是 Sass/SCSS 中的特殊指令,用于在自定义的混入(Mixin)中传递代码块。通过使用@content
,可以将一个或多个代码块传递给混入,并在混入中使用这些代码块。@mixin media-query($size) {@media (max-width: $size) {@content;} }.container {width: 100%;@include media-query(768px) {background-color: #f5f5f5;} }
编译后的 CSS 代码如下所示:
.container {width: 100%; }@media (max-width: 768px) {.container {background-color: #f5f5f5;} }
应用: 创建适应不同屏幕尺寸或其他条件的样式。
以上只是SCSS的一小部分功能和用法。SCSS还提供了更多的功能,如条件语句、循环、函数等,以及灵活的配置选项,更多内容见scss中文网。
Sass
Sass(Syntactically Awesome Style Sheets)是一种CSS预处理器,它扩展了普通的CSS语法,并提供了更多的功能和特性。
Sass与SCSS非常相似,实际上,SCSS是Sass的一种语法扩展,可以说是更加兼容和易于学习的版本。
以下是一些Sass的特性和用法:
-
变量(Variables):在Sass中,使用变量来存储重复的值,例如颜色、字体大小、间距等,并在需要的地方引用它们。
$primary-color: #007bff.buttonbackground-color: $primary-color
-
嵌套选择器(Nested Selectors):在Sass中嵌套选择器,以减少代码量和改善可读性。
.containerwidth: 100%.titlefont-size: 24px
-
混入(Mixins):混入是一段可重用的代码块,在需要的地方引用它们。与SCSS类似,混入可以包含任意数量的属性和样式。
@mixin flexboxdisplay: flexjustify-content: centeralign-items: center.container@include flexbox
-
继承(Extend):Sass允许通过继承样式来减少重复的CSS代码。
.buttonborder: 1px solid #cccpadding: 10px.primary-button@extend .buttonbackground-color: #007bffcolor: #fff
-
导入其他文件(Import):您可以将Sass代码拆分到多个文件中,并使用
@import
指令将它们导入到主文件中。// main.sass @import variables @import buttons
Sass 和 SCSS 的区别
-
Sass:
- 使用缩进来表示层级关系,没有大括号和分号。
- 通过空行、缩进和冒号来表示属性和值的关系。
- 嵌套选择器使用父级选择器后跟子级选择器的方式,可以减少代码量。
- 没有必要写单位,如可以直接写
margin: 10
,Sass 会自动添加单位。 - 变量定义符号为
$
,例如$primary-color: #007bff
。 - 混入使用
@mixin
声明,通过@include
引用。 - 文件后缀名为
.sass
。
// main.sass$primary-color: #007bff.containerwidth: 100%.titlefont-size: 24px.buttonbackground-color: $primary-color
-
SCSS:
- 使用花括号和分号来表示层级关系和语句结束。
- 属性和值之间使用冒号来进行分隔。
- 嵌套选择器使用普通的 CSS 语法,以大括号表示。
- 需要明确写明单位,如
margin: 10px
。 - 变量定义符号为
$
,例如$primary-color: #007bff
。 - 混入使用
@mixin
声明,通过@include
引用。 - 文件后缀名为
.scss
。
// main.scss$primary-color: #007bff;.container {width: 100%;.title {font-size: 24px;} }.button {background-color: $primary-color; }
-
无论是Sass还是SCSS,最终都会被编译为普通的CSS代码
/* main.css */.container {width: 100%; }.container .title {font-size: 24px; }.button {background-color: #007bff; }
相关文章:
CSS革命:用Sass/SCSS引领前端创新
目录 前言SCSSSassSass 和 SCSS 的区别 前言 在现代的前端开发中,CSS已成为呈现网页和应用程序样式的核心。然而,原生的CSS语法在大型项目中可能变得混乱、冗长且难以维护。 为了解决这些问题,SCSS(Sass CSS)和Sass&am…...
MAPPO 算法的深度解析与应用和实现
【论文研读】 The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games 说明: 来源:36th Conference on Neural Information Processing Systems (NeurIPS 2022) Track on Datasets and Benchmarks. 是NIPS文章,质量有保障&…...
API接口的涉及思路以及部分代码
在现代软件开发中,API(Application Programming Interface)接口扮演了一个至关重要的角色。通过API接口,不同的应用程序、系统或服务之间可以进行数据交换和相互调用,实现功能的扩展和集成。本文将探讨API接口的设计思…...
Stable Diffusion无需代码连接QQ邮箱的方法
Stable Diffusion用户使用场景: 电商商家在产品测试阶段,通过微信社群日常收集用户对产品设计的反馈,包括对产品的修改建议或外观设计等,并将这些反馈上传至集简云小程序。然后,他们使用Stable Diffusion AI工具生成图…...
Excel表格(一)
1.单一栏的宽度和高度设置 2.大标题的跨栏居中 3.让单元格内的文字------自动适应 4.序号递增 5.货币符号 6.日期格式的选择 选到单元格,选中对应的日期格式 7.自动求和的计算 然后在按住回车键即可求出当前行的金额 点击自动求和 8.冻结表格栏 9.排序 1.单栏排序 …...
详细介绍渗透测试与漏洞扫描
一、概念 渗透测试: 渗透测试并没有一个标准的定义,国外一些安全组织达成共识的通用说法;通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动的主动分析…...
Scikit-learn聚类方法代码批注及相关练习
一、代码批注 代码来自:https://scikit-learn.org/stable/auto_examples/cluster/plot_dbscan.html#sphx-glr-auto-examples-cluster-plot-dbscan-py import numpy as np from sklearn.cluster import DBSCAN from sklearn import metrics from sklearn.datasets …...
C#程序的启动显示方案(无窗口进程发送消息) - 开源研究系列文章
今天继续研究C#的WinForm的实例显示效果。 我们上次介绍了Winform窗体的唯一实例运行代码(见博文:基于C#的应用程序单例唯一运行的完美解决方案 - 开源研究系列文章 )。这就有一个问题,程序已经打开了,这时候再次运行该应用程序,…...
java泛型和通配符的使用
泛型机制 本质是参数化类型(与方法的形式参数比较,方法是参数化对象)。 优势:将类型检查由运行期提前到编译期。减少了很多错误。 泛型是jdk5.0的新特性。 集合中使用泛型 总结: ① 集合接口或集合类在jdk5.0时都修改为带泛型的结构② 在实例化集合类时…...
【网络】自定义协议 | 序列化和反序列化 | 以tcpServer为例
本文首发于 慕雪的寒舍 以tcpServer的计算器服务为例,实现一个自定义协议 阅读本文之前,请先阅读 tcpServer 本文完整代码详见 Gitee 1.重谈tcp 注意,当下所对tcp的描述都是以简单、方便理解起见,后续会对tcp协议进行深入解读 …...
06-3_Qt 5.9 C++开发指南_多窗体应用程序的设计(主要的窗体类及其用途;窗体类重要特性设置;多窗口应用程序设计)
文章目录 1. 主要的窗体类及其用途2. 窗体类重要特性的设置2.1 setAttribute()函数2.2 setWindowFlags()函数2.3 setWindowState()函数2.4 setWindowModality()函数2.5 setWindowOpacity()函数 3. 多窗口应用程序设计3.1 主窗口设计3.2 QFormDoc类的设计3.3 QFormDoc类的使用3.…...
(力扣)用两个栈实现队列
这里是栈的源代码:栈和队列的实现 当然,自己也可以写一个栈来用,对题目来说不影响,只要符合栈的特点就行。 题目: 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、pe…...
【自动化测试框架】关于unitttest你需要知道的事
一、UnitTest单元测试框架提供了那些功能 1.提供用例组织和执行 如何定义一条“测试用例”? 如何灵活地控制这些“测试用例”的执行? 2.提供丰定的断言方法 当测试用例的执行结果与预期结果不一致时,判定测试用例失败。在自动化测试中,通过“断言”…...
手机便签中可以打勾的圆圈或小方块怎么弄?
在日常的生活和工作中,很多网友除了使用手机便签来记录灵感想法、读书笔记、各种琐事、工作事项外,还会用它来记录一些清单,例如待办事项清单、读书清单、购物清单、旅行必备物品清单等。 在按照记录的清单内容来执行的时候,为了…...
【Linux】gdb 的使用
目录 1. 使用 gdb 的前置工作 2. 如何使用 gdb 进行调试 1、如何看到我的代码 2、如何打断点 3、怎么运行程序 4、如何进行逐过程调试 5、如何进行逐语句调试 6、如何监视变量值 7、如何跳到指定位置 8、运行完一个函数 9、怎么跳到下一个断点 10、如何禁用/开启…...
C++11之右值引用
C11之右值引用 传统的C语法中就有引用的语法,而C11中新增了的 右值引用(rvalue reference)语法特性,所以从现在开始我们之前学习的引用就叫做左值引用(lvalue reference)。无论左值引用还是右值引用&#…...
【PHP的设计模式】
PHP的设计模式 一、策略模式二、工厂模式三、单例模式四、注册模式五、适配器模式六、观察者模式 一、策略模式 策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。 策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强…...
React 之 Redux - 状态管理
一、前言 1. 纯函数 函数式编程中有一个非常重要的概念叫纯函数,JavaScript符合函数式编程的范式,所以也有纯函数的概念 确定的输入,一定会产生确定的输出 函数在执行过程中,不能产生副作用 2. 副作用 表示在执行一个函数时&a…...
集合转数组
首先,我们在看到集合转数组的时候可能第一个想到的就是toArray(),但是我们在调用 toArray()的时候,可能会遇到异常 java.lang.ClassCastException;这是因为 toArray()方法返回的类型是 Obejct[],如果我们将其转换成其他类型&#…...
使用Python将Word文档转换为PDF的方法
摘要: 文介绍了如何使用Python编程语言将Word文档转换为PDF格式的方法。我们将使用python-docx和pywin32库来实现这个功能,这些库提供了与Microsoft Word应用程序的交互能力。 正文: 在现实生活和工作中,我们可能会遇到将Word文…...
Java 判断一个字符串在另一个字符串中出现的次数
1.split实现 package com.jiayou.peis.official.account.biz.utils;public class Test {public static void main(String[] args) {String k"0110110100100010101111100101011001101110111111000101101001100010101" "011101100101011010100011111010111001001…...
设计模式十三:代理(Proxy Pattern)
代理模式是一种结构型设计模式,它允许通过在对象和其真实服务之间添加一个代理对象来控制对该对象的访问。代理对象充当了客户端和真实服务对象之间的中介,并提供了额外的功能,如远程访问、延迟加载、访问控制等。 代理模式的使用场景包括&a…...
Redis基础 (三十八)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、概述 1.1 NoSQL 1.2 Redis 二、安装 2.1 安装方式 : 三、目录结构 3.1 rpm -ql redis 3.2 /etc/redis.conf 主配置文件 3.3 /var/lib/redis …...
maven中的scope
1、compile:默认值,可省略不写。此值表示该依赖需要参与到项目的编译、测试以及运行周期中,打包时也要包含进去。 2、test:该依赖仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,…...
【网络基础实战之路】实现RIP协议与OSPF协议间路由交流的实战详解
系列文章传送门: 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS:本要求基于…...
CNN(四):ResNet与DenseNet结合--DPN
🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊|接辅导、项目定制 前面实现了ResNet和DenseNet的算法,了解了它们有各自的特点: ResNet:通过建立前面层与后面层之间的“短路…...
汽车EBSE测试流程分析(四):反思证据及当前问题解决
EBSE专题连载共分为“五个”篇章。此文为该连载系列的“第四”篇章,在之前的“篇章(三)”中已经结合具体研究实践阐述了“步骤二,通过系统调研确定改进方案”等内容。那么,在本篇章(四)中&#…...
如何在Spring MVC中使用@ControllerAdvice创建全局异常处理器
文章目录 前言一、认识注解:RestControllerAdvice和ExceptionHandler二、使用步骤1、封装统一返回结果类2、自定义异常类封装3、定义全局异常处理类4、测试 总结 前言 全局异常处理器是一种 🌟✨机制,用于处理应用程序中发生的异常ÿ…...
2023/08/05【网络课程总结】
1. 查看git拉取记录 git reflog --dateiso|grep pull2. TCP/IP和OSI七层参考模型 3. DNS域名解析 4. 预检请求OPTIONS 5. 渲染进程的回流(reflow)和重绘(repaint) 6. V8解析JavaScript 7. CDN负载均衡的简单理解 8. 重学Ajax 重学Ajax满神 9. 对于XML的理解 大白话叙述XML是…...
log_softmax比softmax更好?
多类别分类的一个trick 探讨一下在多类别分类场景,如翻译、生成、目标检测等场景下,使用log_softmax的效果优于softmax的原因。 假设词典大小为10,一个词的ID为9(即词典的最后一个词),使用交叉熵作为损失函…...
网站建设 新闻/seo的定义
2019独角兽企业重金招聘Python工程师标准>>> 1、一致性原则:适用于各种设计场景,比如系统架构设计中操作系统、软件版本都要一致,便于管理便于自动化部署,试想一下,假如你们公司用了各种操作系统、各种服务…...
大连大家营销/前端优化网站
文章目录前言一、转轮机加密二、使用步骤1.下载附件2.脚本解密总结前言 题目描述:你俩继续往前走,来到了前面的下一个关卡,这个铺面墙上写了好多奇奇怪怪的 英文字母,排列的的整整齐齐,店面前面还有一个大大的类似于土…...
钓鱼网站盗号/怎么设计网站
发布时间:2016-07-08csol2维护到几点?1月20号更新了什么内容?感兴趣的朋友来看看csol2新版本20日维护到几点 1月20号更新了什么内容吧,希望可以帮到大家. csol2新版本20日维护到几点 1月20号更新了什么内容 更新时间:1 ...标签:游戏攻略 游戏秘籍 csol…...
沈阳公司网站建设/seo怎么优化简述
5.6版本是mysql一个重大改进版,优化了很多内容,查询优化器也有改进。因此有必要做个测试 对于最常见的子查询问题,in和exists,如何优化,做个简单测试。 首先建三张表:film,actor,film_actor 电影࿰…...
福永做网站/免费网站申请域名
新春佳节,万家团圆,预祝大家在新的一年里,阖家康泰,万事如意。 回顾过去的2017年,时光飞逝,忙忙碌碌,总结如下: 1、《高性能SQL调优精要与案例解析》一书顺利出版,感谢各…...
wordpress epix v1.2/产品推广计划
入门 使用python绘制图像需要导入matplotlib下的pylab模块。下面是一个简单的例子。 import pylab as pl pl.plot(0,0,‘ro’) pl.show() # pl.savefig(‘fig.jpg’) pylab中很多函数和matlab一样,参数的含义也是相似的。例子中plot()函数在原点处画了一个红色的圆点…...