LESS CSS - 访问类的进一步上涨DOM树从嵌套类中(LESS CSS - accessin

2019-06-26 08:24发布

我希望能够从使用较少的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);
  }
}

我想要的目标来的HTML标签.SVG类从.logo嵌套规则中,以保持整洁,而不是写另一个这样的规则:

.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支持。

任何人都知道这是可能的吗? 或者有什么建议?

Answer 1:

是! (更新)

当我测试了这个在这里 ,它的工作!

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


Answer 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 */
     }
}


文章来源: LESS CSS - accessing classes further up the dom tree from within a nested class
标签: css nested less