it-roy-ru.com

Как применить стиль ко всем дочерним элементам

У меня есть элемент с class='myTestClass'. Как применить стиль CSS ко всем дочерним элементам этого элемента? Я только хочу применить стиль к элементам детей. Не его внуки.

Я мог бы использовать

.myTestClass > div {
  margin: 0 20px;
}

который работает для всех div детей, но я хотел бы решение, которое работает для всех детей. Я думал, что смогу использовать *, но

.myTestClass > * {
  margin: 0 20px;
} 

не работает. 

Правка

Селектор .myTestClass > * не применяет правило в Firefox 26, и нет другого правила для полей в соответствии с firebug. И это работает, если я заменю * на div

53
MTilsted

Как прокомментировал David Thomas , потомки этих дочерних элементов будут (вероятно) наследовать большинство стилей, назначенных этим дочерним элементам.

Вам нужно обернуть свой .myTestClass внутри элемента и применить стили к потомкам, добавив .wrapper *селектор потомков . Затем добавьте .myTestClass > *дочерний селектор , чтобы применить стиль к дочерним элементам, а не к дочерним элементам. Например, вот так:

JSFiddle - DEMO

.wrapper * {
    color: blue;
    margin: 0 100px; /* Only for demo */
}
.myTestClass > * {
    color:red;
    margin: 0 20px;
}
<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>

89
Anonymous

Вместо селектора * вы можете использовать функцию :not(selector) со селектором > и установить что-то, что определенно не будет дочерним.

Пример:

.container > :not(Marquee){
        color:red;
    }


<div class="container">
    <p></p>
    <span></span>
<div>
0
JPB