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. ETSI GS MEC 013,UE 位置 API

    目录 文章目录 目录 版本 功能理解 Relation with OMA APIs Relation with OMA API for Zonal Presence Relation with OMA ...

  2. 带你深入领略 Proxy 的世界

    Proxy 是 es2015 标准规范加入的语法,很可能你只是听说过,但并没有用过,毕竟考虑到兼容的问题,不能轻易地使用 Proxy 特性. 但现在随着各个浏览器的更新迭代,Proxy 的支持度也越来 ...

  3. Pandas学习之路【1】

    安装pandas: pip install pandas pandas读取数据: 数据类型 读取方式 csv, tsv, txt pd.read_csv Excel pd.read_excel mys ...

  4. redis安装和基础使用

    redis安装 mkdir /server/tools -p cd /server/tools echo 'PATH=/usr/local/redis/src:$PATH' >>/etc/ ...

  5. 一个问题:六位八段数码管(Verilog)

    [基本信息] 需求:verilog程序,显示任意六位字符或数值,包含点号,且能够按需点亮位数.(学习篇) 芯片型号:cyclone Ⅳ EP4CE10F17C8 数码管属性:六位.八段 [最终成果图] ...

  6. C++笔记(12) 标准模板库STL

    STL提供了一组表示容器.迭代器.函数.函数对象和算法的模板.STL不是面向对象的编程,而是一种不同的编程模式--泛型编程. 容器:与数组类似的单元,可以存储若干个值,存储的值的类型相同: 算法:完成 ...

  7. restful接口返回JSONObject和父类抽象实现类设计,请求头获取sign和支付宝RSA签名验签工具类方法

    restful接口返回JSONObject和父类抽象实现类设计,请求头获取sign和支付宝RSA签名验签工具类方法 1.JSONObject可以通用数据的灵活性,类似Map数据,数据字段不清晰.具体返 ...

  8. Blender练习——SciFi枪械.md

    Blender练习--SciFi枪械 一.基本操作 常用快捷键 E 挤出 B 倒角,中途可通过滚轮或S来调整细分 Alt+点选 循环选择 Ctrl Alt+点选 并排选择 F 补面,比如一个碗口,将碗 ...

  9. Linux开机启动三种方式

    有的时候,我们开机启动一些命令或者是一段脚本,又或者是开机启动自定义的服务. 下面归纳了2种实现的方式. 方式1-开机启动命令 vim /etc/rc.local #添加你想执行的命令 chmod + ...

  10. Android无障碍自动化结合opencv实现支付宝能量自动收集

    Android无障碍服务可以操作元素,手势模拟,实现基本的控制.opencv可以进行图像识别.两者结合在一起即可实现支付宝能量自动收集.opencv用于识别能量,无障碍服务用于模拟手势,即点击能量. ...