zoukankan      html  css  js  c++  java
  • Scss

      原文链接:scss 教程

      手头上疯狂在用 scss,虽然可以在里面写原生的 css, 但是为了保持风格的一致性,还是滚去看了看 scss 文档。

    一、变量

      变量的引入是 scss 的一个核心特性,变量用来存储需要在CSS中复用的信息,例如颜色和字体。SASS通过$符号去声明一个变量。

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

      编译后,变量的值会替换所有他们的位置。

    二、嵌套

      SASS允许开发人员以嵌套的方式使用CSS,但是过度的使用嵌套会让产生的CSS难以维护,因此要慎用,下面的例子表达了一个典型的网站导航样式:

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

    三、引入

      SASS能够将代码分割为多个片段,并以underscore风格的下划线作为其命名前缀(_partial.scss),SASS会通过这些下划线来辨别哪些文件是SASS片段,并且不让片段内容直接生成为CSS文件,从而只是在使用@import指令的位置被导入。

      CSS原生的@import会通过额外的HTTP请求获取引入的样式片段,而SASS的@import则会直接将这些引入的片段合并至当前CSS文件,并且不会产生新的HTTP请求。

    // _reset.scss
    
    html, body, ul, ol {
      margin:  0;
      padding: 0;
    }
    
    // base.scss
    
    @import '../xx/xx/_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; }
    

    四、混合

      混合(Mixin)用来分组那些需要在页面中复用的CSS声明,开发人员可以通过向Mixin传递变量参数来让代码更加灵活,该特性在添加浏览器兼容性前缀的时候非常有用,SASS目前使用@mixin name指令来进行混合操作。

    // 定义
    @mixin border-radius($radius) {
        border-radius: $radius;
        -ms-border-radius: $radius;
        -moz-border-radius: $radius;
        -webkit-border-radius: $radius;
    };
    
    // 在需要的地方事由 @include 来引入并传值
    #father {
        @include border-radius(10px);
         60%;
        margin: 0 auto;
    }
    

    上面的代码建立了一个名为 border-radius 的 Mixin,并传递了一个变量 $radius 作为参数,然后在后续代码中通过 @include border-radius(10px) 使用该Mixin,最终编译的结果如下:

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

    五、继承

      继承是SASS中非常重要的一个特性,可以通过@extend指令在选择器之间复用CSS属性,并且不会产生冗余的代码,下面例子将会通过SASS提供的继承机制建立一系列样式:

    // 这段代码不会被输出到最终生成的CSS文件,因为它没有被任何代码所继承。
    %other-styles {
      display: flex;
      flex-wrap: wrap;
    }
    
    // 下面代码会正常输出到生成的CSS文件,因为它被其接下来的代码所继承。
    %message-common {
      border: 1px solid #ccc;
      padding: 10px;
      color: #333;
    }
    
    .message {
      @extend %message-common;
    }
    
    .success {
      @extend %message-common;
      border-color: green;
    }
    
    .error {
      @extend %message-common;
      border-color: red;
    }
    
    .warning {
      @extend %message-common;
      border-color: yellow;
    }
    

     上面代码将.message中的CSS属性应用到了.success、.error、.warning上面,魔法将会发生在最终生成的CSS当中。这种方式能够避免在HTML元素上书写多个class选择器,最终生成的CSS样式是下面这样的:

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

    五、操作符

      SASS提供了标准的算术运算符,例如+、-、*、/、%。在接下来的例子里,我们尝试在aside和article选择器当中对宽度进行简单的计算。

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

       上面代码最终编译后的样子是:

    .container {
       100%; 
    }
    
    article[role="main"] {
      float: left;
       62.5%; 
    }
    
    aside[role="complementary"] {
      float: right;
       31.25%; 
    }
    

    六、引用父级选择器"&"

      Scss使用"&"关键字在CSS规则中引用父级选择器,例如在嵌套使用伪类选择器的场景下:

    /*===== SCSS =====*/
    a {
      font-weight: bold;
      text-decoration: none;
      &:hover { text-decoration: underline; }
      body.firefox & { font-weight: normal; }
    }
    
    /*===== CSS =====*/
    a {
      font-weight: bold;
      text-decoration: none; 
    }
    
    a:hover {
      text-decoration: underline; 
    }
    
    body.firefox a {
      font-weight: normal; 
    }
    

       无论CSS规则嵌套的深度怎样,关键字"&"都会使用父级选择器级联替换全部其出现的位置:

    /*===== SCSS =====*/
    #main {
      color: black;
      a {
        font-weight: bold;
        &:hover { color: red; }
      }
    }
    
    /*===== CSS =====*/
    #main {
      color: black; 
    }
    
    #main a {
      font-weight: bold; 
    }
    #main a:hover {
      color: red; 
    }
    

       "&"必须出现在复合选择器开头的位置,后面再连接自定义的后缀,例如:

    /*===== SCSS =====*/
    #main {
      color: black;
      &-sidebar { border: 1px solid; }
    }
    
    /*===== CSS =====*/
    #main {
      color: black; 
    }
    
    #main-sidebar {
        border: 1px solid; 
    }
    
  • 相关阅读:
    2.WSDL 文档
    SQL SERVER取分组数据第一条:查出每个班级的成绩第一名
    生成随机字符串
    js返回上一页并刷新的几种方法
    SQL 单表查询多个计算的值
    SQL 从字符串中提取数字
    SQL 视图和表
    WebSrevice (2)
    WebSrevice (1)
    CSS中如何选择ul下li的奇数、偶数行
  • 原文地址:https://www.cnblogs.com/cc-freiheit/p/10138249.html
Copyright © 2011-2022 走看看