简单体验一下scss重构我们的代码

简介: # 引言今天我们一起来学习一下如何使用Scss精简一下我们平时开发的css代码。# 什么是ScssSCSS 是 Sass 3 引入新的语法,其语法完全兼容 CSS3,并且继承了 Sass 的强大功能。也就是说,任何标准的 CSS3 样式表都是具有相同语义的有效的 SCSS 文件,[官方解释](https://link.juejin.cn/?target=http%3A%2F%2Fsass.bootcss.com%2Fdocs%2Fscss-for-sass-users%2F "http://sass.bootcss.com/docs/scss-for-sass-users/")。

引言

今天我们一起来学习一下如何使用Scss精简一下我们平时开发的css代码。

什么是Scss

SCSS 是 Sass 3 引入新的语法,其语法完全兼容 CSS3,并且继承了 Sass 的强大功能。也就是说,任何标准的 CSS3 样式表都是具有相同语义的有效的 SCSS 文件,官方解释。

SCSS 语法使用  .scss 文件扩展名。除了极少部分的例外, 它是 CSS 的超集,也就是说  所有有效的 CSS 也同样都是有效的 SCSS 。 由于其与 CSS 的相似性,它是最容易上手的语法, 也是最流行的语法。

scss的优势

SCSS (Sass) 有以下几个主要优势:

  • 可维护性:SCSS 允许使用变量、嵌套、混合、继承等特性,从而使样式表变得更加清晰、可读性增强。
  • 更高效:SCSS 允许使用函数、循环等高级特性,使得样式定义更加高效。
  • 更易扩展:SCSS 提供了组件化和模块化的技巧,可以更方便地扩展和维护代码。
  • 更简单:SCSS 的语法比 CSS 更简洁易懂,允许编写更加简洁的样式表。
  • 兼容性:SCSS 可以完全兼容 CSS,可以无缝地使用

再来看一下scss和其他对比

Scss/Less Atomic CSS css-in-js
完全支持样式覆盖 是 是 需要使用className支持
支持rem布局 是 是 大部分库支持
可读性 强 稍弱 强
上手成本 较低 中 高
是否支持SSR 天然支持 天然支持 需要额外支持
是否支持流式渲染 天然支持 天然支持 需要额外支持
支持postcss 是 是 有自己的插件生态

先看个使用原生写css的场景

想象一下下面的场景,我们需要定义三个方块,分别是红色,蓝色,和黄色,大小并不相同,同时每个方块鼠标移过后都会有一个暗淡的效果,我们应该如何去书写呢?

先来看一下原生的css

<template>
  <div class="class_A">

  </div>
  <div class="class_B">

  </div>
  <div class="class_C">

  </div>
</template>

<script setup lang="ts"></script>

<style scoped lang="scss">
.class_A {
  margin: 10px;
  width: 100px;
  height: 60px;
  background-color: red;
}
.class_A:hover {
  opacity: 0.6;
  transition: all 0.6s;
}

.class_B {
  margin: 10px;
  width: 80px;
  height: 48px;
  background-color: blue;
}
.class_B:hover {
  opacity: 0.6;
  transition: all 0.6s;
}

.class_C {
  margin: 10px;
  width: 60px;
  height: 36px;
  background-color: yellow;
}
.class_C:hover {
  opacity: 0.6;
  transition: all 0.6s;
}
</style>

三种方块不同大小,颜色,同时鼠标移动会有一个特效

image.png

我们来先介绍一下scss函数的用法

我们通过@mixin声明一个函数,然后通过@include来使用

@mixin fun($w) {
      // 定义了一个函数fun,接受一个参数
}

好了,我们正式开始重构我们的代码

<template>
  <div class="class_A">

  </div>
  <div class="class_B">

  </div>
  <div class="class_C">

  </div>
</template>

<script setup lang="ts"></script>

<style scoped lang="scss">
@mixin fun($w,$h,$bg) {
  margin: 10px;
  width: $w;
  height: $h;
  background-color: $bg;
  &:hover {
    opacity: 0.6;
    transition: all 0.6s;
  }
}
.class_A {
  @include fun(100px,60px,red);
}
.class_B {
  @include fun(80px,48px,blue);
}
.class_C {
  @include fun(60px,36px,yellow);
}
</style>

同样的效果,更少的代码,更优雅的写法,更简洁的代码风格,更高的可读性和可维护性。

看下效果还是一样的。不过代码高级,优雅了很多

image.png

而在很多耦合度更高的情况下,这种写法能更大的提升代码的可维护性和可读性。

最后

在工程化的项目中使用scss而不是传统的css,可以大幅度提高我们的开发效率,精简我们的代码量,提高了我们的代码的可读性,使其语法上更工整更优雅,同时后续无论修改或是排查或是协同开发上,都简单了很多。

相关文章
|
7月前
|
人工智能 运维 算法
轻量化起步,更低门槛上手向量检索 —— 阿里云 Milvus 单机版正式上线!
AI时代向量检索成刚需,但部署成本高、运维难。阿里云Milvus单机版正式上线:一键开通、4CU起配、支持900万级向量,月付仅628元起,适合初创、开发者及中小项目快速验证RAG、语义搜索等场景,未来可平滑升级至集群版。(239字)
|
数据采集 机器学习/深度学习 分布式计算
从0到1搭建车企数字化营销中台(4):客户数据平台(CDP)
CDP作为数字化营销中台的核心数据引擎,承载着拉通客户全渠道、全旅程链路的数据,实现智能洞察和营销决策
4637 0
从0到1搭建车企数字化营销中台(4):客户数据平台(CDP)
|
弹性计算 Linux Windows
共享在阿里云ecs上安装自定义iso的方法
本文关键字:阿里云 自定义iso,阿里云 自定义镜像
2804 0
共享在阿里云ecs上安装自定义iso的方法
|
存储 编解码 vr&ar
色彩空间与像素格式
颜色是不同波长的光对人眼刺激产生的色彩感觉。色彩空间(Color Space)是颜色的数学表示,根据不同的表示方法分为不同的色彩模型。最常用的色彩模型有三类:RGB(用于计算机图形学), YUV(用于视频系统), CMYK(用于彩色印刷)。后文对色彩空间与色彩模型的叫法不作区分。本文仅讨论视频图像处理领域常用的 RGB 色彩空间和 YUV 色彩空间。
3813 0
色彩空间与像素格式
|
存储 Linux Shell
超详细的Linux基础命令
超详细的Linux基础命令
|
存储 移动开发 JavaScript
使用vue互联QQ音乐完成网站音乐播放器
记录使用APlayer播放器+MetingJs实现 在线播放qq音乐、网易云音...等平台的音乐
1142 1
使用vue互联QQ音乐完成网站音乐播放器
|
Java Linux
二、Linux(CentOS7)环境安装Java
1、下载并安装JDK: 1.在http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html中下载jdk的安装文件,由于我的Linux是64位的,因此我下载jdk-8u64-linux-x64.tar.gz文件。 2.新建/usr/local/java文件夹,将jdk-8u77-linux-x64.tar.gz放到该文件夹中,并将工作目录切换到/usr/local/java目录下。 3.执行命令tar -zxvf jdk-8u77-linux-x64.tar.gz 进行解压,解压后发现/us
1212 29
|
机器学习/深度学习 人工智能 算法
2022达闼机器人GDC大会--云端智能机器人
云端智能机器人社区为开启您的美妙旅程: 海睿官方社区:https://harix.cloudminds.com 海睿开发者文档:https://harix.cloudminds.com/#/index/community/doc CSDN开发者社区:https://bbs.csdn.net/forums/harix GitHub: https://github.com/HarixRDK。
1653 2
2022达闼机器人GDC大会--云端智能机器人
|
安全 前端开发 Java
面试官:你的缺点是什么?这样回答漂亮!
前言 作为一个资(da)深(ling)HR,此题不要太有感悟! 长文,干货。 以下案例,均来自真实改编,如有雷同,请到墙角反省 当我微笑着问你,可以谈谈自己的缺点吗? 如果应聘者低头莞尔一笑,或羞涩或含蓄地说: “我妈妈说,我最大的缺点,就是太执着,不撞南墙不回头……”
1078 0
面试官:你的缺点是什么?这样回答漂亮!