Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sass 检查类选择器中的元素类型_Sass_Css Selectors - Fatal编程技术网

Sass 检查类选择器中的元素类型

Sass 检查类选择器中的元素类型,sass,css-selectors,Sass,Css Selectors,在Sass中,我们都会这样做: button { @extend %button; &.previous, &.next { background: blue; } } 今天,我需要的正好相反:检查类选择器中的元素类型。这是我的第一次尝试,我希望能成功: .previous, .next { @extend %button; &span { opacity: .3; } } 不幸的是,这会输出选择器,如.previous

在Sass中,我们都会这样做:

button {
  @extend %button;

  &.previous,
  &.next {
    background: blue;
  }
}
今天,我需要的正好相反:检查类选择器中的元素类型。这是我的第一次尝试,我希望能成功:

.previous,
.next {
  @extend %button;

  &span {
    opacity: .3;
  }
}
不幸的是,这会输出选择器,如
.previousspan
.nextspan
。我试着使用
span&
,或者插值,因为我认为它可以解决我的问题,但是我被卡住了

有什么想法吗

注意:很明显,我可以把这个
span
选择器放在外面(这就是我让它工作的方法),但这不是我问题的重点。我真的在寻找正确的方法,谢谢


使用最新版本的Sass,您可以这样实现它:

.class {
  @at-root {
    div#{&} {
      opacity: .3;
    }
  }
}
@在根目录下,将确保使选择器的“作用域”为空,同时仍然允许您访问ampersand变量


不过,通常最好不要以标记名为目标。从字面上说。

我尝试过这个,但出于某种原因,它会输出
。previous span.previous
,这是不正确的。我同意你关于定位标记名的观点,我覆盖了一些CMS样式,对HTML结构没有控制权。也不起作用,因为有两个类选择器。它将输出
span.previous、.next{}
而不是
span.previous、span.next{}
。无论如何,我发现根目录下的
@可以用作块包装器!那么你在寻找这个问题:太好了,非常感谢!你有没有办法更改副本,重定向到正确的答案?我想你可以像OP一样自己关闭副本。完成后,谢谢你的帮助。