【问题标题】:@mixin possible for pseudo element@mixin 可以用于伪元素
【发布时间】:2021-08-11 21:41:16
【问题描述】:

我需要在我正在处理的项目中支持伪元素的新旧声明。我想创建一个 SCSS @mixin,这样我就不必重复自己了。

我想要实现以下目标:

声明:

.selector {
  &#{$before} {
    content: '';
  }
}

编译:

.selector:before { content: ''; }
.selector::before { content: ''; }

所以我本质上需要@mixin@extend 任何:before::before 后面的css 属性。

我搜索了高低,但没有找到解决方案。他们的任何 Sass 巫师都能让我的梦想成为现实吗?

提前谢谢你

【问题讨论】:

    标签: css sass


    【解决方案1】:

    你来了,芽:

    @mixin pseudo-element($element) {
      &:#{$element}, &::#{$element} {
        @content;
      }
    }
    
    // Usage:
    
    .foo {
      @include pseudo-element('before') {
        content: '';
      }
    }
    

    输出:

    .foo:before, .foo::before {
      content: '';
    }
    

    代码笔:https://codepen.io/esr360/pen/VzVBpj

    【讨论】:

    • 嗨。哇!由于某种原因,我在学习过程中错过了@content SCSS 声明。这改变了一切(再次)。我唯一改变的是你用逗号分隔每个伪元素,我的理解是它们需要分开,这样不能识别::before 的浏览器也不会忽略:beforecodepen.io/anon/pen/MvzBmL。谢谢你。
    • 别担心!是的,您所做的更改是正确的,我忘记了将两者与逗号结合使用存在问题(参考:stackoverflow.com/a/10181948/2253888
    • 为确认干杯。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2013-07-25
    • 2021-06-04
    • 2012-06-03
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    相关资源
    最近更新 更多