Mixin来限定选择器

没有简单的方法可以从与其关联的规则集中限定选择器。 通过限定,我的意思是将元素名称(例如a )添加到类(例如.btn )之前,以便规则集特定于元素选择器和类选择器(例如a.btn )的组合。

到目前为止,最好的方法(到目前为止是唯一有效的方法)如下:

.button {
  @at-root a#{&} {
    // Specific styles for `a.button`
  }
}

哇,绝对不是很优雅,是吗? 理想情况下,您可能希望将这种恐怖的语法隐藏在mixin的后面,以便保持干净友好的API,尤其是在团队中有菜鸟开发人员的情况下。

当然,这样做非常简单:

/// Since the current way to qualify a class from within its ruleset is quite
/// ugly, here is a mixin providing a friendly API to do so.
/// @author Hugo Giraudel
/// @param {String} $element-selector - Element selector
@mixin qualify($element-selector) {
  @at-root #{$element-selector + &} {
    @content;
  }
}

现在,重写我们之前的代码段:

.button {
  @include qualify(a) {
    // Specific styles for `a.button`
  }
}

好多了吧? 尽管如此,对于没有经验的Sass修补匠来说, qualify听起来还是有些棘手。 您可以在更具描述性的名称(例如when-is时提供别名。

/// @alias qualify
@mixin when-is($args...) {
  @include qualify($args...) {
    @content;
  }
}

最后一个例子:

.button {
  border: none;
  
  // Qualify `.button` with `button`
  @include qualify(button) {
    -webkit-appearance: none;
  }
  
  // Qualify `.button` with `a`
  @include when-is(a) {
    text-decoration: none;
  }
}

翻译自: https://css-tricks.com/snippets/sass/mixin-to-qualify-a-selector/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值