2016-04-10 5 views
1

Ich bin neu in CSS, und ich frage mich, gibt es eine andere Möglichkeit, ein Äquivalent Pseudo-Klasse zu schreiben: Link, falls: Link wird nicht unterstützt?CSS Pseudoklasse: Link nicht unterstützt. Gibt es ein Äquivalent?

+0

http://caniuse.com/#search=%3Alink - nur IE6 fehlt die Unterstützung, ich glaube nicht, dass Sie sich darüber Gedanken machen müssen –

+1

': stimmt überein (: any-link: not (: besucht)) ist äquivalent, hat aber weniger Browser-Unterstützung. – Oriol

+0

@Zoltan Toth: Diese Beschreibung ist irreführend -: Link ist kein CSS2.1 Selektor, und IE6 unterstützt es sicherlich. – BoltClock

Antwort

2

Theoretisch in Selektoren-4 Sie :any-link:not(:visited) schreiben können, aber Sie werden hart gedrückt, um alle Browser zu finden, die :visited unterstützen, aber nicht :link, geschweige denn :any-link, Browser-Regressionen ungeachtet.

Ein etwas weiter verbreiteter Selektor erfordert Kenntnisse der Dokumentsprache, da die Link-Pseudoklassen selbst verschiedene Elemente auf der Grundlage der Dokument-Semantik zuordnen. In HTML :link kann als die folgende Stufe 3 Selektor-Liste ausgedrückt werden:

a[href]:not(:visited), area[href]:not(:visited), link[href]:not(:visited) 

Die gleiche Einschränkung gilt.

Wenn Sie nach Browsern fragen, die weder der Link-Pseudo-Klassen unterstützen, entfernen Sie die :not(:visited) aus der obigen Selektor-Liste. Wenn Sie fragen, wie Sie Links in Browsern, die keine der Pseudo-Klassen unterstützen, auf ihrer Besuchsstärke abgleichen, wird dies unmöglich. Aber es gibt keine bekannten Browser, die keine Unterstützung für die Link-Pseudo-Klassen haben, also wird dies niemals ein Problem sein, wenn Sie Websites erstellen.


Beachten Sie, dass CSS1 und CSS2.1 definieren :link und :visited nur a Elemente anzuwenden - die eigenständige Selectors Standard (Stufe 3 oder höher) auf die Dokumentsprache aufschiebt statt, und im Fall von HTML, die aktuellen Definition oben wird von HTML5 zur Verfügung gestellt. Dies bedeutet theoretisch, dass Browser bis einschließlich IE6 (nicht sicher über IE7) die Link-Pseudoklassen für andere Elemente als a[href] nicht unterstützen, da IE6 CSS1-kompatibel und nicht CSS2-kompatibel ist . Wie das in der Praxis aussieht, hängt davon ab, ob Sie die Link-Pseudoklassen verwenden, um die Elemente area oder link zu finden, und ob Sie überhaupt Browser unterstützen, die auf IE7 zurückgehen. Wenn Sie wie 99,9% der Autoren sind, die sie nicht mit area oder link Elemente verwenden, dann bedeutet dies für Sie in der Praxis absolut nichts.

0

Der a {} Selektor ({} hinzugefügt, da es so kurz ist) wird auf alle Pseudo-Klassen gelten, obwohl a:link spezifischen Styling überschreibt für URLs der Benutzer noch nicht besucht hat.

Jemand erwähnte eine außergewöhnlich alte Version von Internet Explorer. Wenn Sie neu in CSS sind, sollten Sie zuerst konzentrieren sich auf aktuelle Browser. Wenn Sie zu diesem Zeitpunkt lernen, ist die älteste Version von IE, die Sie unterstützen, IE11, wenn die Arbeit mit CSS ein Teil Ihrer zukünftigen Karriere wird.

+0

Oh okay, ich sehe! Aber nur für das theoretische Wissen, wenn Pseudoklassen nicht unterstützt werden, wie würden wir die Selektoren äquivalent schreiben? –

+0

In CSS ist der Begrenzer für Selektoren ein Komma: 'a: link, a {color: #aaa;}' zum Beispiel, obwohl jemand, der weit genug fortgeschritten ist, den ', a' Teil aus dem Selektor entfernen würde. – John

+0

Browser, die nicht unterstützen: Link würde sowieso die gesamte Regel fallen lassen - Sie werden gezwungen, die Selektoren zu teilen und die Stile über sie zu duplizieren. – BoltClock

Verwandte Themen