scss Sass:创建新范围和实例变量/方法#sass

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scss Sass:创建新范围和实例变量/方法#sass相关的知识,希望对你有一定的参考价值。

.instance {
  property: 1;
}
// ----
// Sass (v3.4.4)
// Compass (v1.0.1)
// ----

// Sass: Creating new scope & instance variable/method in Sass
//
// Other ideas: https://github.com/whizark/xass#ideas

// This is pseudo code

// The FILO stack to keep scope & the property values
$-scope: (
  //  <scope-id>: (
  //    <name>: <value>,
  //    ...
  // ),
  // ...
);

// Setter function
@function set($name, $value) {
  // 1. Get the $-scope value by current scope ID
  // 2. Set the $value to the $name property in the current scope
  // 3. Merge back the value(1) to $-scope

  @return $value;
}

// Getter function
@function get($name) {
  $value: null;

  // 1. Get the $-scope value by current scope ID
  // 2. Get the value of $name property

  @return $value;
}

// The mixin to create new scope
@mixin new() {
  // 1. Create a new scope ID
  // 2. Push the scope ID and empty Map into $-scope

  // 3. Do something
  // e.g. call constructor function by using call()
  //      or set default values       etc.

  @content;

  // 4. Pop the current scope ID and Map(2) from $-scope
}

// Component Definition
@function method ($arg) {
  $value: null;

  // 1. Get property value(s)
  $value: get('property');

  // 2. Do something
  $value: $arg;

  @return $value;
}

// Use case
.instance {
  // 1. Create new scope.
  @include new() {
    // Scope begins
    
    // Set property
    $property: set('property', 1);

    // Call a method
    $value: method(1);
    
    property: $value;

    // Scope ends
  }
}

以上是关于scss Sass:创建新范围和实例变量/方法#sass的主要内容,如果未能解决你的问题,请参考以下文章

scss Sass:创建自定义范围和基于范围的默认值#sass

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

SCSS / SASS:如何在每个循环中创建变量

NativeScript - 如何在应用程序的整个 scss 中使用 SASS 变量?

如何将scss转换成css文件

SCSS 简要教程(常用指令与方法)