css本身很有趣,但是随着样式表变大,会越来越复杂,更加难以管理。css预处理器在这里就能帮上忙了。SASS 让你使用在css中不存在的特性,譬如变量、嵌套、mixins(混入),继承和一些其他好的特性,这些新特性会让你写css会更有趣。

了解变量

想想如果使用一个变量存储信息然后在样式表中反复重用该变量,可以存储颜色、字体大小和任何其他你能想到的CSS值。SASS使用$来声明变量。

当SASS编译处理后, 它会使用我们定义的 $font-stack 和 $primary-color 两个值然后输出正常的CSS。当我们需要改值的时候这会非常方便,我们只需要改一处地方而不需要到处搜索该值。

编译前代码:

$font-stack:    Helvetica, sans-serif;
$primary-color: #333; body {
font: 100% $font-stack;
color: $primary-color;
}

编译后代码:

body {
font: 100% Helvetica, sans-serif;
color: #333;
}

了解嵌套

css有时候会有过度的嵌套和层级关系。譬如:

nav ul {  margin: 0;  padding: 0;  list-style: none;}nav li {  display: inline-block;}nav a {  display: block;  padding: 6px 12px;  text-decoration: none;}

如果我们只写一个nav该多好,而SASS赋予了我们这样的权利,SASS处理器会帮助编译成上面的样式

编译前代码:

nav {
ul {
margin: 0;
padding: 0;
list-style: none;
} li { display: inline-block; } a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}

编译后代码

nav ul {
margin: 0;
padding: 0;
list-style: none;
} nav li {
display: inline-block;
} nav a {
display: block;
padding: 6px 12px;
text-decoration: none;
}

了解局部模块

scss文件名如果命名成斜杠开头如_partial.scss,那么这个文件不会被编译处理,但是你可以通过@import partial 来导入该模块。

这样就可以大大简化和方便管理CSS代码。

了解导入(Import)

导入这个命令可以让你的css划分成更小的部分,更容易管理。在css中如果使用@import命令会导致 增加http请求,并且这个导入的css会在页面所有内容加载完成后才应用到页面上。而SASS的Import与CSS中的不同,它不会增加额外的请求, 被导入和导入的文件最后会合并成一个css文件,例如我们将_reset.scss导入到base.scss

编译前代码:

// _reset.scss

html,
body,
ul,
ol {
margin: 0;
padding: 0;
}
/* base.scss */

@import 'reset';

body {
font: 100% Helvetica, sans-serif;
background-color: #efefef;
}

编译后代码:

html, body, ul, ol {
margin: 0;
padding: 0;
} body {
font: 100% Helvetica, sans-serif;
background-color: #efefef;
}

了解Mixins

有些CSS写起来是相当冗长乏味的,特别是CSS3的一些浏览器兼容的前缀,mixin让你事先声明一组重复使用的CSS,你甚至可以传递变量给这组CSS
编译前代码:

@mixin border-radius($radius) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
-ms-border-radius: $radius;
border-radius: $radius;
} .box { @include border-radius(10px); }

编译后代码:

.box {
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-ms-border-radius: 10px;
border-radius: 10px;
}

扩展/继承(Extend/Inheritance)

这是SASS的一组最重要的特性,使用@extend让你从一个选择器分享一组CSS属性,我们下面将创建一些错误消息、警告、和成功的样式。这可以避免你写过多重复的样式。

编译前代码:

.message {
border: 1px solid #ccc;
padding: 10px;
color: #333;
} .success {
@extend .message;
border-color: green;
} .error {
@extend .message;
border-color: red;
} .warning {
@extend .message;
border-color: yellow;
}

编译后代码:

.message, .success, .error, .warning {
border: 1px solid #cccccc;
padding: 10px;
color: #333;
} .success {
border-color: green;
} .error {
border-color: red;
} .warning {
border-color: yellow;
}

 运算符

在css中如果可以做运算操作就非常方便,SASS支持了一系列运算符:+, -, *, /, 和 %,下面是一个创建流式布局的例子,width 转换成百分比

编译前代码:

    .container { width: 100%; }

    article[role="main"] {
float: left;
width: 600px / 960px * 100%;
} aside[role="complimentary"] {
float: right;
width: 300px / 960px * 100%;
}

编译后代码:

    .container {
width: 100%;
} article[role="main"] {
float: left;
width: 62.5%;
} aside[role="complimentary"] {
float: right;
width: 31.25%;
}

Sass 基础和入门的更多相关文章

  1. [转]前端利器:SASS基础与Compass入门

    [转]前端利器:SASS基础与Compass入门 SASS是Syntactically Awesome Stylesheete Sass的缩写,它是css的一个开发工具,提供了很多便利和简单的语法,让 ...

  2. Sass介绍及入门教程

    Sass是什么? Sass是"Syntactically Awesome StyleSheets"的简称.那么他是什么?其实没有必要太过于纠结,只要知道他是“CSS预处理器”中的一 ...

  3. Linux基础知识入门

    [Linux基础]Linux基础知识入门及常见命令.   前言:最近刚安装了Linux系统, 所以学了一些最基本的操作, 在这里把自己总结的笔记记录在这里. 1,V8:192.168.40.10V1: ...

  4. cmd 与 bash 基础命令入门

    身为一个程序员会用命令行来进行一些简单的操作,不是显得很装逼嘛!?嘿嘿~ ヾ(>∀<) cmd 与 bash 基础命令入门       简介       CMD 基础命令          ...

  5. IM开发者的零基础通信技术入门(二):通信交换技术的百年发展史(下)

    1.系列文章引言 1.1 适合谁来阅读? 本系列文章尽量使用最浅显易懂的文字.图片来组织内容,力求通信技术零基础的人群也能看懂.但个人建议,至少稍微了解过网络通信方面的知识后再看,会更有收获.如果您大 ...

  6. IM开发者的零基础通信技术入门(一):通信交换技术的百年发展史(上)

    [来源申明]本文原文来自:微信公众号“鲜枣课堂”,官方网站:xzclass.com,原题为:<通信交换的百年沧桑(上)>,本文引用时已征得原作者同意.为了更好的内容呈现,即时通讯网在收录时 ...

  7. 序言 - PHP零基础快速入门

    我为什么要写<PHP零基础快速入门>? 原因: PHP 真心简单,适合零基础的人快速入门掌握,身边的人学习一两周上手开发的比比皆是: 市面上的文章或书籍对初学者并不友好,多半枯燥乏味,我相 ...

  8. Java基础语法入门01

    Java基础语法入门01 学习java你要先进行去了解JDK,JRE,JVM JDK Java开发工具包 JRE Java语言开发的运行环境 JVM Java虚拟机,用于Java语言的跨平台所用. 当 ...

  9. 贝叶斯公式由浅入深大讲解—AI基础算法入门

    1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大.而且概率虽然未知,但最起码是一个确定 ...

随机推荐

  1. css3进行截取

    在css3出现之前,一般采用substring来进行截取,现在 不用js,纯css3也能进行截取了: text-overflow:clip | ellipsis 1.clip: 要在一定的高度内,配合 ...

  2. Codeforces Round #253 (Div. 1) (A, B, C)

    Codeforces Round #253 (Div. 1) 题目链接 A:给定一些牌,然后如今要提示一些牌的信息,要求提示最少,使得全部牌能够被分辨出来. 思路:一共2^10种情况,直接暴力枚举,然 ...

  3. CSS选项卡

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org ...

  4. 《深入浅出 Java Concurrency》—锁紧机构(一)Lock与ReentrantLock

    转会:http://www.blogjava.net/xylz/archive/2010/07/05/325274.html 前面的章节主要谈谈原子操作,至于与原子操作一些相关的问题或者说陷阱就放到最 ...

  5. windows下php开发环境的搭建

    环境搭建软件组合为:Apache2.2.9+mysql5.2.32+php5.2.6  下载地址如下 http://download.csdn.net/detail/xttxqjfg/5670455 ...

  6. PocketSphinx语音识别系统语言模型的训练和声学模型的改进

    PocketSphinx语音识别系统语言模型的训练和声学模型的改进 zouxy09@qq.com http://blog.csdn.net/zouxy09 关于语音识别的基础知识和sphinx的知识, ...

  7. 非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)

    1.HDFS简介 HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开 ...

  8. Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作

    一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...

  9. Android 省市县 三级联动(android-wheel的使用)

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个 ...

  10. 交叉编译libxml2

    请勿用于商业用途,转载请注明出处! xml的优势就是可以方便的管理配置项,libxml2是c语言实现的xml管理库,眼下项目须要ARM下的版本号,libxml2编译过程例如以下: 0.准备工作 下载地 ...