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. Eclipse中的SVN的冲突解决方案详解

    版本冲突原因: 假设A.B两个用户都在版本号为100的时候,更新了kingtuns.txt这个文件,A用户在修改完成之后提交kingtuns.txt到服务器,这个时候提交成功,这个时候kingtuns ...

  2. python版本wifi共享工具

    原先不知道win7系统也可以当作无线路由器,既然知道了这个东西那么就搞搞了 使用python写的一个wifi共享工具,还不够完善,有些功能还没做(说明:internet共享连接需要手动设置)..... ...

  3. win7提示“ipconfig不是内部或外部命令”

    进入windows环境变量设置->系统变量,找到path,添加C:\Windows\SysWOW64,或者c:\windows\system32

  4. cocos2d 创建一个黑白纹理

    @interface myGrayTexture : CCTexture2D // @param exposure 曝光 +(id) textureWithFile:(NSString*) file ...

  5. SQL Server :理解数据记录结构

    原文:SQL Server :理解数据记录结构 在SQL Server :理解数据页结构我们提到每条记录都有7 bytes的系统行开销,那这个7 bytes行开销到底是一个什么样的结构,我们一起来看下 ...

  6. WPF DataGrid_SelectChanged获取单元内容

    private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)        {          ...

  7. 记一个Oracle存储过程错误

    下面一个存储过程是创建一个job,在5秒后更新一个表: create or replace PROCEDURE P_TEST AS jobno number; BEGIN dbms_job.submi ...

  8. MySQL初步研究数据库

    我用的是环境Win7.开始学习PHP和MySQL,而买了这<Head First PHP & MySQL>,从能Head First Labs官网获得HeadFirst系列书籍的相 ...

  9. iOS相机去黑框

    自己定义相机的时候,调用系统的相机,因为相机的分辨率,会出现短小的矩形框,总会出现黑色边框,例如以下图: 假设想实现全屏相机的话,这样做就能够了: CALayer *viewLayer = self. ...

  10. 探索Android该Parcel机制(上)

    一.先从Serialize说起 我们都知道JAVA中的Serialize机制,译成串行化.序列化……,其作用是能将数据对象存入字节流其中,在须要时又一次生成对象. 主要应用是利用外部存储设备保存对象状 ...