2016-07-08 8 views
4

Ich experimentierte die :only-child Pseudo-Klasse mit der Verwendung aber leider scheint nicht die Textknoten zu berücksichtigen:Wie wählt man ein Element, das keine führenden oder nachlaufenden Textknoten hat?

<style type="text/css"> 
    div span:only-child { 
    color: red; 
    } 
</style> 

<div> 
    Test 
    <span>This still becomes red :(</span> 
</div> 

<div> 
    <span>This becomes red, as it should!</span> 
</div> 
<div> 
    <span>This does not become red - great!</span> 
    <span>This does not become red - great!</span> 
</div> 

Ich versuche, einen Weg zu finden, zu erkennen, wenn ein bestimmtes Element ganz allein in seinem Containerelement ist in einer Situation, in der ich keine neuen Klassen einführen kann.

Gibt es eine Möglichkeit, dies mit CSS zu erreichen?

+0

Gute Frage, aber ich denke, dass Sie die HTML ändern müssen, um dies zu tun. – Esko

+4

Ich würde sagen, Sie müssen js verwenden, um dies zu implementieren – DestinatioN

+3

Ehrlich gesagt, auch die W3Group zugeben, dass nicht alle Text in einem richtigen Textelement erforderlich war ein Fehler. Das hätte all diese Probleme vermieden. Ja ... JS wird hier gebraucht. CSS kann Elemente, die nicht vorhanden sind, nicht auswählen (oder ignorieren). –

Antwort

3

Gibt es eine Möglichkeit, dies mit CSS zu erreichen?

Leider nicht.

Eingeschlossen in einem old revision der CSS-Arbeitsgruppe „Fehler“ Liste fehlt die Idee, dass ..

Kein nackter Text mit Elementen mischt. Der gesamte rohe Text sollte ein adressierbares, umschmeichelbares Element enthalten, das es umhüllt, das bei Bedarf von CSS erstellt wird.

Current list

Textknoten sind nicht Element und CSS nicht auswählen kann (oder ignoriert) Elemente, die nicht existieren.

So ist es wahrscheinlich die beste Vorgehensweise, immer ein Textelement zu verwenden, wenn Sie Text in eine Seite integrieren ... Sie wissen nie, wann Sie es stylen müssen.

Verwandte Themen