2014-10-13 6 views
32

Ich habe ein Element mit class='myTestClass'. Wie wende ich einen CSS-Stil an alle Kinder dieser Elemente an? Ich möchte nur den Stil auf die Elemente Kinder anwenden. Nicht seine Enkelkinder.Wie wende ich einen Stil an alle untergeordneten Elemente eines Elements an

I

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

die Arbeit für alle div Kinder verwenden könnte, aber ich eine Lösung möchte, die für alle Kinder arbeitet. Ich dachte, ich * verwenden könnte, aber

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

funktioniert nicht.

bearbeiten

Der .myTestClass > * Selektor gilt nicht die Regel in Firefox 26, und es gibt keine andere Regel für Spielraum nach Firebug. Und es funktioniert, wenn ich * durch div ersetze.

+1

Wie funktioniert es 'nicht funktionieren'? Beachten Sie, dass Nachfahren dieser untergeordneten Elemente (wahrscheinlich) die meisten der diesen untergeordneten Elementen zugewiesenen Stile erben werden. –

+0

Debuggen Sie dies mit dem Inspektor und sehen Sie, ob es eine Regel gibt, die es übernimmt – Brewal

Antwort

52

Wie von David Thomas kommentiert, werden Nachkommen dieser untergeordneten Elemente (wahrscheinlich) die meisten Stile erben, die diesen untergeordneten Elementen zugewiesen sind.

Sie müssen Ihre .myTestClass innerhalb eines Elements umhüllen und die Stile auf Nachkommen anwenden, indem Sie .wrapper *descendant selector hinzufügen. Fügen Sie dann .myTestClass > *child selector hinzu, um den Stil auf die Elemente children anzuwenden, nicht auf die grand children. Zum Beispiel wie folgt aus:

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>

+2

Verwenden Sie niemals einen universellen Selektor. Dies hat große Auswirkungen auf das Rendering. – yesIcan

+2

@yesIcan: Ok, das ist gut zu wissen .... hast du eine alternative Lösung, die den universellen Selektor nicht benutzt? –

+3

Die Leistung des universellen Selektors ist bei modernen Browsern nicht so schlecht. [Hier ist eine Referenz] (http://www.telerik.com/blogs/css-tip-star-selector-not-that-bad). Meine eigenen Erfahrungen bei der Arbeit bestätigen die Schlussfolgerung dieses Autors. – Nathan

Verwandte Themen