学习笔记总结---关于sass
今天跟大家共同分享交流一下关于sass的知识点:
sass的产生:
css不是一种编程语言,我们可以用它开发网页样式,但不能用它进行编程。它没有常量,变量,也没有条件语句,只是对属性一行行的描述,资料上对它描述几乎都是:它是设计师的工具,而不是程序员的工具。实际上,它在程序员的眼里并不是那么完美的,它的写法需要人工一点点去进行排版,这不仅增加了程序员在编写过程中的困难,也使得后期的维护工作变得繁杂。在这种情况下,css预处理器(css preprocessor)应运而生。css预处理器主要包括以下几种:
- Sass(SCSS)
- LESS
- Stylus
- Turbine
- Swithch CSS
- CSS Cacheer
- DT CSS
在众多的css预处理器语言中,用的最多的就是sass,less和stylus. 而今天主要说的是sass(scss)的用法。
Sass 是对 CSS 的扩展,让 CSS 语言更强大、优雅。 它允许你使用变量、嵌套规则、mixins、导入等众多功能, 并且完全兼容 CSS 语法。
sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号;另一种就是我们这里使用的scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号。
既然是为了解决css在开发样式中存在的弊端,sass(scss)的优点,其实已经很明显,它提供了许多便利的写法,不仅仅大大节省了开发时间,也使得css的开发变得简单易维护。
step1:
Sass 有三种使用方式: 命令行工具、独立的 Ruby 模块,以及包含 Ruby on Rails 和 Merb 作为支持 Rack 的框架的插件。 所有这些方式的第一步都是安装 Sass gem:
gem install sass
如果你使用的是 Windows, 就需要先安装 Ruby。
如果要在命令行中运行 Sass ,只要输入
sass input.scss output.css
你还可以命令 Sass 监视文件的改动并更新 CSS :
sass --watch input.scss:output.css
如果你的目录里有很多 Sass 文件,你还可以命令 Sass 监视整个目录:
sass --watch app/sass:public/stylesheets
使用 sass --help 可以列出完整的帮助文档。
在 Ruby 代码中使用 Sass 是非常容易的。 安装 Sass gem 之后,你可以执行 require "sass" , 然后就可以像这样使用 {Sass::Engine} :
engine = Sass::Engine.new("#main {background-color: #0000ff}", :syntax => :scss)
engine.render #=> "#main { background-color: #0000ff; }\n"
下载安装ruby(网址:http://rj.baidu.com/soft/detail/22711.html?ald)参考安装教程(http://jingyan.baidu.com/article/48b558e33558ac7f38c09aee.html);
step2:跟css差不多类似的是文件建立方式,我们需要一个sass文件夹,里面放的是我们的sass文件,后缀名为.scss。例如:index.scss,这里面写我们要编写的样式,在这里面写的样式可以自动生成规范的css样式,并保存到index.css的文件里。
step3:你也可以通过以下命令让SASS监听某个文件或目录,一旦源文件有变动,就自动生成编译后的版本。
sass --watch sass/index.scss:style/index.css
也可以通过Ctrl+c来取消监听。
sass的基本用法
1、(1)不同于less的@,sass用$来定义变量,定义变量要注意不要使命名含糊不清,要有语义化。
例如:
$w:100px;
$h:100px;
#div{
width:$w;
height:$h;
background:red;
}
(2)如果变量需要镶嵌在字符串之中,就必须需要写在#{}之中。
$w:100px;
$h:100px;
$side: left;
#div{
width:$w;
height:$h;
background:red;
border-#{$side}-radius:50%;
}
2、计算功能
SASS允许在代码中使用算式:
body {
margin: (14px/2);
top: 50px + 100px;
right: $var * 10%;
}(本例来自http://www.ruanyifeng.com/blog/2012/06/sass.html)
3、嵌套
sass允许选择器嵌套,例如:

将会被编译为

这将会避免重复写父级的选择器,是复杂的css嵌套布局变得简单。
4、引用父选择符&
&在编译时将被替换为父选择符,输出到 CSS 中。有时候,使用嵌套规则通过&引用父选择符是编写某种样式要比一般默认的嵌套更为方便。比如,当某个选择器有hover值得时候或者body元素有特殊的class的时候。在这种情况下,你可以清楚地指明通过&使父选择器插入到什么位置。例如:

会被编译为

(断网了。。。以下内容还是将代码以书写形式呈现吧,不能插入图片了。。。sorry。。。)
5、嵌套属性
(1)css中有诸如font-family,font-size,font-weight的属性,在css中,如果你想对他们都进行设置的话,你需要挨个将它们列出。而sass提供了一共简写的形式,仅写一次font,其他附属属性可以嵌套在里面,例如:
.funky {
font: {
family: fantasy;
size: 30em;
weight: bold;
}
}
将会被编译为:
.funky {
font-family: fantasy;
font-size: 30em;
font-weight: bold; }
(2)font本身其实也是可以有value的,例如:
.funky {
font: 2px/3px {
family: fantasy;
size: 30em;
weight: bold;
}
}
会被编译为:
.funky {
font: 2px/3px;
font-family: fantasy;
font-size: 30em;
font-weight: bold; }
6、注释符:
sass跟css一样,支持多行注释/**/和单行注释//;
7、代码的重用:
(1)继承:SASS允许一个选择器,继承另一个选择器。
例如:
$w:100px;
$h:100px;
#demo1{
width:$w;
height:$h;
background:red;
}
现在demo2要继承demo1的样式,可以写为:
#demo2{
@extend #div;
}
7、Mixin
(1)Mixin的用法是:使用@mixin命令,
例如:
@mixin Reset{
margin:0;
padding:0;
position:absolute;
left:0;
top:0;
width:$w;
height:$h;
}
使用@include命令,调用这个mixin
#demo1{
@include Reset;
background:green;
}
(2)Mixin的强大之处在于,在于可以指定参数和缺省值。(本例来自http://www.ruanyifeng.com/blog/2012/06/sass.html)
@mixin left($value: 10px) {
float: left;
margin-right: $value;
}
使用的时候,根据需要加入参数:
div {
@include left(20px);
}
下面是一个mixin的实例,用来生成浏览器前缀。
@mixin rounded($vert, $horz, $radius: 10px) {
border-#{$vert}-#{$horz}-radius: $radius;
-moz-border-radius-#{$vert}#{$horz}: $radius;
-webkit-border-#{$vert}-#{$horz}-radius: $radius;
}
使用的时候,可以像下面这样调用:
#navbar li { @include rounded(top, left); }
#footer { @include rounded(top, left, 5px); }
最后,给大家补充点关于sass,less,stylus的小知识:
(以下内容转自https://zhidao.baidu.com/question/2076835432627765028.html) SASS2007年诞生,最早也是最成熟的CSS预处理器,拥有ruby社区的支持和compass这一最强大的css框架,目前受LESS影响,已经进化到了全面兼容CSS的SCSS。 LESS2009年出现,受SASS的影响较大,但又使用CSS的语法,让大部分开发者和设计师更容易上手,在ruby社区之外支持者远超过SASS,其缺点是比起SASS来,可编程功能不够,不过优点是简单和兼容CSS,反过来也影响了SASS演变到了SCSS的时代,著名的Twitter Bootstrap就是采用LESS做底层语言的。 Stylus,2010年产生,来自Node.js社区,主要用来给Node项目进行CSS预处理支持,在此社区之内有一定支持者,在广泛的意义上人气还完全不如SASS和LESS。总结:Sass看起来在提供的特性上占有优势,但是LESS能够让开发者平滑地从现存CSS文件过渡到LESS,而不需要像Sass那样需要将CSS文件转换成Sass格式。
Stylus功能上更为强壮,和js联系更加紧密。
今天就先写到这儿吧,欢迎大家补充。
学习笔记总结---关于sass的更多相关文章
- Sass和Compass学习笔记系列之Sass
最近在慕课网学习Sass和Compass,学习链接地址:https://www.imooc.com/learn/364,现在整理笔记如下: 一.使用Sass和Compass的优点: a.使用Sass和 ...
- Sass学习笔记之入门篇
Sass又名SCSS,是CSS预处理器之一,,它能用来清晰地.结构化地描述文件样式,有着比普通 CSS 更加强大的功能. Sass 能够提供更简洁.更优雅的语法,同时提供多种功能来创建可维护和管理的样 ...
- Sass学习笔记(补充)
阅读目录 1. Sass和SCSS的区别 2. @while循环 3. @at-root 4. @content 5. 凸显注释 6. CSS输出样式 7. 重置浏览器样式 8. Sass调试和@de ...
- sass个人学习笔记
Materliu 在慕课的视频: http://www.imooc.com/learn/364 . http://www.imooc.com/wiki/371 sass入门:http://www.w3 ...
- Sass简单、快速上手_Sass快速入门学习笔记总结
Sass是世界上最成熟.稳定和强大的专业级css扩展语言 ,除了Sass是css的一种预处理器语言,类似的语言还有Less,Stylus等. 这篇文章关于Sass快速入门学习笔记. 资源网站大全 ht ...
- 学习笔记 - Sass的安装与使用手册
最近因为工作需要,自学了Sass.现在将学习笔记整理在这里,供大家参考. 1. Sass的安装 Sass的编辑器安装方法有很多,大致能分为两种:应用程序(application)和命令行界面(comm ...
- gulp学习笔记3
gulp系列学习笔记: 1.gulp学习笔记1 2.gulp学习笔记2 3.gulp学习笔记3 4.gulp学习笔记4 1.编译sass Sass 是一种 CSS 的开发工具,提供了许多便利的写法,大 ...
- JavaScript学习笔记:数组reduce()和reduceRight()方法
很多时候需要累加数组项的得到一个值(比如说求和).如果你碰到一个类似的问题,你想到的方法是什么呢?会不会和我一样,想到的就是使用for或while循环,对数组进行迭代,依次将他们的值加起来.比如: v ...
- stylus入门学习笔记
title: stylus入门学习笔记 date: 2018-09-06 17:35:28 tags: [stylus] description: 学习到 vue, 有人推荐使用 stylus 这个 ...
随机推荐
- 编写一个程序,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值
编写一个程序,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值 1 #import <Foundation/Foundation.h> 2 3 int main( ...
- August 17th 2016 Week 34th Wednesday
Life is painting a picture, not doing a sum. 生活就像是绘画,而不是做算术. I am too serious about digits. All what ...
- hdu 2087剪花布条
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 思路:正常KMP求解aaaaaa aa得到的结果是6,这题是3.仅仅改一点代码就行 当匹配完之 ...
- 使用dynatrace+showslow进行前端性能测试
1.背景 应用的性能测试与优化目前主要停留在服务器端的反馈,而对于前端性能标准的研究与测试相对比较空白,缺乏统一的标准与工具.众所周知,浏览器html组件的下载及渲染性能直接影响最终的用户体验,目前应 ...
- C#回顾 - 3.NET的IO:字节流
使用 Stream 类管理字节流 使用 FileStream 类管理文件数据 使用 MemoryStream 类管理内存数据 使用 BufferedSream 类提高流性能 3.1 FileStr ...
- Java 解析XML的几种方法
XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便. XML在不同的语言里解析方式都是一样的,只不过实现的语法不同而已. 基本的解析方式 ...
- Delphi编译dll时出错"Cannot debug project unless a host application is defined.use the run|parameters...dialog box."
问题: 在编写DLL程序的时候,按下F9或者按下那个绿色的箭头,会报错,如下 原因: 是因为你按下的F9或者那个绿色箭头是表示“Run”这个程序,但是DLL不是可执行文件,所以当然不能够运行,所以就会 ...
- Delphi基本数据类型---枚举、子界、集合、数组
参考:http://blog.csdn.net/qustdong/article/details/9230743 参考:http://www.cnblogs.com/xumenger/p/440222 ...
- GMap.Net开发之在WinForm和WPF中使用GMap.Net地图插件
GMap.NET是什么? 来看看它的官方说明:GMap.NET is great and Powerful, Free, cross platform, open source .NET contro ...
- C++ 基础 构造函数的使用