zoukankan      html  css  js  c++  java
  • SASS的使用

    简要介绍下SASS

    SASS是最早的CSS预处理语言,有比LESS更为强大的功能,不过其一开始的缩进式语法并不能为大众接受,不过由于强大的功能,还是有很多开发者选择了SASS

    SASS是采用了Ruby语言编写的一款CSS预处理语言,(不用担心,我们并不用学习Ruby也可以使用全部功能)诞生于2007年,最初是为了配合HAML(缩进式HTML预编译器)而设计

    缩进式风格可以缩减代码量,强制代码风格,但不为大多数程序员接受,而且无法兼容已有的CSS代码,这也是SASS出现早,但是没有LESS普及的原因之一

    但是SASS三代开始,SASS开始迎合程序员的使用习惯,放弃缩进式,以及完全兼容普通的CSS代码,这一代的SASS也称之为SCSS
    想多LESS,SASS功能更加强大

    sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号;另一种就是我们这里使用的scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号

      

    语法区别:
    //文件后缀名为sass的语法
    body  background: #eee font-size:12px 
    p background: #0982c1
    
    //文件后缀名为scss的语法  
    body {
      background: #eee;
      font-size:12px;
    }
    p{
      background: #0982c1;
    } 

      

    基本使用:   
    变量的使用这里使用$号开头
    (这一块和LESS区别不大,所以做个简单的实验)
      <div id="main">
        </div>
    
    main.scss---注意后缀名
    $color:red;
    div{
      background-color: $color;
      height: 200px;
       200px;
    }
    计算,和less一样
    $number:10px;
    $heidth:$number+190;
    $$number*20;
    
    div{
      background-color: red;
      height: $heidth;
       $width;
    }
    
    也不支持减法
    
    
    支持@import导入
    在css中
    1,@import url()机制是不同于link的,link是在加载页面前把css加载完毕,而@import url()则是读取完文件后在加载,所以会出现一开始没有css样式,闪烁一下出现样式后的页面(网速慢的情况下)。 
    2,@import 是css2里面的,所以古老的ie5不支持。 
    3,当使用javascript控制dom去改变样式的时候,只能使用link标签,因为@import不是dom可以控制的。
    
    @import先加载HTML加载CSS
    link先加载CSS加载HTML

      

    @extend
    一个非常厉害的功能:继承
    很多编程语言中都有继承这个概念(非常酷的概念可以大大节约代码量)
    @extend
    /*div标准配置---也可以称之为父类*/
    #div{
       200px;
      height: 200px;
    }
    
    #main{
    
      @extend #div;
      background-color: red;
    }
    #message{
      @extend #div;
      background-color: gray;
    }
    
    
    编译之后:
    /*div标准配置---也可以称之为父类*/
    #div, #main, #message {
       200px;
      height: 200px; }
    
    #main {
      background-color: red; }
    
    #message {
      background-color: gray; }

      

    @mixin混入,之前less学过了不过有一定的区别
    
    @mixin  div{——注意这里声明的部位和之前有点区别
       200px;
      height: 200px;
    }
    
    #main{
     @include div;——引用也有区别,这样用关键字是比less麻烦了还是更清晰呢
    }
    #message{
    @include div;
    }

      

    嵌套——这一块和less没什么区别
        <div id="main">
            <p>文章类容</p>
            <div id="message">hello world</div>
        </div>
    
    #main{
       200px;
      height: 200px;
      background-color: grey;
      p{color: red;font-size: 14px}
      #message{
         50px;
        height: 50px;
        background-color: blanchedalmond;
      }
    }

      

    @function
    方法的编写-和js函数一样,选择使用
    实验:
    页面有三个div被一个大div包含,要求用sass编写
     <div id="main">
           <div class="one"></div>
           <div class="two"></div>
           <div class="three"></div>
        </div>
    
    @function setSize($size){
      @return $size
    }
    @mixin div-init{
      position: absolute;
    }
    $size:200px;
    #main{
      height: setSize($size)*2;
       setSize($size)*2;
      background-color: grey;
      @include div-init;
      .one{
        height: setSize($size);
         setSize($size);
        background-color: red;
        @include div-init;
      }
      .two{
        height: setSize($size)-100;
         setSize($size)-100;
        background-color: blue;
        @include div-init;
      }
      .three{
        height: setSize($size)/2;
         setSize($size)/2;
        background-color: yellow;
        @include div-init;
      }
    }
    
    
    控制语句:
    编程语言中都有控制程序顺序语句(回顾一下程序中都有几种流程结构)
    @if @else @while
    但我没怎么用,这里省略,然后有兴趣的自己学习一下
  • 相关阅读:
    [转]我在Facebook学到的10个经验
    [转]MPlayer快捷键&参数设置>系统开销最少的影音播放器
    [转]国外程序员推荐:每个程序员都应读的书
    Linux运维:CentOS6和7的区别
    将数组中指定的前N位移动到数组的最后面
    DataReader和DataSet区别
    求数组中和最大的子数组与始末下标
    使用XPathExpression类对XML文件进行排序
    配置WebSite的IIS时遇到的问题与解决方法
    已知一个整数N,求另外一个整数M,使得M本身 + M各个位上的数 = N
  • 原文地址:https://www.cnblogs.com/bruce-gou/p/5226137.html
Copyright © 2011-2022 走看看