Wir haben in der Vergangenheit schon einige lustige Dinge mit Textauswahl gemacht. Wir haben einen Geheimnachrichtengenerator erstellt. Wir haben ein Ding gemacht, um nur eine bestimmte Anzahl von Zeichen auszuwählen.
In den Foren fragte Aaron Silber sich nach dem Anzeigen eines tatsächlichen Bildes mit Textauswahl. Mit CSS wissen wir, dass wir die Hintergrund**farbe** von ausgewähltem Text ändern können, wie hier.
::-moz-selection { background-color: #FFA; }
::selection { background-color: #FFA; }
Aber die tatsächlichen Eigenschaften, die mit diesen Pseudo-Selektoren verwendet werden können, sind sehr begrenzt1. Background-image wird in keinem Browser unterstützt, der diese Pseudo-Selektoren für Textauswahl unterstützt. Aaron hat eine Testseite erstellt, um genau zu sehen, welche Eigenschaften mit ::selection unterstützt werden. Im Wesentlichen sind color und background-color die einzigen unterstützten Eigenschaften.
Also geben wir auf? Keineswegs! Es gibt ein range-Objekt (mehr dazu) in JavaScript, das eine API zum Abrufen (und in geringerem Maße zum Setzen) von Informationen über den vom Benutzer aktuell ausgewählten Text hat. Mit dieser Macht könnten wir herausfinden, was ausgewählt ist, span-Elemente darum wickeln und unsere Stile mit diesen Spans (die keine inhärenten Styling-Beschränkungen haben) anwenden. Außerdem ist die browserübergreifende Kompatibilität dafür nicht großartig, aber es gibt ein Open-Source-Projekt namens Rangy, das die Arbeit mit Ranges einfacher und browserübergreifender macht.
Eine einfache Demo (aus deren Dokumentation) beinhaltet das Hinzufügen einer Klasse um ausgewählten Text nach dem Klicken auf eine Schaltfläche
<script>
var cssApplier;
window.onload = function() {
rangy.init();
cssApplier = rangy.createCssClassApplier("someClass", true); // true turns on normalization
});
</script>
<input type="button" value="Toggle someClass on selection" onclick="cssApplier.toggleSelection();">
Damit haben Sie eine CSS-Klasse ("someClass" im obigen Code), die Sie beliebig gestalten können.
.someClass {
background-image: url(raptor-attack.png);
}

Offensichtlich ist das Hinzufügen eines Raptors die bestmögliche Idee.
Demo ansehen Dateien herunterladen
1 Und ::selection wurde aus der Spezifikation entfernt, daher gibt es keinen Standard, an den sich Browser halten müssen.
Das war super, hat aber nicht ganz gut funktioniert (zumindest in meinem Browser, FF). Die Sache ist, dass nach der ersten Auswahl der Dinosaurier dort bleibt, auch wenn ich die Auswahl aufhebe.
Immer noch erstaunlich, wenn man ein bisschen mit seinen Kunden spielen muss.
Bei mir dasselbe, zusätzlich brach die "Alle auswählen"-Funktion die Ansicht der Quellcode-Anzeige und zeigte den Quellcode unter dem Demotext auf der Seite an.
Safar 5.0.4
Das ist eine großartige Idee, aber bei mir funktioniert es auch nicht richtig – Chrome unter XP. Manchmal bleibt der Raptor, manchmal nicht – manchmal verschwindet der verbleibende Text.
Ich hatte dieselben Probleme in Safari,
manchmal blieb es, manchmal wurde es nicht angezeigt.
Aber immer noch eine erstaunliche Idee.
Ich musste lachen, als ich das heute Morgen in meinem RSS sah. Großartig, großartig, großartig! Es wäre cool, wenn man beim Kopieren/Einfügen des Textes stattdessen das Raptor-Bild bekommen würde ;)
Ziemlich cool, ein paar kleine Fehler in Chrome – der Hintergrund bleibt sichtbar
RIESEN LOL! Mann, du bringst mich zum Weinen!
Braucht ein wenig Feinschliff, aber eine sehr coole Art für ein Easter-Egg!
Das Sinnloseste, was ich je gesehen habe…
…aber verdammt lustig, Ich liebe es!!!
mach weiter so, und danke für all die coolen Web-Sachen.
habe noch nie so etwas gesehen lolzz
jemand fühlte sich wie Seinfeld lolzz
gute Arbeit, Leute
Nette Idee.
Das hat Spaß gemacht, dazu beizutragen. Mit etwas Arbeit könnten diese Techniken angepasst werden, um Benutzern eine besser aussehende Textauswahl zu bieten. Ist es praktisch? Nein. Sie müssten Ihren JavaScript erkennen lassen, wo Ihre Auswahl begonnen hat, ein Span-Tag dort platzieren und dann die Schließposition (ständig) ändern, wohin Sie in Echtzeit ziehen (nicht bei mouseup). Bei mouseup würden die Tags entfernt. Gestalten Sie die Span-Tags mit einem Hintergrundbild eines Textmarkerstrichs, deaktivieren Sie die ::Selection-Eigenschaften, und Sie haben einen digitalen Textmarker anstelle des Standard-Blau-Hintergrunds für die Auswahl. Ich werde es eines Tages tun, aber im Moment bin ich zu beschäftigt.
Ja, das ist genau das, was Sie tun müssten, aber das Auslösen von Ereignissen bei mousemove ist ziemlich anstrengend, besonders wenn die Aufgabe DOM-Manipulation ist. Ich bin mir nicht sicher, ob es jemals eine perfekte Lösung dafür geben wird, es ist meistens nur zum Lachen.
und wir lieben die Lacher!
Das bringt mich zum Lachen, ein bisschen albern, lustig ist nie schlecht. Danke für den Sinn für Humor bei dieser Sache!
Das ist eine tolle Idee :)
Ostereier sind auf Websites immer lustig und das ist ein ausgezeichneter Weg, um sie zu verstecken.
Sehr interessante Idee, bin mir aber nicht sicher, ob sie sich durchsetzen wird!
Ich genieße Ihre Codierung immer. Wollte nur kurz erwähnen, dass beim Hervorheben der "Demo"-Seite plötzlich die Hälfte des Inhalts verschwand.
Das liegt möglicherweise an meinem Browser (Chrome), aber so etwas habe ich noch nie erlebt.
Aber trotzdem wieder großartige Arbeit :) Weiter so.
PS: Sich in WordPress einzuarbeiten, rockt, ich werde bald Rezensionen darüber machen :)
Was zum Teufel.. Coole und interessante Idee.. mal sehen, wie das auf meinen Bildern funktioniert..
Einfach genial. . . um das Ganze in einem Satz zu beschreiben: "Was für eine Idee!" Mach weiter so.
Ich mag Ihren Sinn für Humor. Lustig, wie die menschliche Natur instinktiv den Text hervorheben möchte. Hat in meinem Browser gut funktioniert und ich kann es kaum erwarten, das selbst auszuprobieren. :)
ooo.. Großartige Sachen…! Ich wusste auch nichts von dem Geheimnachrichtengenerator.. das ist auch ziemlich cool! :)
<style>.someClass { background: yellow }
</style>
Nun genießen Sie Text, den Sie hervorheben können, um wichtige Fragmente zu markieren.
was für eine Kreativität …… \m/ …..
wirklich tolle Idee …
Ich mag Ihren Sinn für Humor. Lustig, wie die menschliche Natur instinktiv den Text hervorheben möchte.