zoukankan      html  css  js  c++  java
  • [Sass]局部变量和全局变量

    [Sass]局部变量和全局变量

    Sass 中变量的作用域在过去几年已经发生了一些改变。直到最近,规则集和其他范围内声明变量的作用域才默认为本地。如果已经存在同名的全局变量,从 3.4 版本开始,Sass 已经可以正确处理作用域的概念,并通过创建一个新的局部变量来代替。

    全局变量与局部变量

    先来看一下代码例子:

    //SCSS
    $color: orange !default;//定义全局变量(在选择器、函数、混合宏...的外面定义的变量为全局变量)
    .block {
      color: $color;//调用全局变量
    }
    em {
      $color: red;//定义局部变量
      a {
        color: $color;//调用局部变量
      }
    }
    span {
      color: $color;//调用全局变量
    }

    css 的结果:

    //CSS
    .block {
      color: orange;
    }
    em a {
      color: red;
    }
    span {
      color: orange;
    }

    上面的示例演示可以得知,在元素内部定义的变量不会影响其他元素。如此可以简单的理解成,全局变量就是定义在元素外面的变量,如下代码:

    $color:orange !default;

    $color 就是一个全局变量,而定义在元素内部的变量,比如 $color:red; 是一个局部变量

    除此之外,Sass 现在还提供一个 !global 参数。!global 和 !default 对于定义变量都是很有帮助的。

    全局变量的影子

    当在局部范围(选择器内、函数内、混合宏内...)声明一个已经存在于全局范围内的变量时,局部变量就成为了全局变量的影子。基本上,局部变量只会在局部范围内覆盖全局变量

    上面例子中的 em 选择器内的变量 $color 就是一个全局变量的影子。

    //SCSS
    $color: orange !default;//定义全局变量
    .block {
      color: $color;//调用全局变量
    }
    em {
      $color: red;//定义局部变量(全局变量 $color 的影子)
      a {
        color: $color;//调用局部变量
      }
    }

    什么时候声明变量?

    我的建议,创建变量只适用于感觉确有必要的情况下。不要为了某些骇客行为而声明新变量,这丝毫没有作用。只有满足所有下述标准时方可创建新变量:

    1. 该值至少重复出现了两次;
    2. 该值至少可能会被更新一次;
    3. 该值所有的表现都与变量有关(非巧合)。

    基本上,没有理由声明一个永远不需要更新或者只在单一地方使用变量。

  • 相关阅读:
    扩展Dijkstra
    CodeForces 1396E. Distance Matching
    大联盟2
    整式乘除法
    美国数学会众多教授推荐的本科&研究生代数几何经典书籍教材清单
    算法题——立方体的体对角线穿过多少个正方体?
    导数练习题
    导数压轴题
    集合
    著名数学家Ky Fan的故事
  • 原文地址:https://www.cnblogs.com/zhn0823/p/6151677.html
Copyright © 2011-2022 走看看