一. Sass/Scss&Less是什么?

Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,语法跟css一样(但多了些功能),比css好写,而且更容易阅读。Sass语法类似与Haml,属于缩排语法(makeup),用意就是为了快速写Html和Css。

Less一种动态样式语言. 将CSS赋予了动态语言的特性,如变量,继承,运算, 函数. LESS 既可以在客户端上运行 (支持IE 6+, Webkit, Firefox),也可一在服务端运行 (借助 Node.js)。less英文站需要翻墙,也可以访问中文站

Sass与Scss有什么差别

Sass原先跟Haml一样的缩排语法,对于写惯Css的前端来说是很不直观的,也不能将原来的Css加到Sass里面,因此Sass改良了语法,Sass 3就变成了Scss(Sassy CSS)。与原来的语法兼容,只是用{}取代了原来的缩进。

Sass

.content
margin:10px auto
h1
font-size:24px;

Scss

.content{
margin:10px auto
h1{
font-size:24px;
}
}

二. Sass/Scss&Less区别?

1.Sass是基于Ruby的,是在服务端处理的,而Less是需要引入less.js来处理Less代码输出Css到浏览器,也可以在开发环节使用Less,然后编译成Css文件,直接放到项目中,也有 Less.appSimpleLessCodeKit.app这样的工具,也有在线编译地址。

2.变量符不一样,less是@,而Scss是$,而且变量的作用域也不一样,后面会讲到。

3.输出设置,Less没有输出设置,Sass提供4中输出选项:nested, compact, compressed 和 expanded。

4.Sass支持条件语句,可以使用if{}else{},for{}循环等等。而Less不支持。

/* Sample Sass "if" statement */
 
@if lightness($color) > 30% {
background-color: #000;
} @else {
background-color: #fff;
}
 
/* Sample Sass "for" loop */
@for $i from 1 to 10 {
.border-#{$i} {
border: #{$i}px solid blue;
}
}

三. Sass/Scss&Less的共同特征

1.变量

允许我们单独定义通用的样式,这样可以在css中调用。

Less 变量

@color:#4d926f;
#header{
color:@color;
}
h2{
color:@color;
}

Scss 变量

$color:#4d926f;
#header{
color:$color;
}
h2{
color:$color;
}

编译后的css

#header{color:#4d926f;}
h2{color:#4d926f;}

2.混合

混合可以将一个定义好的class A轻松的引入到另一个class B中,从而简单实现class B继承class A中的所有属性。我们还可以带参数地调用,就像使用函数一样。

Less 混合

.rounded-corners (@radius: 5px) {
border-radius: @radius;
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
}
 
#header {
.rounded-corners;
}
#footer {
.rounded-corners(11px);
}

Scss 混合

@mixin rounded-corners ($radius: 5px) {
border-radius: $radius;
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
}
 
#header {
@include rounded-corners;
}
#footer {
@include rounded-corners(11px);
}

编译后的css

#header{
border-radius:5px;
-webkit-border-radius:5px;
-moz-border-radius:5px;
}
#footer{
border-radius:11px;
-webkit-border-radius:11px;
-moz-border-radius:11px;
}

3.嵌套

我们可以在一个选择器中嵌套另一个选择器来实现继承,这样很大程度减少了代码量,并且代码看起来更加的清晰。

Less 嵌套

#header {
h1 {
font-size: 26px;
font-weight: bold;
}
p { font-size: 12px;
a { text-decoration: none;
&:hover { border-width: 1px }
}
}
}

Scss 嵌套

#header {
h1 {
font-size: 26px;
font-weight: bold;
}
p { font-size: 12px;
a { text-decoration: none;
&:hover { border-width: 1px }
}
}
}

编译后的css

#header h1 {
font-size: 26px;
font-weight: bold;
}
#header p {
font-size: 12px;
}
#header p a {
text-decoration: none;
}
#header p a:hover {
border-width: 1px;
}

3.函数&运算

运算提供了加,减,乘,除操作;我们可以做属性值和颜色的运算,这样就可以实现属性值之间的复杂关系。

Less 函数运算

@the-border: 1px;
@base-color: #111;
@red: #842210;
#header {
color: @base-color * 3;
border-left: @the-border;
border-right: @the-border * 2;
}
#footer {
color: @base-color + #003300;
border-color: desaturate(@red, 10%);
}

Scss-函数运算

$the-border: 1px;
$base-color: #111;
$red: #842210;
#header {
color: $base-color * 3;
border-left: $the-border;
border-right: $the-border * 2;
}
#footer {
color: $base-color + #003300;
border-color: desaturate($red, 10%);
}

编译后的css

#header {
color: #333;
border-left: 1px;
border-right: 2px;
}
#footer {
color: #114411;
border-color: #7d2717;
}

4.color函数

提供了一系列的颜色运算函数. 颜色会先被转化成 HSL 色彩空间, 然后在通道级别操作:

lighten(@color, 10%);
/* return a color which is 10% *lighter* than @color */
darken(@color, 10%);
/* return a color which is 10% *darker* than @color */
 
saturate(@color, 10%);
/* return a color 10% *more* saturated than @color */
desaturate(@color, 10%);
/* return a color 10% *less* saturated than @color */
 
fadein(@color, 10%);
/* return a color 10% *less* transparent than @color */
fadeout(@color, 10%);
/* return a color 10% *more* transparent than @color */
 
spin(@color, 10);
/* return a color with a 10 degree larger in hue than @color */
spin(@color, -10);
/* return a color with a 10 degree smaller hue than @color */

Scss同样也支持color函数,只需要将@改为$即可。

5.作用域

Less-作用域

@color: #00c; /* 蓝色 */
#header {
@color: #c00; /* red */
border: 1px solid @color; /* 红色边框 */
}
#footer {
border: 1px solid @color; /* 蓝色边框 */
}

Less-作用域编译后

#header{border:1px solid #cc0000;}
#footer{border:1px solid #0000cc;}

scss-作用域

$color: #00c; /* 蓝色 */
#header {
$color: #c00; /* red */
border: 1px solid $color; /* 红色边框 */
}
#footer {
border: 1px solid $color; /* 蓝色边框 */
}

Less-作用域编译后

#header{border:1px solid #c00}
#footer{border:1px solid #c00}

我们可以看出来,less和scss中的变量会随着作用域的变化而不一样,上面的例子能很好的解释这点。

6.Importing

文件引入

Less-import

@import "lib.less";
@import "lib";

在Scss中,也是可以import。

scss-import

//需要被 import 的文件必须以 _开头命名,如 _rounded.scss
@import "rounded";

四. Sass/Scss安装

Scss的安装需要Ruby环境

$ gem install sass

安装后就可以直接编译Sass了

$ sass --watch style.scss:style.css

还有一个利器就是大名顶顶的Compass,后面我会用一篇博文来介绍下。

五. Less安装使用

1.在客户端使用

引入你的 .less 样式文件的时候要设置 rel 属性值为 “stylesheet/less”:

<link rel="stylesheet/less" type="text/css" href="styles.less">

然后在Less官网下载 less.js, 在 中引入:

<script src="less.js" type="text/javascript"></script">

注意你的less样式文件一定要在引入less.js前先引入。

2.在服务端安装使用

* 安装

在服务器端安装 LESS 的最简单方式就是通过 npm(node 的包管理器), 像这样:

$ npm install less

如果你想下载最新稳定版本的 LESS,可以尝试像下面这样操作:

$ npm install less@latest

* 使用

在命令行下使用

你可以在终端调用 LESS 解析器:

$ lessc styles.less

上面的命令会将编译后的 CSS 传递给 stdout, 你可以将它保存到一个文件中:

$ lessc styles.less > styles.css

如何你想将编译后的 CSS 压缩掉,那么加一个 -x 参数就可以了.

还有些编译工具上面也有讲过,那些更加的方便。

参考资料

http://coding.smashingmagazine.com/2011/09/09/an-introduction-to-less-and-comparison-to-sass/

http://www.lesscss.org

http://www.lesscss.net

http://sass-lang.com

VIA:iUX Blog,转载时请注明出处

动态样式语言Sass&Less介绍与区别的更多相关文章

  1. Less (一种动态样式语言)

    Less (一种动态样式语言). LESS是一种由Alexis Sellier设计的动态层叠样式表语言,受Sass所影响,同时也影响了 Sass的新语法:SCSS. LESS是开源的,其第一个版本由R ...

  2. less 一种 动态 样式 语言

    LESS « 一种动态样式语言 http://www.bootcss.com/p/lesscss/ 一种 动态 样式 语言. LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承,运算, 函数 ...

  3. 动态样式语言—LESS

    博客原文地址:Claiyre的个人博客 https://claiyre.github.io/ 博客园地址:http://www.cnblogs.com/nuannuan7362/ 如需转载,请在文章开 ...

  4. 动态样式语言Less学习笔记

    介绍资料参见:http://www.bootcss.com/p/lesscss/ LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承,运算, 函数. LESS 既可以在 客户端 上运行 (支 ...

  5. Bootstrap进阶六:动态样式语言LESS简介

    LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6+, Webkit, Firefox),也可以借助Node.js或者R ...

  6. 动态样式语言—LESS基础知识

    CSS是一门非程序式语言,缺少逻辑性,不便于维护 LESS在CSS现有语法的基础上,为CSS加入程序式语言的特性 引入了变量.混入.运算.函数等功能,大大简化CSS的编写,降低了CSS的维护成本 LE ...

  7. Web前端一种动态样式语言-- Less

    变量 变量允许我们单独定义一系列通用的样式,然后在需要的时候去调用.所以在做全局样式调整的时候我们可能只需要修改几行代码就可以了. // LESS @color: #4D926F; #header { ...

  8. 动态样式语言less初识

    资料参考与http://lesscss.cn/ Bootstrap--(less)下载安装配置 http://lesscss.cn Less使用两种方法 (1)在客户端使用LESS--学习 编写 x. ...

  9. 关于"动态语言" "静态语言" "静态类型语言" "动态类型语言"的区别

    参考链接:关于“编译型”“解释型”“动态语言”“静态语言”“动态类型语言”“静态类型语言”的区分以及优缺点(汇总整理) 很多人把这两类混为一谈,但是这是完全不同的两个概念!!! 动态和静态语言主要看的 ...

随机推荐

  1. C#设计模式之控制反转即依赖注入-微软提供的Unity

    使用VS2015的Nuget管理器下载Unity. 程序员接口类: 1 namespace UnityDemo 2 { 3 public interface IProgrammer 4 { 5 voi ...

  2. oracle sql - remove a user's all objects

    DECLARE TYPE cst_table_list IS TABLE OF VARCHAR2(40); TYPE cst_list IS TABLE OF VARCHAR2(40); TYPE n ...

  3. sprites.png雪碧图

    长时间不用把精灵图怎么用给忘了... 一.PC端 给所用到精灵图的元素设置background:url(sprites.png路径);  background-position: -x -y; 其中: ...

  4. Class 的基本语法

    简介 JavaScript 语言中,生成实例对象的传统方法是通过构造函数.下面是一个例子. function Point(x, y) { this.x = x; this.y = y; } Point ...

  5. [postgresql]ROWS is not applicable when function does not return a set问题解决

    需要把程序结尾的ROWS 1000去掉,提示如果函数不是返回一个数据集的情况下ROWS是不适用的: CREATE OR REPLACE FUNCTION public.function( eigyou ...

  6. python ssh登录

    3. 编写linkssh.py #!/usr/bin/env python# -*- coding: utf-8 -*-# filename: pexpect_test.py'''Created on ...

  7. Angular----安置物流项目前端框架经验总结

    一.架构方面 (一) Angular框架有service .controller层: 在Angular里面,services作为单例对象在需要到的时候被创建,只有在应用生命周期结束的时候(关闭浏览器) ...

  8. Dir命令

    注: 此系列为自己之前所搭建网站内容. 其实python的os模块能够很好的完成此任务.改天总结下. 之前在处理气象数据时,十几个文件,文件名比较长,需要自己处理变动的年份找出地址的规律再进行文件的读 ...

  9. iptables详解(8):iptables扩展模块之state扩展

    当我们通过http的url访问某个网站的网页时,客户端向服务端的80端口发起请求,服务端再通过80端口响应我们的请求,于是,作为客户端,我们似乎应该理所应当的放行80端口,以便服务端回应我们的报文可以 ...

  10. Quartz教程四:Trigger

    原文链接 | 译文链接 | 翻译:nkcoder 本系列教程由quartz-2.2.x官方文档翻译.整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正:有兴趣 ...