Sass

SCSS 基本使用详解 SCSS 是 Sass(Syntactically Awesome Stylesheets)的其中一种语法,是一种预处理器脚本语言,能够扩展 CSS 的功能,使其更加强大和高效。SCSS 保留了 CSS 的原有语法,同时增加了变量、嵌套规则、混合宏(mixin)、继承等高级功能。本文将详细介绍 SCSS 的基本使用方法,帮助读者快速上手并掌握 SCSS 的核心概念和技巧。 阅读详情

Sass

Sass是成熟、稳定、强大的CSS预处理器,而SCSS是Sass3版本当中引入的新语法特性,完全兼容CSS3的同时继承了Sass强大的动态功能。

特性概览
CSS书写代码规模较大的Web应用时,容易造成选择器、层叠的复杂度过高,因此推荐通过SASS预处理器进行CSS的开发,SASS提供的变量、嵌套、混合、继承等特性,让CSS的书写更加有趣与程式化。

变量
变量用来存储需要在CSS中复用的信息,例如颜色和字体。SASS通过$符号去声明一个变量。

$font-stack: Helvetica, sans-serif;
$primary-color: #333;

body {
  font: 100% $font-stack;
  color: $primary-color;
}

上面例子中变量font−stack和font-stack和font−stack和primary-color的值将会替换所有引用他们的位置。

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

嵌套
SASS允许开发人员以嵌套的方式使用CSS,但是过度的使用嵌套会让产生的CSS难以维护,因此是一种不好的实践,下面的例子表达了一个典型的网站导航样式:

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

  li { display: inline-block; }

  a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
  }
}

大家注意上面代码中的ul、li、a选择器都被嵌套在nav选择器当中使用,这是一种书写更高可读性CSS的良好方式,编译后产生的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; }

引入
SASS能够将代码分割为多个片段,并以underscore风格的下划线作为其命名前缀(_partial.scss),SASS会通过这些下划线来辨别哪些文件是SASS片段,并且不让片段内容直接生成为CSS文件,从而只是在使用@import指令的位置被导入。CSS原生的@import会通过额外的HTTP请求获取引入的样式片段,而SASS的@import则会直接将这些引入的片段合并至当前CSS文件,并且不会产生新的HTTP请求。下面例子中的代码,将会在base.scss文件当中引入_reset.scss片断。

// _reset.scss
html, body, ul, ol {
  margin:  0;
  padding: 0;
}
// base.scss
@import 'reset';
body {
  font: 100% Helvetica, sans-serif;
  background-color: #efefef;
}

SASS中引入片断时,可以缺省使用文件扩展名,因此上面代码中直接通过@import 'reset’引入,编译后生成的代码如下:

html, body, ul, ol {
  margin: 0;
  padding: 0; }

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

混合
混合(Mixin)用来分组那些需要在页面中复用的CSS声明,开发人员可以通过向Mixin传递变量参数来让代码更加灵活,该特性在添加浏览器兼容性前缀的时候非常有用,SASS目前使用@mixin name指令来进行混合操作。

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

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

上面的代码建立了一个名为border-radius的Mixin,并传递了一个变量$radius作为参数,然后在后续代码中通过@include border-radius(10px)使用该Mixin,最终编译的结果如下:

.box {
  border-radius: 10px;
  -ms-border-radius: 10px;
  -moz-border-radius: 10px;
  -webkit-border-radius: 10px; }

继承
继承是SASS中非常重要的一个特性,可以通过@extend指令在选择器之间复用CSS属性,并且不会产生冗余的代码,下面例子将会通过SASS提供的继承机制建立一系列样式:

// 这段代码不会被输出到最终生成的CSS文件,因为它没有被任何代码所继承。
%other-styles {
  display: flex;
  flex-wrap: wrap;
}

// 下面代码会正常输出到生成的CSS文件,因为它被其接下来的代码所继承。
%message-common {
  border: 1px solid #ccc;
  padding: 10px;
  color: #333;
}

.message {
  @extend %message-common;
}

.success {
  @extend %message-common;
  border-color: green;
}

.error {
  @extend %message-common;
  border-color: red;
}

.warning {
  @extend %message-common;
  border-color: yellow;
}

上面代码将.message中的CSS属性应用到了.success、.error、.warning上面,魔法将会发生在最终生成的CSS当中。这种方式能够避免在HTML元素上书写多个class选择器,最终生成的CSS样式是下面这样的:

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

.success {
  border-color: green; }

.error {
  border-color: red; }

.warning {
  border-color: yellow; }

操作符
SASS提供了标准的算术运算符,例如+、-、*、/、%。在接下来的例子里,我们尝试在aside和article选择器当中对宽度进行简单的计算。

.container { width: 100%; }

article[role="main"] {
  float: left;
  width: 600px / 960px * 100%;
}

aside[role="complementary"] {
  float: right;
  width: 300px / 960px * 100%;
}

上面代码以960px为基准建立了简单的流式网格布局,SASS提供的算术运算符让开发人员可以更容易的将像素值转换为百分比,最终生成的CSS样式如下所示:

.container {
  width: 100%; }

article[role="main"] {
  float: left;
  width: 62.5%; }

aside[role="complementary"] {
  float: right;
  width: 31.25%; }

CSS扩展
引用父级选择器"&"
Scss使用"&"关键字在CSS规则中引用父级选择器,例如在嵌套使用伪类选择器的场景下:

/*===== SCSS =====*/
a {
  font-weight: bold;
  text-decoration: none;
  &:hover { text-decoration: underline; }
  body.firefox & { font-weight: normal; }
}

/*===== CSS =====*/
a {
  font-weight: bold;
  text-decoration: none; }
  a:hover {
    text-decoration: underline; }
  body.firefox a {
    font-weight: normal; }

无论CSS规则嵌套的深度怎样,关键字"&"都会使用父级选择器级联替换全部其出现的位置:

/*===== SCSS =====*/
#main {
  color: black;
  a {
    font-weight: bold;
    &:hover { color: red; }
  }
}

/*===== CSS =====*/
#main {
  color: black; }
  #main a {
    font-weight: bold; }
    #main a:hover {
      color: red; }

"&"必须出现在复合选择器开头的位置,后面再连接自定义的后缀,例如:

/*===== SCSS =====*/
#main {
  color: black;
  &-sidebar { border: 1px solid; }
}

/*===== CSS =====*/
#main {
  color: black; }
  #main-sidebar {
    border: 1px solid; }

如果在父级选择器不存在的场景使用&,Scss预处理器会报出错误信息。

嵌套属性
CSS许多属性都位于相同的命名空间(例如font-family、font-size、font-weight都位于font命名空间下),Scss当中只需要编写命名空间一次,后续嵌套的子属性都将会位于该命名空间之下,请看下面的代码:

/*===== SCSS =====*/
.demo {
  // 命令空间后带有冒号:
  font: {
    family: fantasy;
    size: 30em;
    weight: bold;
  }
}

/*===== CSS =====*/
.demo {
  font-family: fantasy;
  font-size: 30em;
  font-weight: bold; }

命令空间上可以直接书写CSS简写属性,但是日常开发中建议直接书写CSS简写属性,尽量保持CSS语法的一致性。

.demo {
  font: 20px/24px fantasy {
    weight: bold;
  }
}

.demo {
  font: 20px/24px fantasy;
    font-weight: bold;
}
Scss的基本用法—入门篇 Sass 是采用 Ruby 语言编写的一款 CSS 预处理语言,它诞生于2007年,是最大的成熟的 CSS 预处理语言。最初它是为了配合 HAML(一种缩进式 HTML 预编译器)而设计的,因此有着和 HTML 一样的缩进式风格。 阅读详情

相关推荐

SCSS预处理器(详细讲解、入门教程)

Sass通过引入变量、嵌套规则、混入(Mixins)、继承等特性,允许开发者编写更简洁、更有组织的CSS代码。这些特性有助于减少代码重复,提高开发效率,并使得样式表更加易于维护。Sass最终会编译成合法的CSS代码,供浏览器使用。

露西西⭐的博客 1332

史上最全scss教程

一. 基础 1.数据类型 SassScript 支持 6 种主要的数据类型: 数字,1, 2, 13, 10px 字符串,有引号字符串与无引号字符串,“foo”, ‘bar’, baz 颜色,blue, #04a3f9, rgba(255,0,0,0.5) 布尔型,true, false 空值,null 数组 (list),用空格或逗号作分隔符,1.5em 1em 0 2em, Helvetic...

weixin_44003190的博客 3896

在vscode中开发sass教程:sass语法

在vscode中开发sass教程:sass语法

YY的博客 2389

一篇完整的 Scss 学习指南,看这篇就够啦

作者:小猪努力学前端https://juejin.cn/post/7055101823442485255前言今时不同往日,能叫我们切图仔的只能是我们自己!在JavasScrip框架满天飞的...

前端达人 3万+

什么是Sass,如何使用?

Sass(Syntactically Awesome Style Sheets)是一种扩展了 CSS 的样式表语言,旨在使 CSS 更加易于维护、可读和可扩展。Sass 添加了一些功能,使得样式表开发过程更加高效和灵活。本文将深入探讨 Sass 的概念、特性、安装与配置、基本语法、使用技巧以及最佳实践。

祈澈菇凉 1862

ChatUI vs Ant Design X 技术选型对比

维度ChatUI优势轻量级、易上手、完美兼容 Ant Design全能型框架、企业级扩展性、深度模型集成局限性功能单一、缺乏高级交互支持学习曲线陡峭、包体积较大最佳实践单独聊天窗口集成整体智能助手系统开发通过对比可见,ChatUI 适合快速实现基础对话功能,而Ant Design X 更适合构建复杂的 AI 驱动应用。实际选择时需结合项目规模、团队技术栈和对交互复杂度的需求综合评估。

四楼没电梯的专栏 2266

dart-sass和node-sass的区别,使用dart-sass后可能会出现的问题

2020 年 10 月 27 日,Sass 官方团队正式宣布 Libsass 将弃用,以及基于它的 Node Sass 和 SassC,并且建议用户使用 Dart Sass。如果在 vue 脚手架搭建的项目中需要使用 sass,建议初始化时勾选 sass 配置,自行安装,选择默认的就是 dart-sass。dart-sass 替代 node-sass 根本原因:node-sass 无法下载特定版本的二进制依赖文件(博主没有深入研究)dart-sass 使用前需要注意几点:

qq_38687592的博客 2450

cocos2dx lua + protobuf

vs 2015 cocos2dx 3.10  lua  protobuf1. 下载 protobuf 源码     https://github.com/bnnswyp/protobuf/tree/master/protobuf-2.5.0    解压后的文件列表如下所示         其中 vsprojects 文件夹为 protobuf 的vs 工程2. 打开 protobuf.sln 编译...

u014486706的博客 2164

vue node node-sass sass-loader 版本 对应 与 兼容

同时即便切换到低版本node12中可以正常运行,但项目中使用了一些node12以上的代码语法,比如node14才支持的可选链语法,然后其它开发人员拉代码之后,就要么高版本node无法拉取node-sass包,要么切换低版本无法运行一些高版本node才支持的语法。同时上面只是一部分sass-loader的版本对应,因为没有提供官方的对应规则,所以上面的版本还是不对的话,确定好node和node-sass版本之后,可以一个一个尝试sass-loader的版本,所有版本:sass-loader - npm。

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 2731

网络虚拟化介绍(OVS、DVS)

网络虚拟化概念网络虚拟化就是把网络层的一些功能从硬件中剥离出来,建立新的网络虚拟层;该虚拟层可以接管网络服务和配置,实现网络服务与物理层的解耦,打破物理资源限制;通过网络虚拟层能够在一个物理网络上模拟出多个逻辑网络,并且多用户在逻辑网络上相互隔离,保证网络安全网络虚拟化的特点隔离性:不同租户的流量相互之间不能互访;但是IP/MAC地址都可以独立规划可移动性:虚拟机可以跨二层/三层迁移,甚至可以跨广域网迁移(迁移前后虚拟机Vlan和IP地址都不会发生变化)可扩展性:逻辑网络的规模和数量可扩展。

m0_49864110的博客 1万+

2024年 Flutter 面试题大全(2024.6.28持续更新中)

2024年 Flutter 面试题大全(持续更新中)

Code Metaverse 6670

Sass初探:嵌套只是开始,解锁Sass更多功能

Sass初探,嵌套只是开始,解锁Sass更多功能。Sass(SyntacticallyAwesomeStyleSheets)是一种强大的CSS预处理器,它通过引入变量、嵌套、混合宏(mixins)、函数等功能,极大地提升了样式表的可维护性和开发效率。

qq_46032105的博客 1433

prplOS amx-fxgi调试-订阅subscribe

本文分析了prplOS中amx-fxgi订阅功能(subscribe)的实现与调试过程。通过梳理订阅流程发现,默认订阅失败主要由于acl规则限制导致。文章详细介绍了订阅的两个关键步骤:建立GET长连接和POST设置订阅路径,并通过修改代码绕过acl验证成功实现订阅功能。最终验证了在同一连接下订阅多个路径及实时接收状态更新的可行性,有效降低了设备查询负载。该方案为prplOS的实时数据监控提供了优化思路。

四儿家的小祖宗的博客 331

【Sass】Sass

SASS是一种 CSS 预处理器,可以编译成标准的 CSS,提高了代码的复用性、可维护性和可读性。扩展名.sass或.scss。其中.sass使用缩进语法,无需花括号和分号;.scss更接近标准 CSS 语法。可以使用@function定义自己的函数,以实现复杂的样式逻辑。

shisanxiang_的博客 1587

勇攀数字高峰

摘要:该题目要求在数字地形图中寻找从最低点到最高点的所有严格递增登山路径。采用DFS深度优先搜索结合回溯算法,通过标记已访问位置并检查高度差限制(0<diff≤maxDiff)来遍历所有可能路径。算法首先确定起点(最低点)和终点(最高点),然后进行DFS搜索,每步移动需满足四个方向的合法移动且高度严格递增。最终输出符合条件的路径总数。提供了C++、Java和Python三种实现方案。

面试高手的博客 626

零基础快速学习 ABAP 读者意见反馈和下一步写作计划表

大家在学习教程过程中,如果有任何关于 SAP ABAP 开发方面想了解的内容,可以直接在教程各篇文章下评论留言,我会将大家的意见统一汇总到下面的表格,作为我更新教程的内容参考来源之一。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4275

Sass基础

SASS还有多种实用的技术可以学习,这里只是较为基础的部分,详细可以参考下面链接!——!Sass 输出样式_w3cschool。

2403_87566238的博客 1197

【华为OD机试真题】141、租车骑绿岛 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

题目描述 >部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐两人,最大载重M。 给出部门每个人的体重,请问最多需要租用多少双人自行车。

KJ.JK 1961

使用gulp实时编译sass/sass

背景 在我们新开始的项目中,我们打算使用scss来作为我们的样式书写语言。同时,所有的sass/scss文件经过编译转化成css文件后要存放到跟scss/sass文件相同的目录下。整个前端团队已经有实时的代码编译构建工具,那么我们只需要书写自己的实时scss/sass构建工具,生成对应的css文件后,团队的实时构建工具也会触发编译,做打包构建处理。 第三方包选型 基于gulp的sass/sc

fendouzhe123的专栏 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Sass有什么优势

Sass与CSS有什么区别? 1.嵌套 第一个对Web开发人员的工作流程造成最大影响是Sass语法中的代码嵌套和缩进。使用常规的CSS,每个元素在自己的“声明块”中独立变化,你可以想象一下,如果一个房间里满地都是不同大小的箱子会是什么样子。而通过Sass,你可以在嵌套的块里将相关的元素组合在一起,然后想象一下,同样是那个房间,现在,一些小箱子已经放在大箱子里了,你可以再次看到可爱的地板了。 ...

weixin_39110677的博客 3465

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Sass复习篇

Sass 是常见的css预处理器的一种,他提供了许多遍历的写法,让css开发变得更为简单和强大。Sass有两种版本,Sass和Scss,两者之间的区别在于语法,Sass使用缩进的方式书写,而Scss使用大括号的方式书写,Scss是Sass的升级版,兼容Sass的所有功能。所我们一般书写时都是用Scss的语法形式。

2301_76380626的博客 1259

SASS从安装到使用

1.SASS安装 一、安装Ruby  Sass是用Ruby语言写的,但是两者的语法没有关系,所以学 Sass 不用学 Ruby,只是必须先安装Ruby,然后再安装Sass。  戳这里下载,根据自己对应的版本进行下载 二、安装完成 完成后运行cmd进入命令符,输入ruby -v查看版本号,如果能正确显示版本号,则说明ruby安装成功。 ...

左眼回忆的博客 1万+

替换node-sass为dart-sass

选择dart-sass的理由 官网 1.Sass 是一种 CSS 的预编译语言。它提供了 变量(variables)、嵌套(nested rules)、 混合(mixins)、 函数(functions)等功能,并且完全兼容 CSS 语法。Sass 能够帮助复杂的样式表更有条理, 并且易于在项目内部或跨项目共享设计。 2. 在 v4.3.0之前本项目都是基于node-sass进行构建的,但node-sass底层依赖 libsass,导致很多用户安装的特别的困难,尤其是 windows

来了波,兄嘚 8731

React Sass

安装sass和配置 Webpack 或 Vite 加载.scss文件(参考项目文档)。

likuoelie的博客 1079

vue中安装node-sass、sass-loader报错问题解决方法

1、首先执行以下代码,卸载老版node-sass、sass-loader(因为你有可能安装上了其中一个,但另一个安装不了)问题描述:在进行一个vue项目练习时需要导入node-sass、sass-loader这两个依赖,书本提供代码是。2、查找与自己node版本对应得node-sass版本。3、最后安装sass-loader,适合的版本可以直接到网上去搜索,比如我一开始找到的版本是 10.0.1 然后还是安装失败,最后换成 10.2.0 安装成功。最后希望我的尝试能帮助你解决问题!

weixin_61626012的博客 5888

CSS进阶和SASS

sass实例应用,余下的自己看官网

qq_44930306的博客 1549
上一篇: vue调试工具的安装与使用(vue-devtools)
下一篇: URL中的hash(#)含义
不秃头码农
博客等级 码龄6年 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值