• Sass 基础和入门


              css本身很有趣,但是随着样式表变大,会越来越复杂,更加难以管理。css预处理器在这里就能帮上忙了。SASS 让你使用在css中不存在的特性,譬如变量、嵌套、mixins(混入),继承和一些其他好的特性,这些新特性会让你写css会更有趣。

    了解变量

    想想如果使用一个变量存储信息然后在样式表中反复重用该变量,可以存储颜色、字体大小和任何其他你能想到的CSS值。SASS使用$来声明变量。

    当SASS编译处理后, 它会使用我们定义的 $font-stack 和 $primary-color 两个值然后输出正常的CSS。当我们需要改值的时候这会非常方便,我们只需要改一处地方而不需要到处搜索该值。

     编译前代码:

    $font-stack:    Helvetica, sans-serif;
    $primary-color: #333;
    
    body {
      font: 100% $font-stack;
      color: $primary-color;
    }
    

    编译后代码:

    body {
      font: 100% Helvetica, sans-serif;
      color: #333;
    }
    

    了解嵌套

    css有时候会有过度的嵌套和层级关系。譬如:

    nav ul {  margin: 0;  padding: 0;  list-style: none;}nav li {  display: inline-block;}nav a {  display: block;  padding: 6px 12px;  text-decoration: none;}

    如果我们只写一个nav该多好,而SASS赋予了我们这样的权利,SASS处理器会帮助编译成上面的样式

    编译前代码:

    nav {
      ul {
        margin: 0;
        padding: 0;
        list-style: none;
      }
    
      li { display: inline-block; }
    
      a {
        display: block;
        padding: 6px 12px;
        text-decoration: none;
      }
    }
    

     编译后代码

    nav ul {
      margin: 0;
      padding: 0;
      list-style: none;
    }
    
    nav li {
      display: inline-block;
    }
    
    nav a {
      display: block;
      padding: 6px 12px;
      text-decoration: none;
    }
    

    了解局部模块

    scss文件名如果命名成斜杠开头如_partial.scss,那么这个文件不会被编译处理,但是你可以通过@import partial 来导入该模块。

    这样就可以大大简化和方便管理CSS代码。

    了解导入(Import)

    导入这个命令可以让你的css划分成更小的部分,更容易管理。在css中如果使用@import命令会导致 增加http请求,并且这个导入的css会在页面所有内容加载完成后才应用到页面上。而SASS的Import与CSS中的不同,它不会增加额外的请求, 被导入和导入的文件最后会合并成一个css文件,例如我们将_reset.scss导入到base.scss

    编译前代码:

    // _reset.scss
    
    html,
    body,
    ul,
    ol {
       margin: 0;
      padding: 0;
    }
    
    /* base.scss */
    
    @import 'reset';
    
    body {
      font: 100% Helvetica, sans-serif;
      background-color: #efefef;
    }
    

    编译后代码:

    html, body, ul, ol {
      margin: 0;
      padding: 0;
    }
    
    body {
      font: 100% Helvetica, sans-serif;
      background-color: #efefef;
    }
    

    了解Mixins

    有些CSS写起来是相当冗长乏味的,特别是CSS3的一些浏览器兼容的前缀,mixin让你事先声明一组重复使用的CSS,你甚至可以传递变量给这组CSS
    编译前代码:

    @mixin border-radius($radius) {
      -webkit-border-radius: $radius;
         -moz-border-radius: $radius;
          -ms-border-radius: $radius;
              border-radius: $radius;
    }
    
    .box { @include border-radius(10px); }
    

     编译后代码:

    .box {
      -webkit-border-radius: 10px;
      -moz-border-radius: 10px;
      -ms-border-radius: 10px;
      border-radius: 10px;
    }
    

    扩展/继承(Extend/Inheritance)

    这是SASS的一组最重要的特性,使用@extend让你从一个选择器分享一组CSS属性,我们下面将创建一些错误消息、警告、和成功的样式。这可以避免你写过多重复的样式。

    编译前代码:

    .message {
      border: 1px solid #ccc;
      padding: 10px;
      color: #333;
    }
    
    .success {
      @extend .message;
      border-color: green;
    }
    
    .error {
      @extend .message;
      border-color: red;
    }
    
    .warning {
      @extend .message;
      border-color: yellow;
    }
    

     编译后代码:

    .message, .success, .error, .warning {
      border: 1px solid #cccccc;
      padding: 10px;
      color: #333;
    }
    
    .success {
      border-color: green;
    }
    
    .error {
      border-color: red;
    }
    
    .warning {
      border-color: yellow;
    }
    

     运算符

    在css中如果可以做运算操作就非常方便,SASS支持了一系列运算符:+, -, *, /, 和 %,下面是一个创建流式布局的例子,width 转换成百分比

    编译前代码:

        .container {  100%; }
    
        article[role="main"] {
          float: left;
           600px / 960px * 100%;
        }
    
        aside[role="complimentary"] {
          float: right;
           300px / 960px * 100%;
        }
    
    
    

     编译后代码:

        .container {
           100%;
        }
    
        article[role="main"] {
          float: left;
           62.5%;
        }
    
        aside[role="complimentary"] {
          float: right;
           31.25%;
        }
    
  • 相关阅读:
    锋利的Jquery 读书有感(三)
    锋利的Jquery 读书有感(二)
    锋利的Jquery 读书有感
    读head first servlet and jsp有感(3)(转)
    读head first servlet and jsp有感(2)(转)
    读head first servlet and jsp有感(1)(转)
    JSTL标签与EL表达式之间的微妙关系
    JDBC学习
    Mysql学习(二)
    JAVA相关问题整理(四)
  • 原文地址:https://www.cnblogs.com/liuminghai/p/4401887.html
Copyright © 2020-2023  润新知