如何将样式应用于元素的所有子元素

MTi*_*ted 77 css css-selectors

我有一个元素class='myTestClass'.如何将css样式应用于此元素的所有子元素?我只想将样式应用于元素子元素.不是它的大孩子.

我可以用

.myTestClass > div {
  margin: 0 20px;
}
Run Code Online (Sandbox Code Playgroud)

哪个适合所有div孩子,但我想找一个适合所有孩子的解决方案.我以为我可以用*,但是

.myTestClass > * {
  margin: 0 20px;
} 
Run Code Online (Sandbox Code Playgroud)

不起作用.

编辑

.myTestClass > *选择不使用Firefox 26应用规则,并有根据萤火没有其他规则的保证金.和它的作品,如果我取代*div.

Ano*_*ous 115

正如David Thomas所评论的那样,这些子元素的后代将(可能)继承分配给这些子元素的大多数样式.

您需要将.myTestClass内部包装为元素,并通过添加.wrapper * 后代选择器将样式应用于后代.然后,添加.myTestClass > * 子选择器以将样式应用于元素子项,而不是其子项.例如这样:

JSFiddle - DEMO

.wrapper * {
    color: blue;
    margin: 0 100px; /* Only for demo */
}
.myTestClass > * {
    color:red;
    margin: 0 20px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="wrapper">
    <div class="myTestClass">Text 0
        <div>Text 1</div>
        <span>Text 1</span>
        <div>Text 1
            <p>Text 2</p>
            <div>Text 2</div>
        </div>
        <p>Text 1</p>
    </div>
    <div>Text 0</div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 在现代浏览器上,通用选择器的性能并不差.[这是一个参考](http://www.telerik.com/blogs/css-tip-star-selector-not-that-bad).我自己的工作经验证实了这位作者的结论. (7认同)
  • 只要您愿意,就可以使用通用选择器,如果性能适合您的情况,则无需寻找替代方案。 (5认同)
  • 切勿使用通用选择器.它对渲染有很大的性能影响. (4认同)
  • @yesIcan:好的,这很有用....你有一个不使用通用选择器的替代解决方案吗? (3认同)