Eine der coolen CSS3-Deklarationen, die Sie heute verwenden können, ist ::selection, mit der Sie die Textauswahlfarbe Ihres Browsers oder Systems durch eine Farbe Ihrer Wahl überschreiben können. Zum Zeitpunkt der Erstellung dieses Textes unterstützen nur Safari und Firefox dies, und das auf leicht unterschiedliche Weise. Glücklicherweise kann dies als eine der „Forward-Enhancement“-Techniken betrachtet werden. Es ist eine nette Geste für diejenigen, die moderne Browser verwenden, aber es wird in anderen Browsern einfach ignoriert und ist keine große Sache.

Hier ist der Haken
::selection {
background: #ffb7b7; /* WebKit/Blink Browsers */
}
::-moz-selection {
background: #ffb7b7; /* Gecko Browsers */
}
Innerhalb des Auswahlselektors sind nur die Eigenschaften color und background wirksam. Was Sie für etwas zusätzlichen Flair tun können, ist, die Auswahlfarbe für verschiedene Absätze oder verschiedene Bereiche der Seite zu ändern.
Ich habe einfach unterschiedliche Auswahlfarben für Absätze mit unterschiedlichen Klassen verwendet
p.red::selection {
background: #ffb7b7;
}
p.red::-moz-selection {
background: #ffb7b7;
}
p.blue::selection {
background: #a8d1ff;
}
p.blue::-moz-selection {
background: #a8d1ff;
}
p.yellow::selection {
background: #fff2a8;
}
p.yellow::-moz-selection {
background: #fff2a8;
}
Beachten Sie, dass die Selektoren nicht kombiniert sind, auch wenn der Stilblock dasselbe tut. Es funktioniert nicht, wenn Sie sie kombinieren
/* Combining like this WILL NOT WORK */
p.yellow::selection,
p.yellow::-moz-selection {
background: #fff2a8;
}
Das liegt daran, dass Browser den gesamten Selektor ignorieren, wenn ein Teil davon für sie unverständlich oder ungültig ist. Es gibt einige Ausnahmen (IE 7?), aber nicht in Bezug auf diese Selektoren.
Für noch verrückteren Flair könnten Sie ein Bild bei Textauswahl anzeigen.
Ich mag besonders die süßen Farben, die Sie gewählt haben :)
Was Forward-Enhancement-Techniken angeht, ist diese ziemlich genial. Zugegebenermaßen werden nur etwa 20 % der durchschnittlichen aktuellen Besucherbasis dies jemals sehen, aber es ist eine fantastische visuelle Note für diejenigen, die es tun, und es schadet denen, die es nicht tun, überhaupt nicht. Toller Tipp!
Das ist wirklich cool. Es ist etwas, das die meisten Besucher nie sehen würden, aber die, die es sehen, wären überrascht. Obwohl ich nicht verstehe, warum Firefox -moz- für seinen Browser hinzufügen musste... Ich sollte ihnen empfehlen, das zu ändern.
Diese Idee gefiel mir wirklich gut, also habe ich sie auf die nächste Stufe gehoben
http://metaatem.net/selcolor.php
Okay, ich konnte es nicht bei gutem Belassen. Hier ist der nächste Schritt
Web Standards FTW!
Das war cool, Erik
Juhu! Ich habe es hier implementiert: http://www.barefootstudios.ca/
Danke an alle. Ich habe es aufgeräumt und auf EC2 hochgeladen. Hier ist die neue URL, bitte lassen Sie mich wissen, wenn sie bei Ihnen nicht funktioniert!
http://metaatem.net/highlite/
funktioniert nicht in Opera
Das funktioniert bei mir auch nicht!! FF2
Oh, das ist eine wirklich schöne Sache für Benutzer moderner Browser. Es funktioniert gut in Opera 9.5, genauso wie bei Ihrer „Bild in HTML ausblenden“.
@Jermayn: Es funktioniert absolut in Firefox 2. Funktioniert die Beispielseite bei Ihnen nicht?
@bart: Das ist cool, dass es in Opera 9.5 funktioniert. Also bleibt nur noch IE übrig (was die wichtigen Browser angeht).
Schöner Effekt! Gibt es eine Möglichkeit, die Farbe des Textes zu definieren, wenn er hervorgehoben wird?
@Martha Retallick
Natürlich können Sie das! Verwenden Sie einfach color
Ich kann das in Opera nicht zum Laufen bringen, weiß jemand warum?
Hier ist der Code
*::selection {
background: #C32A22;
color: #DFDCDC;
}
*::-moz-selection {
background: #C32A22 none repeat scroll 0 0;
color: #DFDCDC;
}
Verwenden Sie dies, aber es scheint nicht bei editierbarem Text wie in einem Eingabefeld zu funktionieren
::selection {background-color: #ffb7b7;}
::-moz-selection {background-color: #ffb7b7;}
::-webkit-selection {background-color: #ffb7b7;}
Aus dem Artikel
„Zum Zeitpunkt der Erstellung dieses Textes unterstützen nur Safari und Firefox dies…“
Das gesagt, das Präfix für Opera ist -o-, also wenn sich die Unterstützung von Opera dafür geändert hat, versuchen Sie ::-o-selection {background:#C32A22;}. Wie im Artikel oben erwähnt, ist „background die einzige Eigenschaft, die funktioniert“, daher ist die Angabe einer Farbe nur Tipparbeit. Die Verwendung von color:#DFDCDC; hierfür ändert nicht die Farbe des hervorgehobenen Textes.
Webkit ist eine Safari-Sache. Opera kann es unterstützen, nehme ich an, aber sie sind nicht dazu verpflichtet.
Ehrlich gesagt, ich bin nicht sehr dafür, all die Präfixe zu verwenden. Sie fügen dem CSS viel Gewicht hinzu und werden nicht immer gut unterstützt. Ich warte generell, bis alle Browser (oder zumindest alle außer IE) die Eigenschaft ohne Präfix unterstützt haben oder ich benutze das prefix-free-Skript von Lea Verou. (http://lea.verou.me/prefixfree/) Sicher, jedes Skript fügt Gewicht hinzu, aber zumindest ist es weniger Arbeit für mich, da ich das Skript wieder löschen kann, sobald es nicht mehr benötigt wird, ohne jede Zeile CSS durchgehen und redundanten Code löschen zu müssen.
funktioniert auch großartig in Chrome
Schade, dass es für Eingabefelder nicht funktioniert (funktioniert wahrscheinlich nur in Firefox)
Hallo, das hat bei mir zuerst nicht funktioniert, bis ich ‚background‘ in ‚background-color‘ geändert habe. Jetzt funktioniert es großartig. Danke! Sehr cool.
Anscheinend validieren
::selectionund::-moz-selectionnicht.Das Definieren von Abschnitten
p.red::selectionscheint nur mit Absätzen zu funktionieren, zumindest als ich es mitdiv.red::selectionversucht habe, hatte es keine Auswirkung, was schade ist.Ich möchte die Farbe des ausgewählten Textes ändern. Gibt es Ergänzungen oder Änderungen am Code?
Wirklich nett, danke! Ich habe mich gerade gefragt, ob es eine Möglichkeit gibt, auch die graue Auswahlfarbe beim Deaktivieren (Blur) zu ändern (wie wenn man auf die Adressleiste des Browsers klickt)
Schöner kleiner Effekt… gerade auf einer Website implementiert und es funktioniert wie ein Zauber (und in Chrome). Schnelle und einfache Stiländerungen. Manche Kunden lieben diese Art von Liebe zum Detail. Danke!
Hallo,
Ich habe eine Frage: Warum kann man ::selection und ::-moz-selection nicht zusammenlegen und einen Wert für beide definieren? Wenn man das tut, ignoriert FF die Werte.
Grüße
Das ist eine gute CSS-Lektion! Wenn ein Browser einen Teil eines Selektors nicht versteht, ignoriert er den gesamten Selektor (auch wenn sie durch Kommas getrennt sind). Es gibt einige Ausnahmen, aber hauptsächlich in alten Browsern (IE 7?).
@Chris, aber das funktioniert
Warum ist das so? Was ist der Unterschied?
Dave – Browser müssen nur Eigenschaftsdeklarationen mit ungültigen/nicht erkannten Namen oder Werten ignorieren, nicht die gesamte Regel oder die Zeile, auf der sie stehen. Ob Sie die Eigenschaftsdeklarationen auf separaten Zeilen auflisten oder sie alle auf einer Zeile zusammenfassen, spielt eigentlich keine Rolle.
Möchten Sie etwas technischer werden?
Danke @Meta_Ing, das ergibt jetzt Sinn :)
Es funktioniert nicht in IE 8
Funktioniert gut in Webkit für statischen Text, hat aber keine Auswirkung auf Textareas oder Eingabefelder!
Tolle Zusammenfassung, danke.