CSS3 Button Maker

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Dinge ziehen, Farben auswählen, eine schöne Klasse für Ihre Schaltflächen erstellen… Einführung des Button Makers.


Mann, das ist ein schöner Button, der da.

Ich sage „CSS3“, weil diese Verläufe, Schatten und abgerundeten Ecken nutzen, die sehr zu ihrer Button-Haftigkeit beitragen. In älteren Browsern, die diese Eigenschaften nicht unterstützen, ist der Fallback ein einfarbiger Hintergrund, keine Schatten und eckige Ecken. Keine große Sache.

Ich hoffe, das ist schmerzlich offensichtlich, aber um diese Button-Maker-Sache zu nutzen, passen Sie einfach die Einstellungen an, bis Sie einen schön aussehenden Button haben, drücken Sie dann den Button und er gibt Ihnen den CSS. Kopieren und fügen Sie nach Belieben ein. Jetzt können Sie den Klassennamen „button“ auf HTML-Elementen verwenden, um sie wie Buttons aussehen zu lassen. Der CSS ist nicht wirklich schön formatiert. Wenn jemand eine Idee hat, wie man das besser machen kann, lassen Sie es mich bitte wissen.

Das super-coole ermächtigende Konzept…

…in Bezug darauf, wie der Button-Maker-Vorschau funktioniert.

Es ist einfach, den CSS eines Elements mit JavaScript im laufenden Betrieb zu ändern. Aber wie können wir den :hover-Zustand ändern? Die Antwort ist, dass wir es nicht wirklich können, zumindest nicht wirklich einfach. Wir könnten ein mouseenter-Ereignis anhängen, das einige neue CSS anwendet, die die alten überschreiben würden, und ein mouseleave-Ereignis, das es wiederherstellt. Das ist ein großer Aufwand für etwas so Relativ Kleines. Es wird noch komplizierter, wenn wir auch den :active-Zustand steuern wollten.

Dieser Button-Maker zeigt Ihnen eine live funktionierende Version des von Ihnen erstellten Buttons, komplett mit :hover- und :active-Zuständen. Es wird ohne das Anhängen von JavaScript-Ereignissen an den Button selbst getan. Wie wird das also gemacht? Ich habe es mit einer Technik gemacht, die ich von Doug Neiner übernommen habe, der sie (als kleinen Teil einer völlig anderen Anwendung) auf jQConf vorgestellt hat.

Okay, okay, ich mache weiter. Die Idee ist, ein<style>Element in den<head>einzufügen, das den bestehenden CSS überschreibt (in-Dokument-CSS überschreibt automatisch verknüpftes CSS für Selektoren mit demselben Spezifitätswert). Dann, wenn sich etwas ändert, reißt man buchstäblich das gesamte Style-Tag heraus und ersetzt es.

Ein neues Style-Element hinzufügen

$("head").append("<style type='text/css'></style>");

Textvariable, in der der CSS gespeichert wird. Halten Sie diesen Text bei Änderungen der Optionen auf dem neuesten Stand.

var cssText = "";

Verwenden Sie die replaceWith()-Funktion, um das vorhandene Style-Element herauszureißen und ein neues anzuwenden.

$("style").replaceWith("<style type='text/css'>" + cssText + "</style>");

Der Teil des Heraustrennens ist wichtig. Ursprünglich habe ich versucht, eine ID auf das Style-Element zu setzen und den Inhalt darin im laufenden Betrieb zu ersetzen. Es hat den Inhalt ersetzt, aber diese Änderungen wurden nicht auf der Seite angezeigt. Anscheinend müssen Sie es buchstäblich entfernen und wieder einfügen, um den Browser zum erneuten Rendern mit dem neuen CSS zu zwingen.

Nimm es, schüttle es

Ich werde den Quellcode für das Ding bereitstellen, falls Sie ihn aus irgendeinem Grund lokal ausführen möchten. Oder noch besser, weil Sie ihn cooler machen wollen. Wenn ja, teilen Sie ihn bitte.

Demo ansehen   Dateien herunterladen