SCSS(Sassy CSS)是一种CSS预处理器,它扩展了CSS的功能,并为样式表的编写提供了额外的便利性。以下是两者之间的主要区别:
1. 语法扩展:
          CSS标准层叠样式表语言,采用简单、扁平化的键值对形式书写。
         SCSS基于CSS语法之上增加了嵌套规则、变量、混入(mixins)、继承等高级特性,代码结构更加类似编程语言。
2. 变量
          CSS不支持变量定义和使用。
         SCSS支持变量定义,可以声名$variable:value;并在样式中重复引用,方便颜色、尺寸和其他值的统一管理和修改。
3. 嵌套规则
        CSS中的选择器是扁平化的,每个选择器独立书写。
       SCSS允许选择器嵌套,这样可以更好地反映HTML结构,并减少重复代码;
4.导入(@import)
         CSS的@import主要用于合并多个CSS文件。但可能会导致额外的HTTP请求,降低性能。
        SCSS的@import不仅能合并文件。而且在编译时会被处理成一个CSS文件。同时支持导入其他SCSS文件并合并其变量、混入等。
 
5.混合器(@mixin)
         CSS不具备此功能。
         SCSS提供混合功能,可以创建可重用的样式块。包括带有参数的样式模板,可以在多个地方调用以避免重复代码。
6.运算符和函数
        CSS不支持继承。
  SCSS允许在样式中执行简单的算术计算。如颜色函数、数值运算等。
7.继承(@extend)
  CSS需要通过类名的层叠或使用通用选择器来实现样式继承。
  SCSS 提供了明确的@extend指令,可以将样式应用到多个选择器上。
总结来说,SCSS作为一种预处理器,增强了CSS语言的功能性和可编程性。
 
下面用代码进行详细解释
1.SCSS变量和混合器 (@mixin)
 // 定义变量
$button-bg-color: #3498db;
$red-button-bg-color: #e74c3c; // 使用变量及混合(Mixins)
@mixin button-styles($bg-color) {
background-color: $bg-color;
padding: 10px 20px;
border-radius: 5px;
} .button {
@include button-styles($button-bg-color);
color: black; // 其他基础样式
} .red-button {
@include button-styles($red-button-bg-color);
color: white; // 只更改特定的样式属性
}
2. 嵌套规则

.navbar {
background-color: #333; .nav-item {
display: inline-block; &.active {
font-weight: bold;
}
}
}
3. 导入 (@import)

 // _variables.scss 文件包含变量声明
@import 'variables';
@import 'mixins'; // 使用导入的变量和混入
.title {
color: $primary-color;
@include font-size(2em);
}
4. 混合器 (@mixin)

@mixin font-size($size) {
font-size: $size;
line-height: 1.5 * $size;
}
5. 运算符和函数

$width: 100px;
.element-width {
  width: $width * 2; // 数值运算
}

.text-shadow {
       text-shadow: rgba(0, 0, 0, 0.5) 2px 2px; // 示例简单样式,SCSS支持更多复杂颜色函数如 darken(), lighten()
}
6. 继承 (@extend)

// 定义一个基础样式类
%base-button {
  border: 1px solid #ccc;
  padding: 8px 16px;
  font-size: 14px;
  text-align: center;
}
// 使用继承来创建扩展样式类
.button {
  @extend %base-button; // 继承了%base-button的所有样式
  background-color: #f0f0f0;
}
.primary-button {
  @extend %base-button; // 同样继承了%base-button的所有样式
  background-color: #3498db;
  color: white;
}
// 编译后生成的CSS:
.base-button,
.button, .primary-button {
  border: 1px solid #ccc;
  padding: 8px 16px;
  font-size: 14px;
  text-align: center;
}
.button {
  background-color: #f0f0f0;
}
.primary-button {
  background-color: #3498db;
  color: white;
}
7.条件语句与循环:SCSS支持条件语句@if、@for、@each、@while和@debug。

 scss
$font-sizes: (small: 14px, medium: 16px, large: 18px);
@each $size, $value in $font-sizes {
.font-#{$size} {
font-size: $value;
}
}
编译后的CSS
.font-small {
font-size: 14px;
} .font-medium {
font-size: 16px;
} .font-large {
font-size: 18px;
}
8.自定义函数:SCSS提供了一系列内置函数,同时也支持自定义函数。例如,自定义颜色反转函数:

 SCSS
@function color-inverse($color) {
@return mix(white, $color, 100%);
} body {
background-color: color-inverse(black);
}
编译后的CSS:
body {
background-color: white;
}
 
 
 
 
 
 
 
 
 
 
 

SCSS与CSS的区别的更多相关文章

  1. sass/scss 和 less的区别

    一. Sass/Scss.Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量 ...

  2. IE和firefox火狐在JS、css兼容区别

    1.firefox不能对innerText支持. firefox支持innerHTML但却不支持innerText,它支持textContent来实现innerText,不过默认把多余的空格也保留了. ...

  3. FF与IE对JavaScript和CSS的区别

    一.FF与IE对JavaScript的区别 1. document.formName.item("itemName") 问题 说明:IE下,可以使用document.formNam ...

  4. vscode - plug - scss转css

    vscode - plug - scss转css 参考资料 sass笔记(完结)安装,使用,vscode中设置easy sass,嵌套,变量,混合,循环,分支 vscode配置 easy sass E ...

  5. jQuery中prop() , attr() ,css() 的区别

    1.  HTML属性是指页面标记中放在引号中的值,而DOM属性则是指通过JavaScript能够存取的值. (1)在jQuery中,prop()是操作DOM属性,attr()是操作HTML属性. HT ...

  6. WebStorm 9 自动编译 SCSS 产出 CSS 和 source maps

    1.  上一节我们学习了Windows下搭建Ruby开发环境,也为这一节的学习做了铺垫.因为本节需要在Ruby环境下安装SASS.详细请见:http://www.cnblogs.com/wind128 ...

  7. Firefox 与 IE 对Javascript和CSS的区别

    1. document.formName.item("itemName") 问题 说明:IE下,可以使用document.formName.item("itemName& ...

  8. CSS HACK区别IE6、IE7、IE8、Firefox兼容性

    相信不少人,都特别清楚CSS HACK,而其中也是区别IE6.IE7.IE8.Firefox兼容性问题用的,CSS hack由于不同的浏览器,对CSS的解析认识不一样,因此会导致生成的页面效果不一样. ...

  9. .attr()和.prop()和.css()的区别

    是不是新手都会遇到这个问题?遇到过一次,在网上搜一搜,综合成了下面这样.重点参考了dolphin的‘jQuery的attr与prop’, 写的很清楚呢. 一般attribute翻译成中文术语为“特性” ...

  10. 使用scss为css样式自动添加浏览器前缀

    当一个浏览器实现一个新的属性.值或者选择器,而这个特征还不是处于候选推荐标准状态的时候,这属性的前面会添加一个前缀以便于它的渲染引擎识别. 浏览器使用前缀来尝试一些新属性.值和选择器,即使他们还没有最 ...

随机推荐

  1. 智能调度_AIRIOT智能车队管理解决方案

    客运.货运.汽车租赁.出租运营等行业对车辆管理.车队管理以及司乘人员的管理方式,逐渐向数字化和智能化转型.传统的依赖人工调度.记录和跟踪的管理模式已经难以满足业务发展需要,存在如下痛点: 实时监控与定 ...

  2. 基于Python的性能优化

    一.多线程 在CPU不密集.IO密集的任务下,多线程可以一定程度的提升运行效率. import threading import time import requests def fetch_url( ...

  3. Java应用的优雅停机

    一. 优雅停机的概念 优雅停机一直是一个非常严谨的话题,但由于其仅仅存在于重启.下线这样的部署阶段,导致很多人忽视了它的重要性,但没有它,你永远不能得到一个完整的应用生命周期,永远会对系统的健壮性持怀 ...

  4. 一个与 WSL2 建立远程的简单方法

    前言 众所周知,windows 会通过虚拟交换机给本机和 wsl2(Linux 子系统)分别分配 ip.于是本机重启或重启 wsl 服务的时候会重新分配 ip.之前所作的端口转发,监听之类的都会失效. ...

  5. .Net Core 静态类获取注入服务

    由于静态类中无法使用有参构造函数,从而不能使用常规的方式(构造函数获取) 获取服务,我们可以采取通过IApplicationBuilder 获取 1.首先创建一个静态类 using Microsoft ...

  6. no implicit conversion of nil into String

    一.Cocoapod 执行pod install命令时报错 [!] An error occurred while processing the post-install hook of the Po ...

  7. foxy rviz2 "rviz_common/Time"报错问题

    报错内容 The class required for this panel, 'rviz_common/Time', could not be loaded. Error: According to ...

  8. Opencv笔记(13)积分图

    积分图时一种允许子区域快速求和的数据结构,这种求和在很多方面都很有用,值得一提的是haar小波的计算,它用于人脸识别和类似的算法.Opencv支持积分图的三种变体,分别是总和.平方求和以及倾斜求和.每 ...

  9. RHCSA题目大纲

    1.配置IP地址2.配置软件仓库3.调试SELinux4.创建用户账户5. 配置cron计划任务6.创建共享目录7.配置NTP时间客户端  "chronyd服务"8. auto自动 ...

  10. 使用Python实现深度学习模型:序列到序列模型(Seq2Seq)

    本文分享自华为云社区<使用Python实现深度学习模型:序列到序列模型(Seq2Seq)>,作者: Echo_Wish. 序列到序列(Seq2Seq)模型是一种深度学习模型,广泛应用于机器 ...