继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

sass初探

LEATH
关注TA
已关注
手记 454
粉丝 93
获赞 467

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

  • 变量
    sass使用$符号来标识变量,你可以把反复使用的css属性值定义成变量,然后通过变量名来引用它们,而无需重复书写这一属性值,这对于维护来说很方便,只需修改一处即可。
    sass源文件

      $highlight-color: #f90 !default;  // !default表示变量默认值
      $highlight-border: 1px solid $highlight-color;
      .selected {
        border: $highlight-border;
      }

    编译之后的css

      .selected {    border: 1px solid #f90;
      }
  • 嵌套
    sass 允许将一套css样式嵌套进另一套样式中,内层的样式将它外层的选择器作为父选择器。&代表父选择器。
    sass源文件

      #content {
        article {
          h1 {        color: #333;
          }
          p {
            margin-bottom: 1.4em;
          }
        }
        aside {
          background-color: #eee;
        }
    
      article a {    color: blue;
        &:hover {      color: red;
        }
      }

    编译之后的css

      #content article h1 {    color: #333;
      }  #content article p {    margin-bottom: 1.4em;
      }  #content aside {    background-color: #eee;
      }  article a {    color: blue;
      }  article a:hover {    color: red;
      }
  • 混合器
    sass的混合器实现大段样式的重用,混合器使用@mixin标识符定义。然后就可以在你的样式表中通过@include来使用这个混合器,放在你希望的任何地方。
    sass源文件

      @mixin rounded-corners {
        -moz-border-radius: 5px;
        -webkit-border-radius: 5px;
        border-radius: 5px;
      }
      notice {
        background-color: green;
        border: 2px solid #00aa00;    @include rounded-corners;
      }

    编译之后的css

      notice {    background-color: green;    border: 2px solid #00aa00;    -moz-border-radius: 5px;    -webkit-border-radius: 5px;    border-radius: 5px;
      }
  • 继承
    sass使用@extend来实现继承。@extend背后最基本的想法是,如果.seriousError @extend .error, 那么样式表中的任何一处.error都用.error ,.seriousError这一选择器组进行替换。
    sass源文件

      .error {
        border: 1px solid red;
        background-color: #fdd;
      }
      .error a {
        color: red;
        font-weight: 100;
      }
      .seriousError {    @extend .error;
        border-width: 3px;
      }

    编译之后的css

      .error,  .seriousError {    border: 1px solid red;    background-color: #fdd;
      }  .error a,  .seriousError a {    color: red;    font-weight: 100;
      }  .seriousError {    border-width: 3px;
      }
  • 注释

      body {
        color: #333; // 这种注释内容不会出现在生成的css文件中
        padding: 0; /* 这种注释内容会出现在生成的css文件中 */
      }

    编译之后的css

      body {    color: #333;    padding: 0;    /* 这种注释内容会出现在生成的css文件中 */
      }
  • 导入
    sass也有一个@import规则,那些专门为@import命令而编写的sass文件,并不需要生成对应的独立css文件,这样的sass文件称为局部文件。sass局部文件的文件名以下划线开头。当你@import一个局部文件时,还可以不写文件的全名,即省略文件名开头的下划线。

    //2.scss
      .center {
        text-align: center;
      }  //1.scss
      @import "2";

    编译之后的css

      .center {    text-align: center;
      }
  • 后缀
    sass 有两种后缀名文件:一种后缀名为 sass,不使用大括号和分号;另一种就是我们这里使用的 scss 文件,使用大括号和分号。建议使用后缀名为 scss 的文件。

  • 函数
    使用@function定义函数,可以含有多条语句,需要调用 @return 输出结果。建议在自定义函数前添加前缀避免命名冲突。

      @function c_pxToem($px) {
        @return $px/16px + em;
      }  .title {    width: c_pxToem(32px);
      }

    编译之后的css

      .title {    width: 2em;
      }
  • 运算

      $border: 2px;
      .title {    height: 20px + 10px;    width: 100px - 50px;
        line-height: 15 * 2px;    padding: 10px / (2);    margin: 5px + 10px/2;    border: $border/2 solid red;
      }  p:before {    content: "Foo " + Bar;
        font-family: sans- + "serif";
      }  p:after {    content: "I ate #{$border} pies!";
      }

    编译之后的css

      .title {    height: 30px;    width: 50px;    line-height: 30px;    padding: 5px;    margin: 10px;    border: 1px solid red;
      }  p:before {    content: "Foo Bar";    font-family: sans-serif;
      }  p:after {    content: "I ate 2px pies!";
      }
    • 支持数字的加减乘除、取整等运算。

    • +可用于连接字符串。

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

    • 注意:/ 被视为除法运算符号只有三种情况

  1. 如果值被圆括号包裹

  2. 如果值,或值的一部分,是变量或者函数的返回值

  3. 如果值是算数表达式的一部分



作者:tiancai啊呆
链接:https://www.jianshu.com/p/0738f2d67a18


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP