1.sass中可以使用变量

变量名以$符号开头,可包含所有可用作CSS类名的字符,包括下划线和中划线。 可见,中划线也是可以作为命名的字符,这是与很多其他语言的不同之处。变量的使用实例:
$company-blue: #1875e7;
h1#brand {
color: $company-blue;
}
#sidebar {
background-color: $company-blue;
}
这个例子中,我们定义了一个$compay-blue变量,存放了#1875e7的颜色,因此,当多处需要改变颜色的值时,只需要$compay-blue的值即可了。
 
2.使用嵌套来快速写出多层级的选择器
请看下面的一段代码:
ul.nav {float: right}
ul.nav li {float: left;}
ul.nav li a {color: #111}
ul.nav li.current {font-weight: bold;}
我们在写的层级选择器的样式时,很多父类都是重复的。如果用sass嵌套,则可以写成下面的形式使得代码变得更加的简洁:
ul.nav {
float: right;
li {
float: left;
a {
color: #111;
}
&.current {
font-weight: bold;
}
}
}
上面的&.current相当于li.current。如果将来li改成了其他的元素标签,在这个元素内的current类依然命中这里的样式。
 
3.使用混合@mixin
比如我们在写页面的总体布局时,传统css代码如下:
#header ul.nav {
float: right;
}
#header ul.nav li {
float: left;
margin-right: 10px;
}
#footer ul.nav {
margin-top: 1em;
}
#footer ul.nav li {
float: left;
margin-right: 10px;
}
我们发现,上面代码中的float:left和margin-right有两处都用到了,所以重复写了两次。如果用sass的混入来做的,则可以写成下面的形式:
@mixin horizontal-list {
li {
  float: left;
  margin-right: 10px;
}
} #header ul.nav {
  @include horizontal-list;
  float: right;
}
#footer ul.nav {
  @include horizontal-list;
  margin-top: 1em;
}
更便利的是混合器和变量的结合,这才是混合器的强大之处;也就是说,能够根据参数来决定使用的样式,从而使混合器更具可复用性。举个例子,假如你想要修改水平列表每个条目之间的间距,怎么使用混合器快速实现呢,请看下面的代码:
//混合器传参使用
@mixin horizontal-list($spacing: 10px) { //$spacing的默认值为10px,如果不传参则使用此值;
  li {
    float: left;
    margin-right: $spacing;
  }
} #header ul.nav {
  @include horizontal-list; //使用$spacing默认值,即10px;
  float: right;
}
#footer ul.nav {
  @include horizontal-list(20px); //赋予$spacing新值为20;
  margin-top: 1em;
}
 
4.使用选择器继承@extend来避免重复属性
上面的例子中,使用混合器能够在手写的样式表中有效地避免重复。但是,因为规则都混入到其他类中,所以在输出的样式表中不能完全避免重复。因为输出的CSS文件大小很重要,于是Sass引入了另一种稍微有点复杂的方式,让输出的CSS完全避免重复。选择器继承的意思就是让一个选择器能够复用另一个选择器的所有样式,但又不重复输出这些样式属性。请看下面的例子,这是一个表单错误的提示信息:
//使用继承@extend,避免重复输出
.error {
  border: 1px #f00;
  background: #fdd;
}
.error.intrusion {
  font-size: 1.2em;
  font-weight: bold;
}
.badError {
  @extend .error;
  border-width: 3px;
}
上述代码中,通过选择器继承,可以让.barError继承父类.error,也就是复用父类的所有样式。编译生成的css文件如下:
.error, .badError {
  border: 1px #f00;
  background: #fdd;
}
.error.intrusion,
.badError.intrusion {
  font-size: 1.2em;
  font-weight: bold;
}
.badError {
  border-width: 3px;
}
5.在选择器继承中使用占位选择器(类名前缀%)
在上面的例子中,同时定义了error和badError类是有意义的,因为两者都需要在HTML中使用,但有时父类并不需要在HTML中使用。于是在Sass 3.2中引入了占位选择器,它支持在使用选择器继承的同时,不编译输出HTML中并不使用的父类,如sass代码如下所示:
%button-reset {
  margin:;
  padding: .5em 1.2em;
  text-decoration: none;
  cursor: pointer;
}
.save {
  @extend %button-reset;
  color: white;
  background: #blue;
}
.delete {
  @extend %button-reset;
  color: white;
  background: red;
}
占位顾名思义,继承了%button-reset的选择器在输出的CSS中占据了%button-reset的位置,编译输出的css代码如下:
.save, .delete {
  margin:;
  padding: .5em 1.2em;
  text-decoration: none;
  cursor: pointer;
}
.save {
  color: white;
  background: #blue;
}
.delete {
  color: white;
  background: red;
}
占位选择器能把常用的样式保存到一处,且不影响任何一个类名,使你能够放心使用。当然如果一个占位选择器没有被继承,其中的样式就不会被编译到CSS当中,以减少生产环境中样式表的无用样式,使其更小。
 

Sass&Compass学习笔记(一)的更多相关文章

  1. sass,compass学习笔记总结

    最近在进行百度前端技术学院的任务,知道自己基础薄弱,可没想到弱到这种地步,同时在安装各种软件的同时遇到了各种坑,查阅了各种资料,一个个解决的时候也发现自己凌乱了.学习总结,在脑海中形成自己的学习系统才 ...

  2. sass个人学习笔记

    Materliu 在慕课的视频: http://www.imooc.com/learn/364 . http://www.imooc.com/wiki/371 sass入门:http://www.w3 ...

  3. sass的学习笔记

    sass初学入门笔记(一) 我本身是个新手,一边学sass一边记下的笔记,可能有点罗嗦,但是复习起来的话还是比较全面直观的.当然,最重要的还是去实践,实践得真理 其它 CSS 预处理器语言: CSS ...

  4. Sass和Compass学习笔记系列之Sass

    最近在慕课网学习Sass和Compass,学习链接地址:https://www.imooc.com/learn/364,现在整理笔记如下: 一.使用Sass和Compass的优点: a.使用Sass和 ...

  5. compass Sprites 雪碧图 小图片合成[Sass和compass学习笔记]

    demo 源码 地址 https://github.com/qqqzhch/webfans 什么是雪碧图? CSS雪碧 即CSS Sprites,也有人叫它CSS精灵,是一种CSS图像合并技术,该方法 ...

  6. Sass和compass 安装 和配合grunt实时显示 [Sass和compass学习笔记]

    demo 下载http://vdisk.weibo.com/s/DOlfkrAWjkF/1401192855 为什么要学习Sass和compass ?提高站独立和代码产品化的绝密武器,尤其是程序化cs ...

  7. 学习Sass 的基本语法规则[Sass和compass学习笔记]

    自从发现可编程的css语法 Sass和基于Sass的css库compass 一个给我的感觉像c# 另外一个给我的感觉像.NET Framework,一切都为了提升开发效率和降低开发大型web的门槛. ...

  8. Sass之Compass学习笔记

    compass Compass是Sass的工具库,就好像jQuery是js的库一样. sass有了compass的配合,就会更加事半功倍. Sass本身只是一个编译器,Compass在它的基础上,封装 ...

  9. compass reset和layout [Sass和compass学习笔记]

    reset 可以重置浏览器的的html的默认样式,因为各个浏览器对有些元素解析差别很大 通过重置样式可以让样式的浏览器兼容 更简单 使用方法简单 @import "compass/reset ...

随机推荐

  1. 【数据结构】通用的最小堆(最大堆)D-ary Heap

    听说有一种最小(大)堆,不限于是完全二叉树,而是完全D叉树,名为D-ary Heap(http://en.wikipedia.org/wiki/D-ary_heap).D可以是1,2,3,4,100, ...

  2. HDU 5151 Sit sit sit 区间dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5151 题解: 有n个椅子,编号为1到n. 现在有n个同学,编号为1到n,从第一个同学开始选择要坐的位 ...

  3. 【转】EXT VTYPE自定义举例

    原文地址:http://www.blogjava.net/xiaohuzi2008/archive/2012/12/08/392676.html 近日来对Ext特别感兴趣,也许是它那种OO的设计思想吸 ...

  4. 【转载】在程序中动态改变static text控件的caption值

    方法1,给STATIC控件取个名字叫IDC_STATICTITLE 然后在ClassWizard中设定一个控件变量给它叫m_statictitle 然后用m_statictitle.SetWindow ...

  5. 如何混合使用ARC和非ARC

    如果你的项目使用的非ARC模式,则为ARC模式的代码文件加入-fobjc-arc标签.如果你的项目使用的ARC模式,则为非ARC模式的代码文件加入 -fno-objc-arc标签.添加标签的方法: 1 ...

  6. 2014年03月09日攻击百度贴吧的XSS蠕虫源码

    var n=PageData.user.user_forum_list.info.length; var num=0; var config = { titles: ["\u4f60\u76 ...

  7. 如何优化C语言代码(程序员必读)

    1.选择合适的算法和数据结构 应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍.将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序 ...

  8. PHP 路径或URL操作

    echo 'documentroot:'.$_SERVER['DOCUMENT_ROOT'].'<br>'; //根目录,在apache的配置文件里定义:httpd.conf 比如:Doc ...

  9. 利用Jquery实现http长连接(LongPoll) {转}

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="JqueryAjaxLongPo ...

  10. 【五】PHP数组操作函数

    1.输出数组的结构:bool print_r(数组); $arr=array('jack','mike','tom'); print_r($arr);//Array ( [0] => jack ...