CSS革命:用Sass/SCSS引领前端创新

目录

  • 前言
  • SCSS
  • Sass
  • Sass 和 SCSS 的区别

前言

在现代的前端开发中,CSS已成为呈现网页和应用程序样式的核心。然而,原生的CSS语法在大型项目中可能变得混乱、冗长且难以维护。
为了解决这些问题,SCSS(Sass CSS)和Sass(Syntactically Awesome Style Sheets)应运而生。
本文将带你简单了解sass和scss。

sass中文网
scss中文网

SCSS

SCSS(Sass CSS)是一种CSS预处理器,它扩展了普通的CSS语法,提供了更强大、更灵活的功能。
SCSS使用类似于CSS的语法,并引入了变量、嵌套、混合、继承等概念,使得CSS代码更易于编写和维护。

  1. 变量(Variables):您可以使用变量来存储颜色、字体、间距等重复使用的值,并在需要的地方引用它们。这样可以简化代码,方便统一修改。

    $primary-color: #007bff;.button {background-color: $primary-color;
    }
    
  2. 嵌套选择器(Nested Selectors):可以在SCSS中嵌套选择器,以减少代码量,改善可读性。

    .container {width: 100%;.title {font-size: 24px;}
    }
    
  3. 混合(Mixins):混合是一段可重用的代码块,可以像函数一样在需要的地方引用。它可以包含任意数量的属性和样式。

    @mixin flexbox {display: flex;justify-content: center;align-items: center;
    }.container {@include flexbox;
    }
    
  4. 继承(Extend):可以通过继承样式来减少重复的CSS代码。

    .button {border: 1px solid #ccc;padding: 10px;
    }.primary-button {@extend .button;background-color: #007bff;color: #fff;
    }
    
  5. 导入其他文件(Import):可以将SCSS代码拆分到多个文件中,并使用@import指令将它们导入到主文件中。

    // main.scss
    @import "variables";
    @import "buttons";
    
  6. @content 是 Sass/SCSS 中的特殊指令,用于在自定义的混入(Mixin)中传递代码块。通过使用 @content,可以将一个或多个代码块传递给混入,并在混入中使用这些代码块。

    @mixin media-query($size) {@media (max-width: $size) {@content;}
    }.container {width: 100%;@include media-query(768px) {background-color: #f5f5f5;}
    }
    

    编译后的 CSS 代码如下所示:

    .container {width: 100%;
    }@media (max-width: 768px) {.container {background-color: #f5f5f5;}
    }
    

    应用: 创建适应不同屏幕尺寸或其他条件的样式。

以上只是SCSS的一小部分功能和用法。SCSS还提供了更多的功能,如条件语句、循环、函数等,以及灵活的配置选项,更多内容见scss中文网。


Sass

Sass(Syntactically Awesome Style Sheets)是一种CSS预处理器,它扩展了普通的CSS语法,并提供了更多的功能和特性。
Sass与SCSS非常相似,实际上,SCSS是Sass的一种语法扩展,可以说是更加兼容和易于学习的版本。

以下是一些Sass的特性和用法:

  1. 变量(Variables):在Sass中,使用变量来存储重复的值,例如颜色、字体大小、间距等,并在需要的地方引用它们。

    $primary-color: #007bff.buttonbackground-color: $primary-color
    
  2. 嵌套选择器(Nested Selectors):在Sass中嵌套选择器,以减少代码量和改善可读性。

    .containerwidth: 100%.titlefont-size: 24px
    
  3. 混入(Mixins):混入是一段可重用的代码块,在需要的地方引用它们。与SCSS类似,混入可以包含任意数量的属性和样式。

    @mixin flexboxdisplay: flexjustify-content: centeralign-items: center.container@include flexbox
    
  4. 继承(Extend):Sass允许通过继承样式来减少重复的CSS代码。

    .buttonborder: 1px solid #cccpadding: 10px.primary-button@extend .buttonbackground-color: #007bffcolor: #fff
    
  5. 导入其他文件(Import):您可以将Sass代码拆分到多个文件中,并使用@import指令将它们导入到主文件中。

    // main.sass
    @import variables
    @import buttons
    

Sass 和 SCSS 的区别

  • Sass:

    • 使用缩进来表示层级关系,没有大括号和分号。
    • 通过空行、缩进和冒号来表示属性和值的关系。
    • 嵌套选择器使用父级选择器后跟子级选择器的方式,可以减少代码量。
    • 没有必要写单位,如可以直接写 margin: 10,Sass 会自动添加单位。
    • 变量定义符号为 $,例如 $primary-color: #007bff
    • 混入使用 @mixin 声明,通过 @include 引用。
    • 文件后缀名为 .sass
    // main.sass$primary-color: #007bff.containerwidth: 100%.titlefont-size: 24px.buttonbackground-color: $primary-color
    
  • SCSS:

    • 使用花括号和分号来表示层级关系和语句结束。
    • 属性和值之间使用冒号来进行分隔。
    • 嵌套选择器使用普通的 CSS 语法,以大括号表示。
    • 需要明确写明单位,如 margin: 10px
    • 变量定义符号为 $,例如 $primary-color: #007bff
    • 混入使用 @mixin 声明,通过 @include 引用。
    • 文件后缀名为 .scss
    // main.scss$primary-color: #007bff;.container {width: 100%;.title {font-size: 24px;}
    }.button {background-color: $primary-color;
    }
    
  • 无论是Sass还是SCSS,最终都会被编译为普通的CSS代码

    /* main.css */.container {width: 100%;
    }.container .title {font-size: 24px;
    }.button {background-color: #007bff;
    }
    

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

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

相关文章

Java基础篇--数组

目录 声明和初始化数组: 访问和修改数组元素: 数组长度: 遍历数组: 多维数组的遍历: 数组的常见操作和方法: 拓展小知识: 数组是Java中的一种数据结构,用于存储相同类型的多个…

B100-技能提升-线程池分布式锁

目录 线程池什么是线程池?为什么用线程池?线程池原理常见四种线程池和自定义线程池 线程池 什么是线程池? 池化技术 为什么用线程池? 1 由于设置最大线程数,防止线程过多而导致系统崩溃。 2 线程复用,不需要频繁创建或销毁…

包管理机制pip3

pip3 安装pip3 安装pip3 apt install python3-pip yum install python3-pip从仓库出发的命令 查询仓库信息 // 获取默认pip3源 pip3 config get global.index-url查询所有软件包 查询已经安装的所有软件包 pip3 list从软件包出发的命令 从软件包名出发查询其他信息 查询…

230. 二叉搜索树中第K小的元素

介绍 中序遍历:左子树 -> 中 -> 右子树 二叉搜索树:中序遍历可以得到有序的序列 递归法 1.使用函数循环递归处理 2.使用一个数组来保存 k, 保证在个个递归函数中都能看到 看的变化;每访问一个节点,这个数减一&#xff0c…

软件测试基础篇——Redis

Redis Redis数据库的配置与连接 解压redis数据库的安装包(建议把解压后的安装包放到磁盘的根目录,方便访问操作)打开【命令行窗口】:winR在命令行窗口,进入到redis安装目录中 ​ 格式一:cd /d redis目录…

Linux安装Zookeeper

1、Zookeeper简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域…

自然语言处理从入门到应用——LangChain:记忆(Memory)-[记忆的类型Ⅲ]

分类目录:《自然语言处理从入门到应用》总目录 对话令牌缓冲存储器ConversationTokenBufferMemory ConversationTokenBufferMemory在内存中保留了最近的一些对话交互,并使用标记长度来确定何时刷新交互,而不是交互数量。 from langchain.me…

基于灰狼优化(GWO)、帝国竞争算法(ICA)和粒子群优化(PSO)对梯度下降法训练的神经网络的权值进行了改进(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

环保行业如何开发废品回收微信小程序

废品回收是近年来受到越来越多人关注的环保行动。为了推动废品回收的普及和方便,我们可以利用微信小程序进行制作,方便人们随时随地参与废品回收。 首先,我们需要注册并登录乔拓云账号,并进入后台。乔拓云是一个提供微信小程序制作…

数据结构(一):顺序表详解

在正式介绍顺序表之前,我们有必要先了解一个名词:线性表。 线性表: 线性表是,具有n个相同特性的数据元素的有限序列。常见的线性表:顺序表、链表、栈、队列、数组、字符串... 线性表在逻辑上是线性结构,但…

【云原生】Pod详讲

目录 一、Pod基础概念1.1//在Kubrenetes集群中Pod有如下两种使用方式:1.2pause容器使得Pod中的所有容器可以共享两种资源:网络和存储。1.3kubernetes中的pause容器主要为每个容器提供以下功能:1.4Kubernetes设计这样的Pod概念和特殊组成结构有…

Django中级指南:理解并实现Django的模型和数据库迁移

Django 是一个极其强大的 Python Web 框架,它提供了许多工具和特性,能够帮助我们更快速、更便捷地构建 Web 应用。在本文中,我们将会关注 Django 中的模型(Models)和数据库迁移(Database Migrations&#x…

上传代码到GitCode

Git 全局设置 git config --global user.name "AnyaPapa" git config --global user.email "fangtaihongqq.com" 添加SSH密钥 Mac终端输入命令 cd existing_folder git init git remote add origin gitgitcode.net:Java_1710/test.git git add . git co…

2023国赛数学建模A题思路分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…

Mac电脑如何把照片以文件格式导出?

在Mac电脑上,我们经常会拍摄、保存和编辑各种照片。有时候,我们可能需要将这些照片以文件形式导出,以便与他人共享、打印或备份。无论您是要将照片发送给朋友、上传到社交媒体,还是保存到外部存储设备,导出照片为文件是…

我的Python教程:使用Pyecharts画柱状图

Pyecharts是一个用于生成 Echarts 图表的 Python 库。Echarts 是一个基于 JavaScript 的数据可视化库,提供了丰富的图表类型和交互功能。通过 Pyecharts,你可以使用 Python 代码生成各种类型的 Echarts 图表,例如折线图、柱状图、饼图、散点图…

java不支持解压rar5的解决办法--引用本地7zip.exe

由于rar5算法未开源,没有合适的JAVA依赖能够解决解压rar5。在运行中报错: javacom.github.junrar.exception.RarException: badRarArchive 通过引用本地7zip.exe,命令行执行解决: private static void unZipRar5File(String fileP…

探索可视化应用的崭新前景

在当今数据驱动的世界中,可视化应用成为了一种强大的工具,能够将复杂的数据转化为易于理解和分析的图形形式。随着技术的不断发展和创新,可视化应用正迎来崭新的前景。本文将介绍可视化应用的定义、重要性以及当前的发展趋势,并探…

Controller是单例还是多例?

Controller是单例还是多例? controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱。正因为单例所以不是线程安全的。 我们下面来简单的验证下: package com.riemann.springbootdemo.controller;import org…