[转]CSS、LESS和SASS(SCSS)的区别以及Ruby Sass、LibSass、Node Sass、Dart Sass之间的关系
随着前端开发的不断发展,CSS也逐渐延伸出了很多新的语言,less和Sass就是其中两种,下面我们就一起来看看它们到底有何区别。
SASS和LESS
SASS(英文全称:Syntactically Awesome Stylesheets)Sass 诞生于 2007 年,使用Ruby 编写,是一种对css的一种扩展提升,增加了规则、变量、混入、选择器、继承等等特性。可以理解为用js的方式去书写,然后编译成css。比如说,sass中可以把反复使用的css属性值定义成变量,然后通过变量名来引用它们,而无需重复书写这一属性值。
LESS(2009年开源的一个项目,受Sass的影响较大,但又使用CSS的语法,让大部分开发者和设计师更容易上手。LESS保留了css的任何功能,同时提供了多种方式能平滑的将写好的代码转化成标准的CSS代码,可以在任何使用随时切换到css的语法进行书写。
既然提到SASS,就说下与它相关的4个库:Ruby Sass、LibSass、Node Sass、Dart Sass 。基本关系和情况如下:
1、Ruby Sass 是 Sass 的最初实现,但是 已经于 2019年 3 月 26 日将寿终正寝。我们已经不再对它提供任何支持了,请 Ruby Sass 用户 迁移到其它实现版本(LibSass 或 Dart Sass)。可参见:Ruby Sass。
2、Sass的主要实现有Ruby Sass 11和LibSass 20(node-sass底层使用的是LibSass),它们都有各自的优缺点。
3、官方建议新的Sass项目不推荐使用LibSass和Node Sass,而采用Dart Sass。可参见LibSass is Deprecated、Sass和Sass中文网。 所以,具体应用时,可将node-sass换成dart-sass。
目前(截至2022.1.24),国内node-sass经常安装失败。如果已经安装了node-sass,可以使用命令卸载:npm uninstall node-sass。
然后再安装Dart Sass,其npm安装命令如下:npm install sass --save或npm install sass -S或npm install -g sass。
SASS和LESS****使用
传统的css可以直接被html引用,但是sass和less由于使用了类似JavaScript的方式去书写,所以必须要经过编译生成css,而html引用只能引用编译之后的css文件,虽然过程多了一层,但是毕竟sass/less在书写的时候就方便很多,所以在我们使用sass/less之前,只要我们提前设置好,就可以直接生成对应的css文件,而我们只需要关心我们的sass/less文件即可。
Sass的语法规则,SASS技术的文件的后缀名有两种形式:.sass和.scss。其实两者都是同一种东西,两种均可以可以通过编译生成浏览器能识别的css文件。这两种的区别:
扩展名不同;
SCSS 的语法书写和CSS 语法书写方式非常类似,.sass文件对代码的排版有着非常严格的要求,而且没有大括号,没有分号;
Sass 语法
$font-stack: Helvetica, sans-serif //定义变量
$primary-color: #333 //定义变量 body
font: 100% $font-stack
color: $primary-color
SCSS 语法
$font-stack: Helvetica, sans-serif;
$primary-color: #333; body {
font: 100% $font-stack;
color: $primary-color;
}
编译出来的 CSS
body {
font: 100% Helvetica, sans-serif;
color: #333;
}
LESS技术的后缀名只有一种,就是.less,语法规则和sass大同小异,详细可以参考Less中文网。
LESS使用分为两种:
1.直接在浏览器中引入less编译器js文件和less文件,直接渲染编译为css文应用到当前页面中。
2.less文件通过编译成为css之后引用css;
/* Less */
@color: #999;
@bgColor: skyblue;//不要添加引号
@width: 50%; wrap {
color: @color;
width: @width;
}
/* 生成后的 CSS */
wrap {
color: #999;
width: 50%;
}
关于SASS和LESS的概念就是这样,如果想要继续深入了解更详细语法,恐怕就得多花功夫了,不过,学好SASS和LESS对你的前端发展绝对是有很大帮助的。加油,努力成为前端大神。
其它链接:
[转]CSS、LESS和SASS(SCSS)的区别以及Ruby Sass、LibSass、Node Sass、Dart Sass之间的关系的更多相关文章
- sass/scss 和 less的区别
一. Sass/Scss.Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量 ...
- 前端编码规范(4)—— CSS 和 Sass (SCSS) 规范
CSS and Sass (SCSS) style rules ID and class naming ID和class(类)名总是使用可以反应元素目的和用途的名称,或其他通用名称.代替表象和晦涩难懂 ...
- CSS, Sass, SCSS 关系
Sass(Syntactically Awesome Style Sheets) ,是一种css预处理器和一种语言, 它可以用来定义一套新的语法规则和函数,以加强和提升CSS. 它有很多很好的特性,但 ...
- CSS预处理器 Less Sass,Scss 编译 Sourcemap调试
sass.less和stylus的安装使用和入门实践 SASS用法指南 Sass Basics CSS预处理器 css preprocessor 预处理器即preprocessor,预处 ...
- scss和sass最大的区别
重新接触了一下sass语法,在vscode的用的easysass插件.ctrl+S就可以自动编译成css文件.需要自己配置生成css路径 遇到的一个坑就是sass官网几乎全是写的sass,示例中全部是 ...
- CSS & SASS & SCSS & less
CSS & SASS & SCSS & less less vs scss https://github.com/vecerek/less2sass/wiki/Less-vs. ...
- sass.scss简单入门
最近研究了一下sass和scss,清晰结构化,在某些地方的确强大,所以写了一篇入门教程,大概15分钟左右就能明白基本原理 什么是sass(css预处理器) Sass官网上是这样描述sass的,sass ...
- vue2.0以上版本安装sass(scss)
一.首先说明sass和scss的区别. 1.异同:1)简言之可以理解scss是sass的一个升级版本,完全兼容sass之前的功能,又有了些新增能力.语法形式上有些许不同,最主要的就是sass是靠缩进表 ...
- Less、Sass/Scss
一.Less.Sass/Scss是什么? 1.Less: 是一种动态样式语言. 对CSS赋予了动态语言的特性,如变量.继承.运算.函数. Less 既可以在客户端上运行 (支持IE 6+, Webki ...
- Sass(SCSS)中文手册——入门
简书原文 https://www.jianshu.com/p/e82c27aa05c7 前言 该中文手册是我在Sass中文文档的基础上编辑的,或者也可以理解为就是Sass中文文档的翻版.之所以有这篇文 ...
随机推荐
- 某制造企业基于 KubeSphere 的云原生实践
背景介绍 随着业务升级改造与软件产品专案的增多,常规的物理机和虚拟机方式逐渐暴露出一些问题: 大量服务部署在虚拟机上,资源预估和硬件浪费较大: 大量服务部署在虚拟机上,部署时间和难度较大,自动化程度较 ...
- 再见 Dockerfile,拥抱新型镜像构建技术 Buildpacks
作者:米开朗基杨,方阗 云原生正在吞并软件世界,容器改变了传统的应用开发模式,如今研发人员不仅要构建应用,还要使用 Dockerfile 来完成应用的容器化,将应用及其依赖关系打包,从而获得更可靠的产 ...
- 云原生爱好者周刊:寻找 Netlify 开源替代品
开源项目推荐 Coolify Coolify 是一个开源自托管的 Heroku/Netlify 替代品,颜值还不错. Podman Desktop Podman Desktop 是针对 Podman ...
- Kubernetes 跨 StorageClass 迁移 Persistent Volumes 完全指南
大家好,我是米开朗基杨. KubeSphere 3.3.0 (不出意外的话~)本周就要 GA 了,作为一名 KubeSphere 脑残粉,我迫不及待地先安装 RC 版尝尝鲜,一顿操作猛如虎开启所有组件 ...
- 经验总结之 _DEBUGGER _01 _Invalid coercion null-node{} as xsstring _20210909
经验总结之 _DEBUGGER _01 _Invalid coercion null-node{} as xsstring _20210909 今天喜提一个bug,报错情况如下: 该项目使用的是 sp ...
- Selenium操作:测试form表单
from表单是经常测试的用例,用户登录.注册等都会用到form表单,本文简单设计了一个用户登录的form表单,并对该form表单进行测试 一.自定义form表单 1.用到的组件 如下图,图中定义了一个 ...
- UniswapV2Pair细节
UniswapV2Pair合约是Uniswap V2协议中的核心部分,用于管理流动性池.代币交换.流动性代币的铸造和销毁等操作.以下是对UniswapV2Pair合约中所有主要方法及其参数的详细讲解. ...
- Ubuntu中Conda建立环境和删除环境
网上说的很全面了,这里我把我遇到的一些问题和解决方案罗列出来,以便未来的学习和了解. 博客的好处就体现出来了,下次你再用这个东西,就直接打开你的博客照抄就行了,不用东搜西搜了,及其方便,这种碎片化的东 ...
- 想要硬件设计不用愁?首先要搞懂这三类GPIO!
合宙低功耗4G模组经典型号Air780E,支持两种软件开发方式: 一种是传统的AT指令:一种是基于模组做Open开发. 传统AT指令的开发方式,合宙模组与行业内其它模组品牌在软件上区别不大,在硬件功耗 ...
- 敏捷开发:Sprint Planning 冲刺计划会议详细介绍和用户故事拆分、开发任务细分
Sprint Planning 冲刺计划会议简介 Sprint Planning (冲刺计划会议),又叫规划会议.此会议通过 Scrum 团队的集体沟通讨论,确定接下来的 Sprint 中要完成的待开 ...