Sass预处理器教程

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes

觉得有帮助的同学,可以点心心支持一下哈

一、sass是什么

Sass官方文档 www.sasscss.com/guide

Sass中文网 www.sass.hk

sass是一种css预处理语言,由Ruby语言开发,比css多出很多功能(变量、嵌套、运算、混入、继承、指令、函数)更容易阅读

sass的工作方式是,在sass源文件中写代码,然后由sass程序(sass编译器)将其转化成css文件

二、sass和scss 的关系

sass 的缩排语法,对于写惯css前端的web开发者来说很不直观,也不能将css代码加入到sass 里面,因此 sass 语法进行了改良,sass 3就变成了scss(sassy css)。与原来的语法兼容,只是用 { } 取代了原来的缩进,更像css写法。(以前版本使用缩进风格 sass,最新版本改为{ } scss)

三、sass(scss)和less的区别

(1)编译环境不同

sass需要Ruby环境,日常开发使用sass插件(Live Sass Compiler或其他)(运行在服务器端)

less基于JavaScript,需要引入less.js来处理代码输出css(客户端运行,也就是浏览器运行)

(2)变量符不同

sass: $color:#000;

less: @color:#000;

(3)输出风格不同

sass有四种输出风格:

nested:嵌套缩进的css代码

expanded:展开的多行的css代码

compact:简洁格式的css代码

compressed:压缩后的css代码

(4)条件语句不同

Sass支持条件语句,可以使用if{}else{},for{}循环等等。而Less不支持

......

四、sass的使用

1. 安装Sass

首先,确保你已经安装了Sass。你可以使用以下命令在命令行中安装:

npm install sass -g 

2. 基础语法

Sass的基础语法与CSS类似,但它引入了一些额外的特性:

原始 Sass 语法:

$primary-color: #3498db;

body
  background-color: $primary-color;

转换为 SCSS 语法:

$primary-color: #3498db;

body {
  background-color: $primary-color;
}

在 SCSS 中,使用分号 ; 表示语句的结束,而使用花括号 {} 表示代码块。这样的转换是相对简单的,因为 SCSS 更接近于常规的 CSS 语法。

在这个例子中,$primary-color 是一个变量,用于存储主题色。

3. 变量

使用变量可以方便地存储和重用值:

// styles.scss

$primary-color: #3498db;
$font-size: 16px;

body {
  background-color: $primary-color;
  font-size: $font-size;
}

这样,当需要更改主题色或字体大小时,只需更改变量的值即可。

4. 嵌套

使用嵌套可以更清晰地表示选择器的层级关系:

// styles.scss

nav {
  ul {
    margin: 0;
    padding: 0;
    list-style: none;

    li {
      display: inline-block;
      margin-right: 5px;

      a {
        text-decoration: none;
        color: $primary-color;

        &:hover {
          text-decoration: underline;
        }
      }
    }
  }
}

嵌套规则让样式表更加易读,同时避免了重复书写选择器。

5. 混合(Mixin)

混合允许将一组样式组合成一个集合,并在需要时重复使用:

// styles.scss

@mixin border-radius($radius) {
  border-radius: $radius;
  -webkit-border-radius: $radius;
  -moz-border-radius: $radius;
}

.button {
  @include border-radius(5px);
}

这里,@mixin定义了混合,@include使用了混合。这样可以避免在代码中多次写入相同的前缀。

6. 导入其他SCSS文件

使用@import语句可以将其他 SCSS 文件导入到当前文件中,实现代码模块化:

// styles.scss

@import "reset";
@import "variables";
@import "mixins";

7. 运算

scss 允许进行基本的数学运算:

// styles.scss

$base: 10px;
$padding: $base * 2;

.element {
  margin: $base + 5px;
  padding: $padding;
}

这样可以在样式表中进行数值计算,使得样式表更加灵活。

8. 条件语句

使用条件语句可以根据不同条件应用不同的样式:

// styles.scss

$width: 10px;

div {
  width: $width;
  height: $width;

  @if $width > 5 {
    background-color: red;
  } @else {
    background-color: blue;
  }
}

9. 循环

使用循环可以重复应用样式:

// styles.scss

@for $counter from 1 through 5 {
  .class-#{$counter} {
    width: $counter * 10px;
  }
}

这个例子中,通过循环生成了带有不同宽度的 CSS 类。

10. 注释

使用注释来增强代码的可读性:

// styles.scss

// This is a single-line comment

/* 
  This is a
  multi-line comment
*/

$primary-color: #3498db;

body {
  background-color: $primary-color;
}

11.编译

执行sass命令使其index.scss生成对应index.css

在终端执行该命令 sass sass.scss css/index.css
会将当前目录的index.scss 文件编译到css文件夹下,编译为对应css文件

也会生成对应.map文件,这个文件是用来干嘛的?
.map文件是一个json格式的文件,可以直接在浏览器中调试sass源文件。

每次修改index.scss文件都要执行命令进行编译有点麻烦
sass提供watch参数用于侦听某个scss文件以及文件夹
在终端执行该命令sass --watch sass.scss:css/index.css

这是一个更为详细的 SCSS 预处理器教程,涵盖了基础语法、变量、嵌套、混合、导入、运算、条件语句、循环等内容。希望对你的 SCSS 学习有所帮助!如果有其他问题,随时问我。

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

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

相关文章

【算法与数据结构】回溯算法、贪心算法、动态规划、图论(笔记三)

文章目录 七、回溯算法八、贪心算法九、动态规划9.1 背包问题9.2 01背包9.3 完全背包9.4 多重背包 十、图论10.1 深度优先搜索10.2 广度优先搜索10.3 并查集 最近博主学习了算法与数据结构的一些视频,在这个文章做一些笔记和心得,本篇文章就写了一些基础…

4.8 Verilog过程连续赋值

关键词:解除分配,强制,释放 过程连续赋值是过程赋值的一种。赋值语句能够替换其他所有wire 或 reg 的赋值,改写wire 或 reg 类型变量的当前值。 与过程赋值不同的是,过程连续赋值表达式能被连续的驱动到wire 或 reg …

苹果发布iPhone 16:革命性创新重新定义智能手机体验

(苹果总部,加利福尼亚州,2024年2月23日)——今天,全球领先的科技公司苹果公司再次震撼世界,宣布推出iPhone 16,这款革命性的智能手机重新定义了人们对于手机的期望和体验。 iPhone 16的发布代表…

基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析

在自然和社会科学领域有大量与地理或空间有关的数据,这一类数据一般具有严重的空间异质性,而通常的统计学方法并不能处理空间异质性,因而对此类型的数据无能为力。以地理加权回归为基础的一系列方法:经典地理加权回归,…

DM数据库学习之路(十八)DMHS数据实时同步软件部署及迁移测试

​​​​​ DMDRS介绍 产品介绍 达梦数据实时同步软件(以下简称 DMDRS)是支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。该产品采用基于日志的结构化数据复制技术,不依赖主机上源数据库的触发器或者规则,对主…

【SpringCloudAlibaba系列--nacos配置中心】

Nacos做注册中心以及使用docker部署nacos集群的博客在这: 容器化部署Nacos:从环境准备到启动 容器化nacos部署并实现服务发现(gradle) 使用docker部署nacos分布式集群 下面介绍如何使用nacos做配置中心 首先要进行nacos-config的引入,引入…

【前端素材】推荐优质后台管理系统Modernize平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理和控制网站、应用程序或系统后台操作的软件工具,通常由授权用户(如管理员、编辑人员等)使用。它提供了一种用户友好的方式来管理网站或应用程序的内容、用户、数据等方面的操作,并且通常…

kafka为什么性能这么高?

Kafka系统架构 Kafka是一个分布式流处理平台,具有高性能和可伸缩性的特点。它使用了一些关键的设计原则和技术,以实现其高性能。 上图是Kafka的架构图,Producer生产消息,以Partition的维度,按照一定的路由策略&#x…

康威生命游戏

康威生命游戏 康威生命游戏(Conway’s Game of Life)是康威发明的细胞自动机。 生命游戏有几个简单的规则&#xff1a; 细胞有两种状态&#xff0c;存活或死亡&#xff0c;每个细胞以自身为中心与周围的八格细胞互动。 对于存活的细胞&#xff1a; 当周围的细胞过少(<2)或…

【vue】如何打开别人编译后的vue项目

文件结构如下&#xff0c;编译后的文件放在dist中。 dist的文件结构大约如下&#xff0c;文件名称随项目 1.新建app.js文件 const express require(express);const app express();const port 8080;app.use(express.static(dist));app.listen(port, () > console.log); …

密评技术要求实施详解:每一步都关键

密评简介 密评定义&#xff1a;全称商用密码应用安全性评估, 是对采用商用密码技术、产品和服务集成建设的网络和信息系统密码应用的合规性、正确性、有效性进行评估的活动。 评测依据&#xff1a;GB/T 39786-2021《信息安全技术 信息系统密码应用基本要求》。 密评对象&…

智能高压森林应急消防泵|保障森林安全|深圳恒峰

随着科技的不断发展&#xff0c;我们的生活质量得到了显著提升。在森林保护领域&#xff0c;一项创新技术正在发挥着关键作用——智能高压森林应急消防泵。这种设备不仅提高了灭火效率&#xff0c;更为森林资源的安全保驾护航。 在过去&#xff0c;面对森林火灾&#xff0c;消防…

鸿蒙DevEco Service开发准备与使用

DevEco低代码是一个基于Serverless和ArkUI的端云一体化低代码开发平台&#xff0c;可通过拖拽式开发&#xff0c;可视化配置构建元服务。打通HarmonyOS云侧与端侧能力&#xff0c;轻松实现HMS Core和AGC Serverless能力的调用。通过与元服务生态、HMS Core、AGC Serverless平台…

python统计分析——线性模型的预测和评估

参考资料&#xff1a;用python动手学统计学 1、导入库 # 导入库 # 导入数据处理的库 import numpy as np import pandas as pd import scipy as sp from scipy import stats # 导入绘图的库 from matplotlib import pyplot as plt import seaborn as sns sns.set() # 导入估计…

亚马逊,速卖通,国际站测评补单的必要性与方法

亚马逊平台的规则与某宝有所不同。亚马逊平台没有产品推广引流和直通车等功能。而且&#xff0c;与某宝不同的是&#xff0c;亚马逊平台没有广告位和卖家客服。在某宝上&#xff0c;当我们选择款式和颜色时&#xff0c;通常会与卖家客服进行沟通。但在亚马逊上&#xff0c;没有…

【Docker】免费使用的腾讯云容器镜像服务

需要云服务器等云产品来学习Linux可以移步/-->腾讯云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 1、设置密码 2、登录实例&#xff08;sudo docker login xxxxxx&#xff09; 3、新建命名空间&#xff08;每个命名空…

day40打卡

day40打卡 343. 整数拆分 状态表示 ​ dp[i] 表示将正整数i拆分成至少两个正整数的和之后&#xff0c;这些正整数的最大乘积 状态转移方程 ​ i > 2 时&#xff0c;对正整数i拆出的第一个正整数是j&#xff0c;则有&#xff1a; 将i拆分为 j 和 i-j&#xff0c;且 i-j…

初探Web客户端追踪技术

前言 案例1 当我们首次浏览网站时&#xff0c;在网页的下方位置经常会出现提示&#xff0c;询问是否允许使用 Cookie 来提供服务和流量。为了不被挡住浏览的内容&#xff0c;我们经常会下意识地点击“接受”&#xff0c;然后继续浏览。看似无害而有害增强你在这个网站上的体验…

MATLAB | 超多样式聚类分析树状图任你选择~~

这几天写了一个代码很长的聚类分析树状图绘图工具函数&#xff08;上一期文章立的flag总算实现了&#xff09;&#xff0c;能够比较轻松的绘制以下图形&#xff1a; 工具基本已经成型了&#xff0c;未来有需求未来有空再加哈哈哈&#xff0c;要求MATLAB至少需要17b版本&#xf…