将规则集传递给mixin

允许包装在mixin中定义的css块。

分离的规则集是一组CSS属性、嵌套规则集、媒体声明或者是存储在变量中的任何其他内容,我们可以将它包含在规则集中或其他结构中,并且所有属性都将复制到那里;我们还可以将它用作mixin参数,并将它作为其他任何变量传递。

    // 声明分离的规则
    @rule_set: { color: green; };
    // 使用分离的规则集
    .xkd {
        @rule_set(); 
    }
    
    // 输出结果
    .xkd{
        color: green;
    }

分离规则集之后调用的括号是必需的,调用 @rule_set 不起作用。

当我们想要定义一个mixin时,它非常有用,这个mixin可以抽象出媒体查询中的一段代码或者不受支持的浏览器类名;规则集可以传递给mixin,这样mixin可以包装内容。

作用域

分离的规则集可以使用在定义和调用位置都可访问的所有变量和混合,否则定义和调用方作用域都可用,如果两个作用域包含相同的变量或混合,则需要声明作用域值优先。

声明范围是定义独立规则集主体的范围,将分离的规则集从一个变量复制到另一个变量无法修改其范围,仅在其中引用该规则集就无法访问新范围,分离的规则集可以通过被解锁(导入)到作用域中来访问。

  • 定义和调用范围可见性:变量和mixin在分离的规则集中定义。
        // 分离的规则集可以看到调用方的变量和混合宏
        @rule_set: {
          // 变量未定义
          define-variable: @define-variable; 
          // mixin未定义
          .define-mixin();
        };
        
        selector {
          // 使用分离的规则集
          @rule_set(); 
          // 定义分离规则集中所需的变量和mixin
          @define-variable: value;
          .define-mixin() {
            variable: declaration;
          }
        }
        
        // 输出结果
        selector {
          define-variable: value;
          variable: declaration;
        }
    
  • 引用将不会修改分离的规则集范围:仅仅给出引用,规则集不访问任何新的范围。
      // 规则集不能仅在其中引用而获得对新作用域的访问
      @rule_set1: { scope-detached: @one @two; };
      .one {
        @one: visible;
        .two {
          // 复制/重命名规则集
          @rule_set2: @rule_set1;
          // 规则集无法看到此变量
          @two: visible;
        }
      }
      .use-place {
        .one > .two(); 
        @rule_set2();
      }
      
      // 引发错误
      ERROR 1:32 The variable "@one" was not declared.
    
  • 解锁将修改分离的规则集范围:分离的规则集可以通过导入到范围中来访问。
     // 分离的规则集通过在范围内解锁(导入)来获得访问权限
     #space {
       .unlock_1() {
         //定义分离的规则集
         @detached: { scope-detached: @variable; };
       }
     }
     .unlock_2() {
       // 解除锁定的分离规则集可以看到此变量
       @variable: value;
       // 解锁/导入分离的规则集
       #space > .unlock-1();
     }
     .use-place {
       // 第二次解锁/导入分离的规则集
       .unlock-2(); 
        @detached();
     }
     
     // 输出结果
     .use-place {
       scope-detached: value;
     }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值