sass学习笔记

sass学习笔记

  • Sass 允许将一套 CSS 样式嵌套进另一套样式中,内层的样式将它外层的选择器作为父选择器

    
    #main p {
    
        color: #00ff00;
        width: 97%;
    
        .redbox {
            background-color: #ff0000;
            color: #000000;
        }
    }
    
    编译为
    
    
    #main p {
    
        color: #00ff00;
        width: 97%; 
    }
    
    #main p .redbox {
    
        background-color: #ff0000;
        color: #000000; 
    }
    • 父选择器 &: 代表嵌套规则外层的父选择器

      a {
          font-weight: bold;
          text-decoration: none;
          &:hover { text-decoration: underline; }
          body.firefox & { font-weight: normal; }
      }
      
      编译为
      
      a {
          font-weight: bold;
          text-decoration: none; 
      }
      a:hover {
          text-decoration: underline; 
      }
      body.firefox a {
          font-weight: normal; 
      }
    • 属性嵌套: CSS 属性遵循相同的命名空间 (namespace),比如 font-family, font-size, font-weight 都以 font 作为属性的命名空间。为了便于管理这样的属性,同时也为了避免了重复输入,Sass 允许将属性嵌套在命名空间中

      .funky {
          font: {
              family: fantasy;
              size: 30em;
              weight: bold;
          }
      }
      
      编译为:  
      
      .funky {
          font-family: fantasy;
          font-size: 30em;
          font-weight: bold; 
      }
    • 注释: Sass 支持标准的 CSS 多行注释 /* */,以及单行注释 //,前者会 被完整输出到编译后的 CSS 文件中,而后者则不会

    • 变量 $:
      变量支持块级作用域,嵌套规则内定义的变量只能在嵌套规则内使用(局部变量),不在嵌套规则内定义的变量则可在任何地方使用(全局变量)。将局部变量转换为全局变量可以添加 !global 声明。
      可以在变量的结尾添加 !default 给一个未通过 !default 声明赋值的变量赋值,此时,如果变量已经被赋值,不会再被重新赋值,但是如果变量还没有被赋值,则会被赋予新的值。

      $width: 5em;
      
      直接使用即调用变量:
      
      
      #main {
      
          width: $width;
      }
    • 数据类型: 支持 6 种主要的数据类型

      数字,1, 2, 13, 10px
      字符串,有引号字符串与无引号字符串,"foo", 'bar', baz
      颜色,blue, #04a3f9, rgba(255,0,0,0.5)
      布尔型,true, false
      空值,null
      数组 (list),用空格或逗号作分隔符,1.5em 1em 0 2em, Helvetica, Arial, sans-serif
      maps, 相当于 JavaScript 的 object,(key1: value1, key2: value2)
    • 运算

      1. 数字运算
      2. 颜色值运算
      3. 字符串运算
      4. 布尔运算
    • 函数

    • 插值语句 #{}: 通过 #{} 插值语句可以在选择器或属性名中使用变量

      $name: foo;
      $attr: border;
      p.#{$name} {
          #{$attr}-color: blue;
      }
      编译为
      
      p.foo {
          border-color: blue; 
      }
    • @extend 引用另一个类的样式

      .error {
      border: 1px #f00;
          background-color: #fdd;
      }
      .seriousError {
          border-width: 3px;
      }
      
      -->
      
      .error {
          border: 1px #f00;
          background-color: #fdd;
      }
      .seriousError {
          @extend .error;
          border-width: 3px;
      }
    • 控制指令: @if @for @each @while

    • 混合指令 (Mixin Directives)
      混合指令(Mixin)用于定义可重复使用的样式,避免了使用无语意的 class,比如 .float-left。混合指令可以包含所有的 CSS 规则,绝大部分 Sass 规则,甚至通过参数功能引入变量,输出多样化的样式。

      1. 定义混合指令 @mixin

        @mixin large-text {
            font: {
                family: Arial;
                size: 20px;
                weight: bold;
            }
            color: #ff0000;
        }
      2. 引用混合样式 @include

        .page-title {
            @include large-text;
            padding: 4px;
            margin-top: 10px;
        }
      3. 参数

        @mixin sexy-border($color, $width) {
        border: {
            color: $color;
            width: $width;
            style: dashed;
        }
        }
        p { @include sexy-border(blue, 1in); }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值