SCSS的基本用法-入门篇

article/2025/11/5 10:40:09

文章目录

  • 前言
  • 一、什么是Sass
  • 二、SASS 和 SCSS 的区别
  • 三、Scss的基本语法
    • 1、声明变量 $
    • 2、默认变量 !default
    • 3、变量调用
    • 4、局部变量和全局变量
    • 5、嵌套
      • 5.1、选择器嵌套
      • 5.2、属性嵌套
      • 5.3、伪类嵌套
    • 6、混合宏
      • 6.1、声明
        • 6.1.1、不带参数混合宏
        • 6.1.2、带参数混合宏
      • 6.2、调用
      • 6.3、混合宏的参数
        • 6.3.1、 传一个不带值的参数
        • 6.3.2、传一个带值的参数
      • 6.4、混合宏的不足
    • 7、扩展/继承
    • 8、占位符 % placeholder

前言

看了大漠老师的Sass入门教程,整理的一篇笔记

一、什么是Sass

Sass 是采用 Ruby 语言编写的一款 CSS 预处理语言,它诞生于2007年,是最大的成熟的 CSS 预处理语言。最初它是为了配合 HAML(一种缩进式 HTML 预编译器)而设计的,因此有着和 HTML 一样的缩进式风格。

二、SASS 和 SCSS 的区别

Sass 和 SCSS 其实是同一种东西,我们平时都称之为 Sass,两者之间不同之处有以下两点:

(1)文件扩展名不同。
Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名。
(2)语法书写方式不同。
Sass 是以严格的缩进式语法规则来书写,不带大括号( { } )和分号( ; ),而 SCSS 的语法书写和我们的 CSS 语法书写方式非常类似。

示例:

// Sass语法
$font-stac: Helvetica, sans-serif  //定义变量
$primary-color: #333 //定义变量
body font: 100% $font-stack;color: $primary-color; // 没有 {};// Scss语法
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
body {font: 100% $font-stack;color: $primary-color;
}// 编译出来的css
body {font: 100% Helvetica, sans-serif;color: #333;
}

三、Scss的基本语法

scss转css在线网址

1、声明变量 $

声明变量的符号 $
在这里插入图片描述
下面这张图左半部分是scss的语法,右半部分是编译后的css。(整篇文章皆是如此)
在这里插入图片描述

2、默认变量 !default

sass 的默认变量仅需要在值后面加上 !default 即可。
在这里插入图片描述

如果分配给变量的值后面添加了 !default 标志 ,这意味着该变量如果已经赋值,那么它不会被重新赋值,但是,如果它尚未赋值,那么它会被赋予新的给定值。
在这里插入图片描述
上述例子因为变量$color已经被赋值为$666,所以后来再给它赋默认值时不会影响它原来的值,$color的值仍然是$666。

3、变量调用

直接调用即可。变量声明时也可直接调用已声明的变量
在这里插入图片描述

4、局部变量和全局变量

在元素内部定义的变量不会影响其他元素
在这里插入图片描述

5、嵌套

5.1、选择器嵌套

Sass 中还提供了选择器嵌套功能,但这也并不意味着你在 Sass 中的嵌套是无节制的,因为你嵌套的层级越深,编译出来的 CSS 代码的选择器层级将越深,这往往是大家不愿意看到的一点

假如有这么一个结构:

<header>
<nav><a href=“##”>Home</a><a href=“##”>About</a><a href=“##”>Blog</a>
</nav>
<header>

想选中 header 中的 a 标签,在写 CSS 会这样写:

nav a {color:red;
}header nav a {color:green;
}

那么在 Sass 中,就可以使用选择器的嵌套来实现:

nav {a {color: red;header & {color:green;}}  
}

5.2、属性嵌套

Sass 中还提供属性嵌套,CSS 有一些属性前缀相同,只是后缀不一样,比如:border-top/border-right,与这个类似的还有 margin、padding、font 等属性。假设你的样式中用到了:

.box {border-top: 1px solid red;border-bottom: 1px solid green;
}

在 Sass 中我们可以这样写:

.box {border: {top: 1px solid red;bottom: 1px solid green;}
}

5.3、伪类嵌套

借助 &
在这里插入图片描述

6、混合宏

如果你的整个网站中有几处小样式类似,比如颜色,字体等,在 Sass 可以使用变量来统一处理,那么这种选择还是不错的。但当你的样式变得越来越复杂,需要重复使用大段的样式时,使用变量就无法达到我们目了。这个时候 Sass 中的混合宏就会变得非常有意义。

6.1、声明

6.1.1、不带参数混合宏

在 Sass 中,使用“ @mixin ”来声明一个混合宏。如:

@mixin border-radius{-webkit-border-radius: 5px;border-radius: 5px;
}

其中 @mixin 是用来声明混合宏的关键词,有点类似 CSS 中的 @media、@font-face 一样。border-radius 是混合宏的名称。大括号里面是复用的样式代码。

6.1.2、带参数混合宏

除了声明一个不带参数的混合宏之外,还可以在定义混合宏时带有参数,如:

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

6.2、调用

在 Sass 中通过 @mixin 关键词声明了一个混合宏,那么在实际调用中,其匹配了一个关键词“ @include ”来调用声明好的混合宏。例如在你的样式中定义了一个圆角的混合宏“border-radius”:

@mixin border-radius{-webkit-border-radius: 3px;border-radius: 3px;
}

在一个按钮中要调用定义好的混合宏“border-radius”,可以这样使用:

button {@include border-radius;
}

这个时候编译出来的 CSS:

button {-webkit-border-radius: 3px;border-radius: 3px;
}

6.3、混合宏的参数

Sass 的混合宏有一个强大的功能,可以传参,那么在 Sass 中传参主要有以下几种情形:

6.3.1、 传一个不带值的参数

在混合宏中,可以传一个不带任何值的参数,比如:

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

在混合宏“border-radius”中定义了一个不带任何值的参数“$radius”。

在调用的时候可以给这个混合宏传一个参数值:

.box {@include border-radius(3px);
}

这里表示给混合宏传递了一个“border-radius”的值为“3px”。

编译出来的 CSS:

.box {-webkit-border-radius: 3px;border-radius: 3px;
}

6.3.2、传一个带值的参数

在 Sass 的混合宏中,还可以给混合宏的参数传一个默认值,例如:

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

在混合宏“border-radius”传了一个参数“$radius”,而且给这个参数赋予了一个默认值“3px”。

在调用类似这样的混合宏时,会多有一个机会,假设你的页面中的圆角很多地方都是“3px”的圆角,那么这个时候只需要调用默认的混合宏“border-radius”:

.btn {@include border-radius;
}

编译出来的 CSS:

.btn {-webkit-border-radius: 3px;border-radius: 3px;
}

但有的时候,页面中有些元素的圆角值不一样,那么可以随机给混合宏传值,如:

.box {@include border-radius(50%);
}

编译出来的 CSS:

.box {-webkit-border-radius: 50%;border-radius: 50%;
}

6.4、混合宏的不足

混合宏在实际编码中给我们带来很多方便之处,特别是对于复用重复代码块。但其最大的不足之处是会生成冗余的代码块。比如在不同的地方调用一个相同的混合宏时。如:

@mixin border-radius{-webkit-border-radius: 3px;border-radius: 3px;
}.box {@include border-radius;margin-bottom: 5px;
}.btn {@include border-radius;
}

示例在“.box”和“.btn”中都调用了定义好的“border-radius”混合宏。先来看编译出来的 CSS:

.box {-webkit-border-radius: 3px;border-radius: 3px;margin-bottom: 5px;
}.btn {-webkit-border-radius: 3px;border-radius: 3px;
}

上例明显可以看出,Sass 在调用相同的混合宏时,并不能智能的将相同的样式代码块合并在一起。这也是 Sass 的混合宏最不足之处。

7、扩展/继承

在 Sass 中是通过关键词 “@extend”来继承已存在的类样式块,从而实现代码的继承。如下所示:

// SCSS
.btn {border: 1px solid #ccc;padding: 6px 10px;font-size: 14px;
}.btn-primary {background-color: #f36;color: #fff;@extend .btn;
}.btn-second {background-color: orange;color: #fff;@extend .btn;
}

编译出来之后:

// CSS
.btn, .btn-primary, .btn-second {border: 1px solid #ccc;padding: 6px 10px;font-size: 14px;
} // 合并到了一起.btn-primary {background-color: #f36;color: #fff;
}.btn-second {background-clor: orange;color: #fff;
}

从示例代码可以看出,在 Sass 中的继承,可以继承类样式块中所有样式代码,而且编译出来的 CSS 会将选择器合并在一起,形成组合选择器。

8、占位符 % placeholder

它可以取代以前 CSS 中的基类造成的代码冗余的情形。因为 %placeholder 声明的代码,如果不被 @extend 调用的话,不会产生任何代码。来看一个演示:

%mt5 {margin-top: 5px;
}
%pt5{padding-top: 5px;
}

这段代码没有被 @extend 调用,他并没有产生任何代码块,只是静静的躺在你的某个 SCSS 文件中。只有通过 @extend 调用才会产生代码:

// SCSS
%mt5 {margin-top: 5px;
}
%pt5{padding-top: 5px;
}.btn {@extend %mt5;@extend %pt5;
}.block {@extend %mt5;span {@extend %pt5;}
}

编译出来的CSS

// CSS
.btn, .block {margin-top: 5px;
}.btn, .block span {padding-top: 5px;
}

从编译出来的 CSS 代码可以看出,通过 @extend 调用的占位符,编译出来的代码会将相同的代码合并在一起。这也是我们希望看到的效果,也让你的代码变得更为干净。


http://chatgpt.dhexx.cn/article/6tR169hv.shtml

相关文章

Sass 和 SCSS

▣Sass (Syntactically Awesome StyleSheets)&#xff0c;是由buby语言编写的一款css预处理语言&#xff0c;和html一样有严格的缩进风格&#xff0c;和css编写规范有着很大的出入&#xff0c;是不使用花括号和分号的&#xff0c;所以不被广为接受。 Sass 是一款强化 CSS 的辅助…

scss的基本使用

文章目录 SCSS-了解和基本使用sass、scss、less、css的区别 SCSS-基本语法1. 嵌套语法2. 变量3. 父选择器 &4. 混合 mixins5. 模块 SCSS-了解和基本使用 总结一些scss基本使用 具体详情请看官网 sass、scss、less、css的区别 less, sass, scss都是css预处理语言&#xf…

scss理解及用法

1.scss是什么 scss是css的一种预处理语言 scss是一门很好用的类css&#xff0c;在现实中的工作当中几乎都是不采用css的&#xff0c;而是使用类css语言。 例如&#xff1a;scss、less、stylus等&#xff0c;所以学习一门css语言是必须得&#xff0c;由于我用的比较多的就是scss…

程序员那些你不知道的事:高收入程序员年薪高于50万,近四成程序员单身

本文转自&#xff1a;人民网 原文地址&#xff1a;《互联网从业者生活品质报告》发布&#xff1a;近四成程序员单身--IT--人民网 人民网北京10月24日&#xff08;记者毕磊&#xff09;10月23日&#xff0c;《互联网从业者生活品质报告》。据悉&#xff0c;该报告是基于挖财记…

程序员年薪30万,被准丈母娘各种刁难,网友说:分手吧!

这是一个很现实的社会&#xff0c;你没钱没车没房&#xff0c;很可能连老婆都讨不到&#xff0c;即使你收入不错潜力很大&#xff0c;但如果手头拿不出车房&#xff0c;丈母娘很可能一句话就把你怼得无话可说&#xff1a;没车没房我女儿跟你喝西北风&#xff1f; 这也是一名女…

python大神年薪_我程序员年薪 80 万被亲戚鄙视不如在二本教书的博士生?

但是毕业后&#xff0c;在父母辈的眼里似乎只有公务员、律师、教师这三大铁饭碗是他们心中的最佳职业&#xff0c;我第一次跟我妈说我从事的是IT行业程序员&#xff0c;她回答道&#xff1a;那是修电脑的吗&#xff1f;然后程序员行业被外界吐槽似乎司空见惯了&#xff0c;今日…

八年跳槽五次,程序员年薪4万变92万,引热议

本文转载自 程序员编程社区 很多时候&#xff0c;虽然跳槽可能带来降薪的结果&#xff0c;但依然有很多人认为跳槽可以涨薪。近日&#xff0c;看到一则帖子&#xff0c;发帖的楼主表示&#xff0c;自己8年5跳&#xff0c;年薪4万到92万&#xff0c;现在环沪上海各一套房&#…

2020年程序员年薪、婚恋、跳槽等报告出炉,说的是你吗?

黑马程序员 微信号&#xff1a;heiniu526 传智播客旗下互联网资讯&#xff0c;学习资源免费分享平台 程序员一直都是一个备受人们关注的群体&#xff0c;随着互联网的飞速发展&#xff0c;市场对程序员的需求尤为庞大。但是2020年&#xff0c;因为疫情影响&#xff0c;许多企业…

滴滴程序员年薪80万却被亲戚鄙视:钱多有啥用,我儿子二本大学教师

作者&#xff1a;胡多钱 From&#xff1a;程序员小乐 正文 说到教师和程序员这两个职业来说&#xff0c;很多人都会偏向于教师&#xff0c;毕竟从长远角度看&#xff0c;不管是地位还是工作稳定性来说&#xff0c;教师更加有优势&#xff0c;如果让你从程序员年薪80万和教师15…

程序员年薪45万,国企年薪20万,该不该跳槽去国企?

现如今很多在互联网的程序员&#xff0c;其实都是比较向往去国企的&#xff0c;尤其是那种年龄超过35岁的程序员&#xff0c;他们追求的可能不是高收入&#xff0c;而且稳定的工作以及能有时间陪家人。毕竟这些程序员打拼多年&#xff0c;多少都有一点身价了。 近日&#xff0c…

年薪100万和10万程序员的差距

点击蓝字关注&#xff0c;回复“职场进阶”获取职场进阶精品资料一份 我们看武侠大片&#xff0c;经常有那种本来可以练就绝世武功的大虾。 阴差阳错练的走火入魔。 一开始还可以硬撑&#xff0c;还能打败一些虾兵蟹将。 遇见真正的高手&#xff0c;这些大虾们立马就败下阵来。…

Github上Python超越Java,应届人工智能程序员年薪30w+

GitHub 2017年年度报告发布&#xff1a;有70万来自中国的新用户加入&#xff0c;占据Github新人总数70%。Python超越Java成为第二最受欢迎的语言&#xff0c;TensorFlow依然是最受欢迎的深度学习库。 人世间&#xff0c;流浪人归&#xff0c;亦若回流川 《深夜食堂2》 Python…

腾讯计算机编程本科年薪,腾讯程序员年薪80万,却感慨:天花板太低,想放弃工作去读研!...

有句话说得好&#xff0c;人往高处走&#xff0c;水往低处流。很多进入职场工作的年轻人&#xff0c;都希望自己能够发挥个人的能力&#xff0c;得到上级领导的肯定也好&#xff0c;或者得到了同事的支持也好。无非就是希望自己能够晋升或者加薪。毕竟在工作的时候谁不是为了能…

甲骨文华育兴业|【大数据调查】80%的程序员年薪都在10万以上,三分之一的人年薪20万以上

看了上面文章的小伙伴 如果感到不舒适 那么请看看这篇文章 非常适合你找准方向 你们印象中程序员是什么样&#xff1f;他们的实际生活状态怎样&#xff1f;针对中国程序员薪资生存现状做了一项调查&#xff0c;大数据让你更懂程序员。&#xff08;以下数据都来自程序员客栈&…

为什么哪些90后程序员年薪50万+,他们经历了啥?

如果说薪资是检验一家公司对你认可的标准&#xff0c;那么年纪轻轻就能达到年薪 50 万&#xff0c;一定程度上说明了公司对他创造的价值的认可。 小编深访了10 名这样的程序员&#xff0c;把他们最常见的三种成长途径梳理了出来 在一家公司的初期加入&#xff0c;并伴随着自己的…

程序员年薪30万到100万,汇报有啥差别?

见字如面&#xff0c;我是军哥&#xff01; 程序员在职场里&#xff0c;技术能力是下限&#xff0c;汇报能力才能到上限&#xff0c;毫不客气地说这个能力非常重要。 很多人在职场一会无法晋升原地打转&#xff0c;就是因为没有领会到这个能力的精髓。 今天来分享来分享年薪30万…

阿里应届程序员年薪25W,我酸了,你们呢

工资,一直是上班人士最关心的话题。 在我们的印象中,程序员的工资一向不低。 然而,当我看到阿里一个应届生晒的工资,年终25w+,我酸了,而且这个数字应该也远超很多工作两三年的程序员了,估计引起了大部分人会有和我一样的感觉 我酸了,阿里应届程序员的年薪,25w的高薪…

扎心!五成程序员年薪 10-20 万,超半数资深程序员薪资高于 20 万

根据埃文斯数据公司&#xff08;Evans Data Corporation&#xff09;2019 最新统计的数据显示&#xff0c;2018 年全球共有 2300 万软件开发人员&#xff0c;预计到 2019 年底这个数字将达到 2640 万。但在这个庞大的数字背后&#xff0c;真正能配得上“软件工程师”之称的其实…

“程序员年薪50万到底有多累、多辛苦?”,句句扎心

这几年来&#xff0c;IT这个行业涌入太多的急功近利的求职者&#xff0c;培训学校批量生产的码农&#xff0c;一批一批又一批。 上班这几年&#xff0c;伴随着对程序员的了解越来越深&#xff0c;我对以下几点有了深刻的感悟&#xff1a; 第一&#xff1a;每个行业都有各自的…