SCSS的基本使用(一)

目录

一、使用&符号来引用父选择器

二、scss的语法

 三、变量(Variables)

四、嵌套(Nesting)

五、@mixin 和 @include

六、@extend 继承

七、@import 与 Partials

八、@if简单判断

九、@if复杂判断


一、使用&符号来引用父选择器

在嵌套规则中使用父选择器。这样可以避免重复编写选择器,并且在生成的CSS中保持正确的层级关系。

.button {background-color: blue;&:hover {background-color: darkblue;}&.active {background-color: red;}.icon {color: white;font-size: 16px;}
}

在上面的示例中,.button选择器是父选择器。在嵌套规则中,使用&引用父选择器。

  • &:hover表示当鼠标悬停在.button元素上时,应用这个样式。
  • &.active表示当.button元素有.active类时,应用这个样式。
  • .icon表示嵌套在.button元素内的.icon元素,不使用&引用父选择器。 在编译为CSS后,生成的代码如下:
    .button {background-color: blue;
    }.button:hover {background-color: darkblue;
    }.button.active {background-color: red;
    }.button .icon {color: white;font-size: 16px;
    }

    通过使用&引用父选择器,可以编写更具可读性和维护性的代码。

    父选择器的引用可以嵌套在任何层级的规则中,并且可以与其他选择器和修饰符组合使用。

二、scss的语法

  • (1)// 注释的内容不会编译到css文件中去
  • /* 我的注释内容会编译到css文件中去 */
    body {margin: 0;
    }
  • (2) /* */ 注释的内容会编译到css文件中,但是不能是压缩的编译排版格式(--style compressed)
/* 我的注释内容会编译到css文件中去 */
body {margin: 0;
}
  • (3)强制注释 /!* */,这种注释在编译排格式为compressed中也能存在。
  • 总结:// 一般注释scss内的变量、函数等,/* / 去注释样式说明,非常重要的注释采用/! */。

 三、变量(Variables)

  • 变量名以 $ 开头,变量的值无需加引号,变量名与变量值之间用冒号
  • 一个变量中可以使用其他变量
    // 变量名以 $ 开头,变量的值无需加引号,变量名与变量值之间用冒号
    $baseColor: pink;
    $bg_color: #ccc;// 一个变量中可以使用其他变量
    $base-border: 1px solid $baseColor;.box {  color: $baseColor;background-color: $bg_color;border: $base-border;
    }
    .box {color: pink;background-color: #ccc;border: 1px solid pink;
    }

    四、嵌套(Nesting)

  • 普通后代选择器的嵌套
.box {background-color: pink;ul {/* ul 样式 */list-style: none;li {/* li 样式 */font-size: 1rem;}}
}

@charset "UTF-8";
.box {background-color: pink;
}
.box ul {/* ul 样式 */list-style: none;
}
.box ul li {/* li 样式 */font-size: 1rem;
}

伪类选择器的嵌套需要使用&符号, &的一个作用就是让两个元素之间没有空格,让他们紧密连接在一起;

.box{width: 300px;a{color:red;  &:hover {font-size: 30px;}}
}
.box {width: 300px;
}
.box a {color: red;
}
.box a:hover {font-size: 30px;
}
  • 属性嵌套
.box {font:{size:12px;weight: 400;}
}
.box {font-size: 12px;font-weight: 400;
}

五、@mixin 和 @include

可以理解为js的函数

// 声明:如果没有参数,括号可省略
@minxin 名字(参1,参2,..) {// 样式代码,里面也可以写任何标签嵌套
}// 调用,可以在某个标签下调用,也可单独调用;没有参数可以省略括号;
.box {@include 名字
}@include 名字
  • 无参数
// 定义不带参mixin
@mixin my() {border:1px solid red;color: pink;p {font-size: 24px;}
}.box {@include my()
}
.box {border: 1px solid red;color: pink;
}
.box p {font-size: 24px;
}

Partials条件与特点:

body {margin: 0;padding: 0;
}.box {font-size: 30px;color: red;
}

// Partials 文件:_base.scss
body {padding: 0;margin:0;
}// 主要scss文件:index.scss
// 导入_base.scss
@import "base";.box {font-size: 30px;color: red;
}

  • 有参数
    // 定义带参mixin
    @mixin info($text-color, $bg-color) {color: $text-color;background-color: $bg-color;
    }.box {// 按顺序传实参,传递的参数必须保持一致@include info(red, gray)
    }.box {// 这样传参可以不考虑顺序,但是数量要一一对应,不能少写@include info($bg-color: red, $text-color:gray)
    }
    .box {color: red;background-color: gray;
    }.box {color: gray;background-color: red;
    }
  • 有参数且带默认值
    @mixin btn($color:pink, $bg:orange) {color: $color;background-color: $bg;
    }.box {// 带默认值的参数,可以不填,等于默认值@include btn;
    }.box {// 也可以按顺序填,填一个值,对应@mixin的第一个形参@include btn(blue)
    }.box {// 也可指定某个值@include btn($bg: black)
    }
    .box {color: pink;background-color: orange;
    }.box {color: blue;background-color: orange;
    }.box {color: pink;background-color: black;
    }
    

    六、@extend 继承

  • SCSS @extend 继承

    在SCSS中,@extend指令用于共享样式规则。使用@extend可以提高CSS代码的DRY(不要重复自己)原则,减少冗余的代码,并使样式表更易于维护。

    以下是一个简单的例子,演示如何使用@extend

  • // 定义一个基本的类 .base-style
    .base-style {color: red;font-size: 16px;
    }// 使用 @extend 继承 .base-style 类的样式
    h1 {@extend .base-style;
    }p {@extend .base-style;
    }

    编译后的CSS:

    .base-style, h1, p {color: red;font-size: 16px;}

    在这个例子中,h1p将会共享.base-style的样式。注意,.base-style自身也会出现在编译后的CSS中,作为这些选择器的一部分,这是因为@extend实质上是在修改选择器,而不是创建新的类。如果不希望.base-style类本身出现在CSS中,可以使用嵌套规则来定义样式,如下:

  • // 使用嵌套规则来定义样式
    %base-style {color: red;font-size: 16px;
    }h1 {@extend %base-style;
    }p {@extend %base-style;
    }
    h1, p {color: red;font-size: 16px;
    }

    这里使用了%base-style(以百分号开头)定义的混合(placeholder)样式,不会在最终的CSS中生成对应的类。

  • 七、@import 与 Partials

  • 在传统的css中,就是使用@import导入其他css文件的,但是每次都会去发送http请求,浪费性能;
  • scss中,优化了@import,我们会先创建一个主要scss文件index.scss,然后根据需要去创建所需的每一部分的scss文件,我们称每一个部分为Partials;这样有益于模块化;
  • 创建文件时,以_开头
  • 使用@import导入文件时,名字不需要加_
  • 当你使用sass监听一个目录是,不会监听Partials文件

八、@if简单判断

$flg: true;.box {@if $flg {font-size: 34px;}border:2px solid red;
}
.box {font-size: 34px;border: 2px solid red;
}

九、@if复杂判断

$body-color: red;body {@if $body-color == pink {background-color: pink;} @else if $body-color == red {background-color: red;} @else {background-color: gray;}
}
body {background-color: red;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

原型链prototype、__proto、constructor的那些问题整理

再了解原型链之前,我们先来看看构造函数和实例对象的打印结构 - 函数 这里我们定义一个构造函数Fn,然后打印它的结构吧 function Fn(){} console.dir(Fn)控制台得到结构 从上面结构我们能看的出来,函数有两种原型,一种是作为函数特有的原型:prototype,另一种是作为对象的__…

Java设计模式 _结构型模式_适配器模式

一、适配器模式 **1、适配器模式(Adapter Pattern)**是一种结构型设计模式。适配器类用来作为两个不兼容的接口之间的桥梁,使得原本不兼容而不能一起工作的那些类可以一起工作。譬如:读卡器就是内存卡和笔记本之间的适配器。您将…

这样狠心的女人,不配当妈!

男人小时候经常受父亲虐待,初中毕业就到深圳打拼,基本与父母再无联系。 因为心有创伤,他没有考虑过结婚的事情,也不希望自己的娃成为受苦的一代。 然而,机缘巧合,他偶然之间认识了自己的爱人。 在妻子小的时…

意法半导体STM32F407VET6TR单片机优缺点、参数、应用和引脚封装

ST(意法半导体)的型号STM32F407VET6TR属于32位MCU微控制器,基于高性能的ArmCortex-M4 32位RISC核心,工作频率高达168MHz。单精度浮点单元(FPU)用于Cortex-M4核心,支持所有Arm单精度数据处理指令和数据类型。它还实现了一套完整的DSP指令和一个…

printjs打印表格的时候多页的时候第一页出现空白

现象:打印多页的时候第一页空白了,一页的时候没有问题 插件:printjs 网上搜索半天找到的方式解决: 1. 对于我这次的现象毫无作用。其他情况不得而知,未遇见过。(这个应该是大家用的比较多的方式&#xf…

[SpringBoot] JWT令牌——登录校验

JWT(JSON Web Token)是一种用于在网络应用之间传递信息的开放标准(RFC 7519)。它由三部分组成:头部(header)、载荷(payload)和签名(signature)。J…

Mybatis-plus 字段结果为NULL

问题 Mybatis-plus 字段结果为NULL 详细问题 笔者使用SpringBootMybatis-plus 进行项目开发。进行接口请求测试,在确定SQL语句没有问题的前提下,返回记录部分字段(譬如字段name)为空。 解决方案 修改Mybatis-plus中mapper的xml文件,使re…

JavaEE初阶——多线程(七)——定时器

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 小比特 大梦想 此篇文章与大家分享多线程的第七篇文章——关于定时器 如果有不足的或者错误的请您指出! 目录 4.定时器4.1标准库提供的定时器4.2自己实现一个定时器4.2.1任务类4.2.2Timer类4.2.3 有一个线程来负…

如何解决IntelliJ IDEA 2024打开项目时频繁闪退问题

🐯 如何解决IntelliJ IDEA 2024打开项目时频繁闪退问题 🐾 文章目录 🐯 如何解决IntelliJ IDEA 2024打开项目时频繁闪退问题 🐾摘要引言正文📘 识别问题📙 内存配置调整步骤1: 定位vmoptions文件步骤2: 修改…

svg图标填充渐变色及CSS鼠标悬停纯色渐变色转换

svg图标填充渐变色及CSS鼠标悬停纯色渐变色转换&#xff1a; HTML&#xff1a; <!--底部导航--> <ul class"milliaNav"> <li class"active"><a href"#"> <svg class"icon" viewBox"0 0 1024 1024&qu…

1分钟掌握 Python 函数参数

任何编程语言函数都是非常重要的一部分&#xff0c;而在进行函数调用时&#xff0c;了解函数的参数传递方式是非常有必要的。Python中支持哪些传参方式呢&#xff1f; Python中的传参方式是比较灵活的&#xff0c;主要包括以下六种&#xff1a; 按照位置传参按照关键字传参默…

力扣--N皇后

题目: 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解决方案。…

李彦宏:程序员将不复存在! 周鸿祎回怼!网友:先把百度程序员都开除了!

近日&#xff0c;百度创始人、董事长兼首席执行官李彦宏在央视《对话》•开年说的访谈中指出&#xff1a;“基本上说以后其实不会存在“程序员”这种职业了&#xff0c;因为只要会说话&#xff0c;人人都会具备程序员的能力”。 “未来的编程语言只会剩下两种&#xff0c;一种…

Java进阶-异常处理

概述 常见运行时异常 直接继承自RuntimeException或者子类&#xff0c;编译阶段不会报错&#xff0c;运行时可能出现的错误 运行时异常&#xff1a;一般是程序员业务没有考虑好或者是编程逻辑不严谨引起的程序错误 数组索引越界异常空指针异常类型转换异常数学操作异常数字转…

离线语音模块初步学习——LSYT201B(深圳雷龙发展)

一 、产品简介 首先简单介绍下该离线语音模块&#xff0c;官方给出的介绍是&#xff1a;YT2228 是根据智能语音交互市场需求及思必驰算法的发展方向定义开发的 “芯片算法”人工智能人机语音交互解决方案&#xff0c;具有高性能、低功耗等特点。该芯片通过软硬融合的方法&…

数据丢失的谜团:文件突然不见了,却还占用着空间

在数字化时代&#xff0c;数据的重要性不言而喻。然而&#xff0c;有时我们会遇到一个令人困惑的问题&#xff1a;明明存储在设备中的文件突然不见了&#xff0c;但磁盘空间仍被占用。这种情况究竟是怎么回事&#xff1f;我们又该如何找回这些“消失”的文件呢&#xff1f;接下…

ROS python实现乌龟跟随

产生两只乌龟&#xff0c;中间的乌龟(A) 和 左下乌龟(B), B 会自动运行至A的位置&#xff0c;并且键盘控制时&#xff0c;只是控制 A 的运动&#xff0c;但是 B 可以跟随 A 运行 乌龟跟随实现的核心&#xff0c;是乌龟A和B都要发布相对世界坐标系的坐标信息&#xff0c;然后&am…

力扣HOT100 - 994. 腐烂的橘子

解题思路&#xff1a; 因为要记录轮数&#xff08;分钟数&#xff09;&#xff0c;所以不能一口气遍历到底&#xff0c;所以不能用深搜&#xff08;bfs&#xff09;&#xff0c;而要用广搜&#xff08;bfs&#xff0c;层序遍历&#xff09;。 先记录下新鲜橘子数&#xff0c;…

理解控制反转

好久之前写的学习笔记&#xff0c;一直落在草稿箱里今天才发现&#xff0c;既然写了就补发出来吧~ 当需要实现不同操作时&#xff0c;用户和程序员都无需修改&#xff0c;只需要修改xml配置即可。 代码体现&#xff1a; 不同接口的实现类&#xff1a; xml具体配置 通过set注入…

GO语言写Prometheus自定义node-exporter的Docker容器测试

1. 安装docker-compose 执行以下命令&#xff0c;安装docker-compose到CentOS7.9环境中&#xff1a; # 下载二进制文件 sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.7/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/d…