现在写样式大家基本上都会用上CSS预处理器,而比较流行的预处理器就是这三位老哥了LessSassStylus

  在这之前,我们先了解一点,sass和scss有什么区别?

  SCSS 是 Sass 3 引入新的语法,其语法完全兼容 CSS3,并且继承了 Sass 的强大功能。

  SCSS 和 Sass 其实是同一种东西,我们平时都称之为 Sass,两者之间不同之处有以下两点:

    1、文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名

    2、语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),而 SCSS 的语法书写和我们的 CSS 语法书写方式非常类似。

  后面的 Sass 代码会用被更多人接受的 SCSS 风格给出;

  OK,准备就绪,我们今天就从以下几点说说它们的区别,当然我们今天只说了一些比较常用的功能,它们本身是有着极其丰富的扩展特性:

    •   基本语法
    •   嵌套语法
    •   变量
    •   @import
    •   函数

  

  一、基本语法  

  Less & SCSS:

.div{
color: #000;
}

  Stylus:

.div
color: #000

  区别:less和scss没有区别,stylus则是没有大括号({})和分号(;);

  二、嵌套语法

  Less & SCSS:

.box {
&.item {
color: #000;
}
}

  Stylus:

.box
&.item
color: #000

  区别:三者的嵌套语法都是一致的,甚至连引用父级选择器的标记 & 也相同。区别也只是大括号({})和分号(;);

  三、变量

  Less:

@pink: #FFB6C1;
.div {
color: @pink;
}

  Sass:

$pink: #FFB6C1;

.div {
color: $pink;
}

  Stylus:

pink = #FFB6C1;

.div
color: pink;

  区别:变量的设置和引用都很明显;

  四、@import

  Less:

@import (option) filename;
optional:
reference: 使用该less文件但是不输出它
inline: 包括在源文件中输出,但是不作处理
less: 将该文件视为less文件,无论其扩展名为什么
css: 将文件视为css文件,无论扩展名为什么
once: 该文件仅可导入一次 (默认)
multiple: 该文件可以多次导入
optional: 当没有发现文件时仍然编译

  Sass:

@import  filename;

  Stylus:

@import  filename;

  区别:三者形式上基本都没有太大区别,less多了选项,但是处理行为上却有一些不同。

     less扩展了原生的@import的语法,如果文件是.css的扩展名,将处理为CSS和@import语句保持原样,如果为其他的扩展名将处理为less导入;

     stylus与less类似,当使用@import没有.css扩展,会被认为是Stylus片段;

     sass则有点不同,它没有扩展语法,而是自己推断引入的方式,规则如下:

        默认情况下,它会寻找 Sass 文件并直接引入, 但是,在少数几种情况下,它会被编译成 CSS 的 @import 规则:

        •  如果文件的扩展名是 .css。
        •  如果文件名以 http:// 开头。
        •  如果文件名是 url()。
        •  如果 @import 包含了任何媒体查询(media queries)。

        如果上述情况都没有出现,并且扩展名是 .scss 或 .sass, 该名称的 Sass 或 SCSS 文件就会被引入。 如果没有扩展名, Sass 将试着找出具有 .scss 或 .sass 扩展名的同名文件并将其引入。

 

  五、函数

  Less:

.border-radius(@radius: 5px) {
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
border-radius: @radius;
} .box{
.border-radius(10px)
}

  Sass:

@mixin border-radius {
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
} .page-title {
@include border-radius;
padding: 4px;
margin-top: 10px;
} //含参数
@function widthFn($n) {
  @return $n * 40px + ($n - 1) * 10px;
}
.leng {
  width: widthFn($n : 5);
}

  Stylus:

golden-ratio(n)
n * 0.618 .golden-box
width: 200px
height: golden-ratio(@width)

  区别:sass区别较大,需要显示的使用关键字去调用,且非mixin时,需要return返回值;

  敲黑板时间到:

   我们今天说的只是一些平时比较常用的功能,且简单组合的方式,在样式预处理器这块,还有很大的内容需要大家去逐步了解;

sass与less的区别?Stylus又是啥?的更多相关文章

  1. Sass和Less的区别?

    这篇文章主要解答以下几个问题,供前端开发者的新手参考. 1.什么是Sass和Less? 2.为什么要使用CSS预处理器? 3.Sass和Less的比较 4.为什么选择使用Sass而不是Less? 什么 ...

  2. CSS预处理器Sass(Scss)、Less、Stylus

    CSS 预处理编译器能让我成程序化其的方式编写CSS代码,可以引入CSS中没有的变量.条件.函数等特性,从而让代码更简单易维护,但一般按预处理器语法编写的代码无法直接在浏览器中运行,需用通过工具比如g ...

  3. less和sass的定义和区别

    less是单独的一种文件,可以理解为css的升级版: sass是一个相对新的编程语言,为web前端开发而生,可以用它来定义一套新的语法规则和函数: 区别: ①   表现方式不同:less基于javas ...

  4. 动态样式语言Sass&Less介绍与区别

    一. Sass/Scss&Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,语法跟css一样(但多了些功能),比css好写, ...

  5. SASS 和 LESS 的区别

    1.编译环境不同 SASS 的安装需要 Ruby 环境,是在服务端处理的: LESS 需要引入 less.js 来处理代码输出 CSS 到浏览器,也可以在开发环节使用 LESS,然后编译成 CSS 文 ...

  6. sass 与 less 的区别与学习

    一直使用的都是sass,公司提出新需求要用less,看了一下less的官方文档,感觉记不住.在这我想用与sass的比较学习,加深印象.也希望可以帮助到一些人. 一.安装sass与less sass基于 ...

  7. sass和scss的区别

    页面引入的时候还是引入的css文件 因为sass和scss都是一种css的预处理工具 目的最后都是生成css文件 sass不带{}和:是基于Ruby 写出来的,严格的缩进方式来控制 scss带这两个 ...

  8. css预处理器 sass和stylus对比以及常用功能

    在众多的css预处理器语言中,sass和stylus算是十分优秀的两个.本文主要针对两者的常用功能做个简单的对比分析.在对比中了解二者的差异,同时帮助大家更好的掌握这两种预处理语言. 本文涉及到的sa ...

  9. 对比学习sass和stylus的常用功能

    在众多的css预处理器语言中,sass和stylus算是十分优秀的两个.本文主要针对两者的常用功能做个简单的对比分析.在对比中了解二者的差异,同时帮助大家更好的掌握这两种预处理语言.本文涉及到的sas ...

随机推荐

  1. Flask理论基础(一)加载配置文件

    一.修改/新增配置项 1.使用配置文件 app.config.from_pyfile("config.cfg") 如上 config.cfg 可以是任意后缀的文本文件,需要与app ...

  2. http11.Http11OutputBuffer.SocketOutputBuffer.doWrite

    这是一个错误. 我在spring框架中,创建了一个基类SuperBaseController, 并且使用了@ModelAttribute用来给HttpServletRequest和HttpServle ...

  3. C# 记录循环消耗时间

    今天写了循环段代码,但是感觉好像性能很差的样子,就想看一下整个循环的执行时间,最开始我想到了DateTime.Now,但是诡异的是,如果我循环的次数比较少的话(少于30000次)就会发现2次时间间隔是 ...

  4. jeecg Online表单开发中新增自定义按钮

    要求:给表单增加一个“确认”按钮,按钮功能更改选中数据的flag字段为1 点击“自定义按钮”,录入一个“确认”按钮 按钮编码:该编码在一个智能表单配置中唯一,该编码同时是按钮触发的JS函数名.例如:按 ...

  5. webpack初始化

    1. 安装node js 2. 安装npm 3. 在桌面新建一个文件夹 4.利用cmd 进入文件夹 5.在cmd中创建一个新文件夹并且进入 6.npm init -y  生成page.json 7. ...

  6. 使用 async await 封装微信小程序HTTP请求

    1. 编写将普通回调函数形式的方法转换为promise方法的promisic方法 // util.js const promisic = function (func) { return functi ...

  7. Java集合中的Map接口怎么使用?

    Map(双列集合框架) 1.Map接口及实现类概述 Map 接口提供三种collection 视图,允许以键集.值集或键-值映射关系集的形式查看某个映射的内容.映射顺序 定义为迭代器在映射的 coll ...

  8. Java面向对象的特征一:封装性

    1.4 面向对象的特征一:封装性 当创建了类的对象以后,如果直接通过"对象.属性"的方式对相应的对象属性赋值的话,可能会出现不满足实际情况的意外,我们考虑不让对象来直接作用属性,而 ...

  9. NX二次开发-弹出选择文件夹对话框

    这个UFUN和NOPEN里没有对应的函数和类,要用C++的方法去做. #include "afxdialogex.h"//弹出选择文件夹对话框头文件 #include " ...

  10. NX二次开发-获取按钮的ID UF_MB_ask_button_id

    NX9+VS2012 1.打开D:\Program Files\Siemens\NX 9.0\UGII\menus\ug_main.men 找到装配和PMI,在中间加上一段 TOGGLE_BUTTON ...