初识Sass

作者: Danile_1226 | 来源:发表于2019-01-15 19:13 被阅读50次

    Sass 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了变量 (variables)、嵌套 (nested rules)、混合 (mixins)、导入 (inline imports) 等高级功能,这些拓展令 CSS 更加强大与优雅。使用 Sass 以及 Sass 的样式库(如 Compass)有助于更好地组织管理样式文件,以及更高效地开发项目。

    1. 特色功能 (Features)

    • 完全兼容 CSS3
    • 在 CSS 基础上增加变量、嵌套 (nesting)、混合 (mixins) 等功能
    • 通过函数进行颜色值与属性值的运算
    • 提供控制指令 (control directives)等高级功能
    • 自定义输出格式

    2.CSS 功能拓展 (CSS Extensions)

    2.1. 嵌套规则 (Nested Rules)

    #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; }
    

    2.2. 父选择器 & (Referencing Parent Selectors: &)

    在嵌套 CSS 规则时,有时也需要直接使用嵌套外层的父选择器,例如,当给某个元素设定 hover 样式时,或者当 body 元素有某个 classname 时,可以用 & 代表嵌套规则外层的父选择器。

    a {
      font-weight: bold;
      text-decoration: none;
      &:hover { text-decoration: underline; }
      body.firefox & { font-weight: normal; }
    }
    

    2.3. 属性嵌套 (Nested Properties)

    有些 CSS 属性遵循相同的命名空间 (namespace),比如 font-family, font-size, font-weight 都以 font 作为属性的命名空间。为了便于管理这样的属性,同时也为了避免了重复输入,Sass 允许将属性嵌套在命名空间中,例如:

    .funky {
      font: {
        family: fantasy;
        size: 30em;
        weight: bold;
      }
    }
    

    3.SassScript

    在 CSS 属性的基础上 Sass 提供了一些名为 SassScript 的新功能。 SassScript 可作用于任何属性,允许属性使用变量、算数运算等额外功能。

    通过 interpolation,SassScript 甚至可以生成选择器或属性名,这一点对编写 mixin 有很大帮助。

    3.1. 变量 $ (Variables: $)

    SassScript 最普遍的用法就是变量,变量以美元符号开头,赋值方法与 CSS 属性的写法一样:

    $width: 5em;
    

    直接使用即调用变量:

    #main {
      width: $width;
    }
    

    变量支持块级作用域,嵌套规则内定义的变量只能在嵌套规则内使用(局部变量),不在嵌套规则内定义的变量则可在任何地方使用(全局变量)。将局部变量转换为全局变量可以添加 !global 声明:

    #main {
      $width: 5em !global;
      width: $width;
    }
    
    #sidebar {
      width: $width;
    }
    

    相关文章

      网友评论

        本文标题:初识Sass

        本文链接:https://www.haomeiwen.com/subject/ttoydqtx.html