5

我希望能够使用 LESS CSS 从嵌套类中进一步访问 dom 树上的类,请参见示例:

HTML:

<html class="svg">
 <body>
  <div class="content">
    <div class="container">
      <div class="logo"></div>
    </div>
 </body>
</html>

较少的:

.container {
  .logo {
      background:url(/images/ws-logo.gif);
  }
}

我想从 .logo 嵌套规则中定位 html 标记上的 .svg 类,以保持整洁,而不是像这样编写另一个规则:

.svg { 
  .container {
    .logo {
        background:url(/images/logo.svg);
    }
  }
}

所以,理想情况下是这样的:

 .container {
    .logo {
        background:url(/images/logo.gif);

        (some-symbol).svg {
           background:url(/images/svg-logo.svg);
        }
    }
 }

我正在使用modernizr 来检测svg 支持。

有谁知道这是否可能?或者有什么建议?

4

2 回答 2

7

是的!(更新)

当我在这里测试时,它起作用了!

    .container { 
        .logo { 
            background:url(/images/logo.gif);
            .svg & {
                background:url(/images/svg-logo.svg);
            } 
        } 
    }
于 2012-07-17T12:32:16.290 回答
2

这是不可能的,因为您不能在向父级添加另一个类的路径中“退后一步”。相反,只需编写另一条规则:

.svg .container .logo,
/* or perhaps even simpler, however be aware of rule specificity*/
.svg .logo{
        background:url(/images/logo.svg);
}

这没什么大不了的,是吗?

为了完整起见:您可以通过&-symbol 引用实际元素。如果您想针对当前元素的伪类/元素或其他类,这是有意义的:

.container {
     .logo {
         /* styles for ".container .logo" */
     }
     &:hover .logo{
         /* styles for ".container .logo"
            The hover however is bound to the .container element
            equals the following selector: .container:hover .logo */
     }
}
于 2012-07-17T12:51:54.097 回答