Sass基础


Sass is the most mature, stable, and powerful professional grade CSS extension language in the world.


0. 介绍

  • CSS扩展语言
  • 完全兼容CSS
  • 简单 稳定 可维护
  • 两种语法(sass & scss)
    //文件后缀名为sass的语法
    body
      background: #fff
      font-size: 12px
    div
      background: #000
    
    
    //文件后缀名为scss的语法  
    body {
     background: #fff;
     font-size: 12px;
    }
    div {
     background: #000;
    } 

1. 变量(Variables)

Sass中允许使用变量, 所有变量以 $ 开头。

    $width: 5rem;
        
    #main {
      width: $width;
    }

可以使用 #{ } 插入变量。

    $name: ".main";
    
    div #{name} {
      color: #ffffff;
    }   

支持7种数据类型

  • Number: 1.2, 13, 10px
  • String: “foo”, ‘bar’, baz
  • Color: blue, #04a3f9, rgba(255, 0, 0, 0.5))
  • Boolean: true, false
  • Null: null
  • Lists:
    $font-list: 'Raleway','Dosis','Lato';
  • Maps:
    $style: (
    'color': tomato,
    'background': black
    );

2. 嵌套规则(Nested rules)

Sass允许选择器之间嵌套。符号 & 用来引用父元素。

    #main {
      width: 5rem;
      height: 5rem;
        
      div {
        font-size: 1rem;
      }
        
      div p {
        font-size: 1rem;
      }
        
      div, p {
        font-size: 1rem;
      }
        
      &.active {
        width: 10rem;
        height: 10rem;
      }
        
      .active &{
        width: 10rem;
        height: 10rem;
      }
    }

编译后结果:

    #main {
      width: 5rem;
      height: 5rem;
    }
    
    #main div {
      font-size: 1rem;
    }
    
    #main div p {
      font-size: 1rem;
    }
    
    #main div, #main p {
      font-size: 1rem;
    }
    
    #main.active {
      width: 10rem;
      height: 10rem;
    }
    
    .active #main {
      width: 10rem;
      height: 10rem;
    }

Sass还支持属性嵌套

    nav {
      border: 1px solid #ccc;
      border-left: 0px;
      border-right: 0px;
    }

编译后结果:

    nav {
      border: 1px solid #ccc {
        left: 0px;
        right: 0px;
      }
    }

3. @import

Sass允许import外部文件,使用 @import 命令。

导入文件的后缀若为 .sass 或 .scss, import时可以不加文件后缀。

    @import "index.scss";
    @import "index";

可以在一个 @import 后可以导入多个文件

    @import "index1.scss", "index2.scss";

4. @extend

Sass允许选择器之间相互继承,使用 @extend 命令。

    #first {
        font-size: 12px;
    }
    
    #second {
        @extend #first;
        color: #ffffff;
    }       

编译后结果:

    #first, #second {
      font-size: 12px;
    }

    #second {
      color: #ffffff;
    }

5. @mixin

Sass可以实现样式复用,使用 @mixin@include

    @mixin red-text {
      color: #ff0000;
    }
    
    .page-title1 {
      @include red-text;
      padding: 4px;
      margin-top: 10px;
    }
    
    .page-title2 {
      @include red-text;
      padding: 4px;
      font-size: 20px;
    }

@mixin 支持参数传递

    @mixin button($width, $radius: 5px) {
      width: $width;
      border-radius: $radius;
    }
    
    . button1 { 
      @include button(5px, 10px)
    }

    . button2 { 
      @include button(5px)
    }

编译后结果:

    .button1 {
      width: 5px;
      border-radius: 10px;
    }

    .button2 {
      width: 5px;
      border-radius: 5px;
    }

@mixin支持传递内容,使用 @content

    @mixin mediaMax($w) {
      @media screen and (max-width: $w) {
        @content;
      }
    }
    
    .hidden-ipad {
      @include mediaMax(1024px) {
        display: none;
      }
    }

6. 函数

Sass提供了一系列的函数功能,主要有:

  • 颜色函数

    • lighten($color,$amount):通过改变颜色的亮度值,让颜色变亮
    • darken($color,$amount):通过改变颜色的亮度值,让颜色变暗
    • alpha($color) /opacity($color):获取颜色透明度值
    • rgba($color, $alpha):改变颜色的透明度值
  • 字符串函数

    • unquote($string):删除字符串中的引号
    • quote($string):给字符串添加引号
  • 数字函数

    • percentage($value):将数字转换成百分比
    • round($value):四舍五入
    • ceil($value):向上取整
    • floor($value):向下取整
    • abs($value):返回绝对值
    • min($numbers…):找出最小值
    • max($numbers…):找出最大值
  • 列表函数
    • length($list):返回列表长度
    • join($list1, $list2, [$separator]):将两个列表给连成一个列表
    • append($list1, $val, [$separator]):将某个值放在列表的最后
    • zip($lists…):将多个列表合成一个多维列表
    • index($list, $value):返回某一个值在列表中的位置

......

  • 自定义函数
    @function calculateNumber($number){
        @return $number + 1;
    }   

7. 资料

  1. 阮一峰:<a href="http://www.ruanyifeng.com/blog/2012/06/sass.html">http://www.ruanyifeng.com/blog/2012/06/sass.html</a>
  2. Sass中文:<a href="http://www.sasschina.com/guide/">http://www.sasschina.com/guide/</a>
  3. SassMeister: Sass转换器 <a href="http://www.sassmeister.com/">http://www.sassmeister.com/</a>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 1、SCSS 是 Sass 的新语法格式,从外形上来判断他和 CSS 长得几乎是一模一样,代码都包裹在一对大括号里...
    夜幕小草阅读 1,698评论 2 10
  • 本文简单的介绍SASS预处理语言,更多的应用请参考官方文档 一、什么是SASS 二、为什么使用SASS 三、安装S...
    CharlesDarwin阅读 416评论 0 0
  • 一、相关网站地址 Sass官网:http://sass-lang.com/;Sass中文网:https://www...
    夏晶晶绿阅读 836评论 0 0
  • 基础 声明变量 普通变量 默认变量 变量覆盖:只需要在默认变量之前重新声明下变量即可 变量的调用 局部变量和全局变...
    Jill1231阅读 1,267评论 0 1
  • -------------------------一、控制指令--------------------------...
    夜幕小草阅读 3,141评论 0 5