scss 实用教程

news2024/11/26 0:48:22

变量 $

定义变量

$link-color: 'blue';

变量名可以与css中的属性名和选择器名称相同

使用变量

a {
  color: $link_color;
}
$highlight-border: 1px solid $link_color;

中划线和下划线相互兼容,即中划线声明的变量可以使用下划线的方式引用,反之亦然。

$link-color: blue;
a {
  color: $link_color;
}

变量作用域

{}中定义的变量为局部变量,仅在{}内有效

$nav-color: #F90;
nav {
  $width: 100px;
  width: $width;
  color: $nav-color;
}

变量默认值

$fancybox-width: 400px !default;
.fancybox {
    width: $fancybox-width;
}

若导入的sass局部文件声明了$fancybox-width变量,则默认值无效,否则$fancybox-width将默认为400px

vscode中高亮显示scss代码

安装插件——Beautify css/sass/scss/less

在这里插入图片描述
新建文件 test.scss,写入代码

$link-color: 'blue';

a {
  color: $link_color;
}

效果如下
在这里插入图片描述

vscode中实时编译scss—查看最终css效果

安装插件——Live Sass Compiler

在这里插入图片描述
点击vscode下边栏的 Watch Sass

在这里插入图片描述

此时在 test.scss 同目录下会生成文件 test.css,其内容为

在这里插入图片描述

修改 test.scss 中的代码,test.css 会同步编译,方便实时查看最终css效果

样式嵌套

<div class="diary">
    <h1 class="title">标题</h1>
    <p class="content">内容</p>
</div>
.diary {
    .title {
        color: red;
    }
    .content {
        color: blue;
    }
}

使用伪类选择器时,需要配合&符号,此时&表示父元素

a{
    color: green;
    &:hover{
        color: yellow;
    }
}

属性嵌套

方式一

nav {
  border: {
      style: solid;
      width: 1px;
      color: #ccc;
  }
}

转化为css后,效果如下:

nav {
  border-style: solid;
  border-width: 1px;
  border-color: #ccc;
}

方式二

nav {
  border: 1px solid #ccc {
      left: 0px;
      right: 0px;
  }
}

转化为css后,效果如下:

nav {
  border: 1px solid #ccc;
  border-left: 0px;
  border-right: 0px;
}

静默注释 //

静默注释是一种内容不会出现在生成的css文件中的注释

body {
  color: #333; // 这种注释内容不会出现在生成的css文件中
  padding: 0; /* 这种注释内容会出现在生成的css文件中 */
}

当/* … */注释出现在原生css不允许的地方,如在css属性或选择器中,这些注释也会被抹掉。

body {
  color /* 这块注释内容不会出现在生成的css中 */: #333;
  padding: 1; /* 这块注释内容也不会出现在生成的css中 */ 0;
}

循环 @for

@for $i from 1 to 4 {
  .pd#{$i} {
    padding: $i*10 + px;
  }
}

转化为css后,效果如下:

.pd1 {
  padding: 10px;
}

.pd2 {
  padding: 20px;
}

.pd3 {
  padding: 30px;
}

@for 内可同时循环生成多个样式

@for $i from 1 to 4 {
  .pd#{$i} {
    padding: $i*10 + px;
  }

  .mr#{$i} {
    margin: $i*10 + px;
  }
}

from to 改为 from through 则包含边界

@for $i from 1 through 4 {
  .pd#{$i} {
    padding: $i*10 + px;
  }
}

得到

.pd1 {
  padding: 10px;
}

.pd2 {
  padding: 20px;
}

.pd3 {
  padding: 30px;
}

.pd4 {
  padding: 40px;
}

混合器 @minxin

用于给一大段样式赋予一个名字,方便样式的复用

和CSS类名的区别是,CSS类名是在html中使用,混合器是在样式代码中使用。

定义混合器 @mixin

@mixin mark {
  color: red;
  background: yellow;
}

使用混合器 @include

.note {
  font-weight: bold;
  @include mark
}

最终css效果

.note {
    font-weight: bold;
    color: red;
    background: yellow;
}

可传参的混合器

类似JavaScript里的function

@mixin link-colors($normal, $hover, $visited) {
  color: $normal;
  &:hover { color: $hover; }
  &:visited { color: $visited; }
}

调用时直接传参

a {
  @include link-colors(blue, red, green);
}

最终生成的css效果如下

a { color: blue; }
a:hover { color: red; }
a:visited { color: green; }

如果记不清参数的顺序,可以通过语法$name: value的形式指定每个参数的值。

a {
    @include link-colors(
      $normal: blue,
      $visited: green,
      $hover: red
  );
}

指定默认参数值

@mixin link-colors(
    $normal,
    $hover: $normal,
    $visited: $normal
  )
{
  color: $normal;
  &:hover { color: $hover; }
  &:visited { color: $visited; }
}

继承 @extend

跟混合器相比,继承生成的css代码相对更少。因为继承仅仅是重复选择器,而不会重复属性,所以使用继承往往比混合器生成的css体积更小。

//通过标签继承样式(默认的浏览器样式不会被继承,因为它们不属于样式表中的样式)
.disabled {
  color: gray;
  @extend a;
}
//通过选择器继承样式
.error {
  border: 1px solid red;
  background-color: #fdd;
}
.seriousError {
  @extend .error;
  border-width: 3px;
}

.seriousError不仅会继承.error自身的所有样式,任何跟.error有关的组合选择器样式也会被.seriousError以组合选择器的形式继承

//.seriousError从.error继承样式
.error a{  //应用到.seriousError a
  color: red;
  font-weight: 100;
}
h1.error { //应用到hl.seriousError
  font-size: 1.2rem;
}

在class="seriousError"的html元素内的超链接也会变成红色和粗体。

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

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

相关文章

Power Apps-“编辑“窗体组件

插入一个“编辑”窗体 连接数据源 在该组件的Item函数中编辑筛选符合条件的唯一记录 LookUp(表名,列名值) LookUp参考文档&#xff1a;Filter、Search 和 LookUp 函数&#xff08;包含视频&#xff09; - Power Platform | Microsoft Learn 数据表里的数据就一一对应出现在了组…

邮箱哪家强?哪个牌子邮箱好用

邮箱在国内外使用情况不太一样&#xff0c;国内一般都是工作中需要用邮箱&#xff0c;直接使用公司发的企业邮箱就可以了&#xff0c;个人一般自己需要使用邮箱频率比较少&#xff0c;大多是用来注册其他平台信息&#xff0c;接受验证码、电子发票等等&#xff0c;使用不频繁。…

若依分离版——使用Knife4j 自动生成接口文档

背景&#xff1a; 前后端分离程序&#xff0c;如果需要前端开发人员和后端开发人员配合开发&#xff0c;则需要将接口文档并显性给前端人员 解决办法&#xff1a; 使用knife4j替代若依自带的swagger&#xff0c;因为knife4j是在swagger基础上包装的&#xff0c;Knife4j不仅具…

解析几何@平面上点到直线的距离@点到平面的距离@空间中点到直线的距离

文章目录 平面上点到直线的距离点到平面的距离小结 角平分面问题例 点到直线的距离 平面上点到直线的距离 设坐标平面上有点 P ( x 1 , y 1 ) P(x_1,y_1) P(x1​,y1​)和直线 l : A x B y C 0 l:AxByC0 l:AxByC0, A , B A,B A,B不全为0点 P P P到直线 l l l的的距离的算法推…

【网络】epoll理论 + 实践(LT模式服务器和ET模式服务器)详细讲解

epoll 前言正式开始epoll相关的接口epoll_createepoll_ctlepoll_wait epoll原理硬件上的数据是怎么交给上层的创建epoll模型epoll模型中的红黑树epoll中的就绪队列回调方法前面三个接口在模型中的体现一些细节 编写epoll服务器小组件正式开始编写对epoll接口进行封装epoll_crea…

KeyShot for 3dMax插件教程

KeyShot for 3dMax插件教程 KeyShot是一款先进的3D渲染和动画软件&#xff0c;通过直观、精简的用户界面和革命性的动画工作流简化了整个媒体创建过程&#xff0c;可以实时创建完全渲染的动画。 快速 立即查看结果。 这就是KeyShot渲染引擎的功能&#xff1a;您所做的每一个更…

10款实用的市场分析工具,你知道几个?

市场分析是在成功营销战略中的一个核心组成部分&#xff0c;我们应当深度理解当前市场&#xff0c;进行适当的决策&#xff0c;并对产品和服务产生高度的信心。如果你还在寻找一款能帮助你全方位了解市场现状&#xff0c;预测未来趋势&#xff0c;以及提供深入见解的工具&#…

Hertz中的CORS问题。

前言 字节跳动开源框架Hertz,可能存在的CORS的跨域问题 正文 文档信息 跨源资源共享 | CloudWeGo 文档中描述 | AllowAllOrigins | 用于设置允许来自任意 origin 的客户端访问服务端资源&#xff0c;默认为 false&#xff0c;所以我们在仅仅设置AllowAllOrigins true的时候…

将程序添加至右键菜单

将程序添加至右键菜单 手动导入 如果要将cmder添加至右键菜单。可以通过编写reg注册表方式添加 也可以在路径HKEY_CLASSES_ROOT\Directory\Background\shell中右击添加 创建项commadn 编写reg注册表 [HKEY_CLASSES_ROOT\Directory\Background\shell\cmder]为注册表地址 Wi…

以吉祥物宣传片实力出圈!吉祥物三维动画宣传片怎么制作?

首届学青会吉祥物“壮壮”、“美美”在宣传片中展示了举重、打羽毛球、游泳等运动姿态&#xff0c;靠着可爱的虚拟形象萌出圈&#xff01; *图片源于网络 在数字化时代&#xff0c;吉祥物三维动画宣传片已成为众多大型活动、品牌宣发、文旅城市宣传的一大途径&#xff0c;如学…

文心一言 VS 讯飞星火 VS chatgpt (131)-- 算法导论11.2 3题

三、用go语言&#xff0c;Marley 教授做了这样一个假设&#xff0c;即如果将链模式改动一下&#xff0c;使得每个链表都能保持已排好序的顺序&#xff0c;散列的性能就可以有较大的提高。Marley 教授的改动对成功查找、不成功查找、插入和删除操作的运行时间有何影响? 文心一…

Windows下Tesseract OCR引擎库的编译和下载

系列文章目录 文章目录 系列文章目录前言一、简介二、使用步骤1.Tesseract库下载1.1 Vcpkg下载1.2 添加环境变量1.3 vcpkg运行1.4 下载Tesseract库 2.引用到项目2.1 把Tesseract关联的dll/lib/h都放入指定的目录2.2 添加头文件2.3 参照lib 总结 前言 网上很多关于Tesseract OC…

晶振分频【FPGA】

所以数据对齐晶振。 6分频&#xff1a;【1】 module divider_six // 6分频 【0~2】 ( input wire sys_clk , //系统时钟 50MHz input wire sys_rst_n , //全局复位 output reg clk_out //对系统时钟 6 分频后的信号 );reg [1:0] cnt; //用于计数的寄存器 //cnt:计数器从 0 到…

JAVA数据类型及自动类型转换、强制类型转换

1.数据类型的分类 2. 数据类型的自动类型转换 3.强制类型转换

08 # 手写 filter 方法

什么是 filter filter() 方法创建给定数组一部分的浅拷贝&#xff0c;其包含通过所提供函数实现的测试的所有元素。如果没有元素通过测试&#xff0c;则返回一个空数组。 ele&#xff1a;表示数组中的每一个元素index&#xff1a;表示数据中元素的索引array&#xff1a;表示数…

docker部署tomcat

1.下载tomcat镜像 尽量去下载最新版本 直接输入docker pull tomcat 后面不跟版本号(要是跟版本号&#xff0c;你还要去官网去查看是否有此版本&#xff0c;太麻烦了) 2.查看镜像 3.通过镜像去run启动容器 -d 就是后台运行 --name 给容器取个新名字 -p 3355:8080…

速看!2024年最具实用性的15款在线画图工具

在数字时代&#xff0c;绘图软件已经成为了创意表达和信息传达的不可或缺的工具。而随着互联网的发展&#xff0c;越来越多的在线画图软件应运而生&#xff0c;方便了人们随时随地创建、编辑和分享图像。本文将为你介绍15款热门且好用的在线画图软件&#xff0c;深入探讨每款软…

使用 promise 重构 Android 异步代码

背景 业务当中写Android异步任务一直是一项挑战&#xff0c;以往的回调和线程管理方式比较复杂和繁琐&#xff0c;造成代码难以维护和阅读。在前端领域中JavaScript其实也面临同样的问题&#xff0c;Promise 就是它的比较主流的一种解法。 在尝试使用Promise之前我们也针对And…

docker镜像原理之联合文件系统

镜像是什么&#xff1f; 镜像是一种轻量级、可执行的独立软件保&#xff0c;用来打包软件运行环境和基于运行环境开发的软件 他包含运行某个软件所需的所有内容&#xff0c;包括代码、运行时库、环境变量和配置文件 所有应用都不要服务器去部署&#xff0c;都可以直接打包 do…

Docker快速搭建Drupal内容管理系统并远程访问

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525;个人专栏:《Linux深造日志》《C干货基地》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal…