Heim >Web-Frontend >CSS-Tutorial >Erstellen eines Stilschalters mit reinem CSS mit: Überprüfung
Vor einigen Jahren konnten Webentwickler so viele Dinge nur mit CSS implementieren und aufbauen, ohne sich auf JavaScript zu verlassen. Aber heute ist CSS ausgereift genug, dass es in der Lage ist, mächtige Dinge zu tun, ohne eine einzige Zeile von JavaScript zu schreiben. Möglicherweise haben Sie auch ein paar Artikel über „CSS nur Ansätze“ gelesen, die die Kraft von CSS demonstrieren.
Wenn es um CSS-Ansätze geht, können wir den: Checked Pseudo-Klasse-Selektor, den ich in diesem Beitrag verwenden werde, nicht ignorieren. Natürlich bin ich nicht der erste, der über diese Technik schreibt, und es gab andere umfangreichere Diskussionen über die Verwendung von Formularelementen als JavaScript -Ersatz. Zum Beispiel diesen Adobe -Artikel von Louis Lazaris und diese große Diashow von Ryan Seddon.
Bevor wir tiefer tauchen, schauen Sie sich die letzte Demo an, um ein Gefühl dafür zu bekommen, was wir in diesem Tutorial aufbauen werden:
Siehe den Stift A Style Switcher mit reinem CSS mit: Überprüfung von SitePoint (@sinepoint) auf CodePen.
Jetzt fangen wir an.
In der Demo sollten Sie das Ausrüstungssymbol bemerkt haben und wie beim Klicken ein Feld mit einigen Optionen angezeigt wird. Bevor wir die HTML und CSS erklären, die diese Box ausmachen, schauen Sie sich den folgenden Code an:
<span>/* we don't want the input fields to appear, all we need is the labels */ </span><span>input<span><span>[type="checkbox"]</span>, input<span>[type="radio"]</span></span> { </span> <span>position: absolute; </span> <span>visibility: hidden; </span><span>} </span> <span><span>.settings-box-element</span> { </span> <span>z-index: 10; </span><span>}</span>
Da wir nur daran interessiert sind, die Beschriftungen anzuzeigen, wird der obige Code verwendet, um die Kontrollkästchen und Optionszahlen auszublenden. Darüber hinaus verfügen alle Etiketten über eine Klasse von Einstellungen-Box-Elementen mit einer Z-Index-Eigenschaft, um sicherzustellen
Jetzt können wir den Code, aus dem das Einstellungsfeld besteht, aufschlüsseln. Beginnen wir mit dem Ausrüstungsknopf. Hier ist das HTML:
<span><!-- the gear icon that opens the box when you click on it --> </span><span><span><span><input</span> id<span>="settings-btn"</span> class<span>="settings-btn"</span> type<span>="checkbox"</span>></span> </span><span><span><span><label</span> for<span>="settings-btn"</span> class<span>="settings-box-element"</span>></span><span><span></label</span>></span></span>und das CSS:
<span><span>.settings-btn + label</span> { </span> <span>position: fixed; </span> <span>top: 130px; </span> <span>right: 0; </span> <span>display: block; </span> <span>width: 35px; </span> <span>color: #e83737; </span> <span>text-align: center; </span> <span>background: #fff; </span> <span>cursor: pointer; </span><span>}</span>Wenn Sie ein oder zwei Artikel über die Verwendung von Formularelementen als JavaScript -Austausch gelesen haben, sollten Sie bereits wissen, dass wir gemeinsam Eingabe- und Beschriftungselemente verwenden müssen, sodass nichts funktionieren würde, wenn einer der beiden entfernt würde, nichts funktionieren würde. Wir haben also eine Checkbox -Eingabe mit einem und ein Etikett mit einem für Attribut, das dem ID -Wert entspricht. Ich habe auch eine Klasse von Einstellungen hinzugefügt, die für unseren CSS-Hook verwendet werden.
In der CSS erhält die Etikett eine Position: Feste Deklaration mit den entsprechenden Richtungseigenschaften/-werten (oben und rechts).
Weiter ist das weiße Box, das
praktisch die Schaltflächen enthält:
Die HTML zuerst:
<span><!-- the white box that contains the buttons --> </span><span><span><span><div</span> class<span>="buttons-wrapper settings-box-element"</span>></span><span><span></div</span>></span></span>und das CSS:
<span><span>.buttons-wrapper</span> { </span> <span>position: fixed; </span> <span>top: 130px; </span> <span>right: -200px; /* should match element width */ </span> <span>width: 200px; </span> <span>height: 240px; </span> <span>background: #fff; </span><span>}</span>Das Box ist ein einzelnes Div-Element mit Klassen "Schaltflächen-Wrapper" und "Einstellungen-Box-Element". Wie ich bereits sagte, wird die letztere Klasse hauptsächlich verwendet, um den Elementen einen Z-Index-Wert zu geben. Mit dem „Buttons-Wrapper“ wird das Div-Element gestaltet. Und wie Sie sehen können, erhielt die DIV eine Breite von 200px und eine Höhe von 240px, um die 5 Tasten, die Sie in der Demo sehen, aufzunehmen. Außerdem erhält der DIV einen Positionswert von festen und entsprechenden Rechts- und Top -Eigenschaften. Das einzige, was Sie hier beachten müssen, ist, dass die richtige Eigenschaft den gleichen Wert wie die Breite haben sollte, aber negativ (um sie aus dem Ansichtsfenster verschwinden zu lassen).
Schauen wir uns nun den Code für das verbleibende Markup an, dh die 5 Tasten. Die Kommentare bezeichnen die Hintergrundstile, die sie kontrollieren:
<span><!-- background styles --> </span><span><!-- light background (#eaeaea) --> </span><span><span><span><input</span> id<span>="light-layout"</span> class<span>="light-layout"</span> type<span>="radio"</span> name<span>="layout"</span> checked></span> </span><span><span><span><label</span> for<span>="light-layout"</span> class<span>="layout-buttons settings-box-element"</span>></span> </span>Light Background<span><span><span></label</span>></span> </span> <span><!-- dark background (#494949) --> </span><span><span><span><input</span> id<span>="dark-layout"</span> class<span>="dark-layout"</span> type<span>="radio"</span> name<span>="layout"</span>></span> </span><span><span><span><label</span> for<span>="dark-layout"</span> class<span>="layout-buttons settings-box-element"</span>></span> </span>Dark Background <span><span><span></label</span>></span> </span> <span><!-- image background --> </span><span><span><span><input</span> id<span>="image-layout"</span> class<span>="image-layout"</span> type<span>="radio"</span> name<span>="layout"</span>></span> </span><span><span><span><label</span> for<span>="image-layout"</span> class<span>="layout-buttons settings-box-element"</span>></span> </span>Image Background<span><span><span></label</span>></span> </span> <span><!-- pattern background --> </span><span><span><span><input</span> id<span>="pattern-layout"</span> class<span>="pattern-layout"</span> type<span>="radio"</span> name<span>="layout"</span>></span> </span><span><span><span><label</span> for<span>="pattern-layout"</span> class<span>="layout-buttons settings-box-element"</span>></span> </span>Pattern Background<span><span><span></label</span>></span> </span> <span><!-- hide/show content --> </span><span><span><span><input</span> id<span>="hide-show-content"</span> class<span>="hide-show-content"</span> type<span>="checkbox"</span>></span> </span><span><span><span><label</span> for<span>="hide-show-content"</span> class<span>="layout-buttons settings-box-element"</span>></span> </span>Hide/Show content<span><span><span></label</span>></span></span>Und hier ist das CSS:
<span><span>.layout-buttons</span> { </span> <span>display: block; </span> <span>width: 150px; </span> <span>padding: 10px 0; </span> <span>text-align: center; </span> <span>border: 2px solid black; </span> <span>box-sizing: border-box; </span> <span>font-size: 0.875em; </span> <span>cursor: pointer; </span><span>} </span> <span><span>.light-layout + label</span> { </span> <span>position: fixed; </span> <span>top: 140px; </span> <span>right: -150px; </span><span>} </span> <span><span>.dark-layout + label</span> { </span> <span>position: fixed; </span> <span>top: 185px; </span> <span>right: -150px; </span><span>} </span> <span><span>.image-layout + label</span> { </span> <span>position: fixed; </span> <span>top: 230px; </span> <span>right: -150px; </span><span>} </span> <span><span>.pattern-layout + label</span> { </span> <span>position: fixed; </span> <span>top: 275px; </span> <span>right: -150px; </span><span>} </span> <span><span>.hide-show-content + label</span> { </span> <span>position: fixed; </span> <span>top: 320px; </span> <span>right: -150px; </span><span>}</span>Beachten Sie, dass das erste Kontrollkästchen das Attribut "Checked" erhielt. Das liegt daran, dass wir wollen, dass es standardmäßig hervorgehoben wird.
Jedes Eingabefeld verfügt über eine ID und jedes Etikett hat ein für Attribut, das der ID für eines der Eingabefelder entspricht. Und wie Sie vielleicht wissen oder nicht, ist das Geheimnis hinter einer solchen Technik das für Attribut, denn wenn ein Etikett mit einem für Attribut angeklickten Element angeklickt wird, wird das Element, das dieser bestimmten Etikett zugeordnet ist Um den: Checked Selector zu verwenden.
Alle oben genannten Beschriftungen haben eine Klasse von "Layout-Buttons". Diese Klasse wird verwendet, um den Schaltflächen die Standardeinstellung und die gängigen Stile wie Breite, Polsterung, Ränder usw. zu verleihen Und wie Sie für das Zahnradsymbol und die weiße Box gesehen haben, wird die Position der Position mit dem Wert festgelegt und den entsprechenden oberen und rechten Eigenschaften verwendet. Beachten Sie, dass der oberste Wert für jedes Etikett 45px größer ist als der vor ihm; Dies soll die Tasten übereinander und ohne Überlappungen übereinander stapeln lassen. Beachten Sie auch, dass der richtige Eigenschaftswert der Breite der Schaltflächen entspricht, jedoch im negativen.
Schauen Sie sich jetzt den letzten Teil unseres CSS -Code an:
<span>/* we don't want the input fields to appear, all we need is the labels */ </span><span>input<span><span>[type="checkbox"]</span>, input<span>[type="radio"]</span></span> { </span> <span>position: absolute; </span> <span>visibility: hidden; </span><span>} </span> <span><span>.settings-box-element</span> { </span> <span>z-index: 10; </span><span>}</span>
Das obige CSS wird verwendet, um die Standardstile des Etiketts zu ändern, das dem ausgewählten Optionsfeld zugeordnet ist (wir haben 4 Optionsfelder). Ich habe den benachbarten Geschwisterauswahl verwendet, um jedes Etikett zu zielen, dem ein Eingabefeld vom Typ „Radio“ vorausgeht. Wie Sie sehen können, erhielten die Hintergrund- und Randeigenschaften den Wert Nr. E83737 (eine rötliche Farbe) und die Farbeigenschaft der Wert #FFF. Nichts wirklich ausgefallenes oder komplexes.
Die verbleibenden Elemente in der HTML werden in eine DIV eingewickelt:
<span><!-- the gear icon that opens the box when you click on it --> </span><span><span><span><input</span> id<span>="settings-btn"</span> class<span>="settings-btn"</span> type<span>="checkbox"</span>></span> </span><span><span><span><label</span> for<span>="settings-btn"</span> class<span>="settings-box-element"</span>></span><span><span></label</span>></span></span>
Beachten Sie im obigen Code, dass ich jedes Element des Einstellungsfelds unabhängig voneinander positioniert habe, wo ich sie einfach alle in ein Div- oder Abschnitt -Element einwickeln und dieses eine einzelne Element positionieren kann, wodurch die Dinge einfacher werden. Dies geschieht einfach, weil Sie kein übergeordnetes Element auswählen können, nur ein Geschwister.
In diesem Fall ist der gesamte Hauptinhalt in einem DIV mit einem DIV eingewickelt. Und wie Sie später sehen werden, müssen wir diese DIV auswählen, indem wir etwas Ähnliches wie folgt schreiben:
<span><span>.settings-btn + label</span> { </span> <span>position: fixed; </span> <span>top: 130px; </span> <span>right: 0; </span> <span>display: block; </span> <span>width: 35px; </span> <span>color: #e83737; </span> <span>text-align: center; </span> <span>background: #fff; </span> <span>cursor: pointer; </span><span>}</span>
Hier verwende ich den allgemeinen Geschwister -Selektor, um die Hauptdiv auszuwählen. Dies ist die einzige Möglichkeit, dies zu tun.
Wenn Sie auf das Zahnradsymbol klicken, wird das Feld Einstellungen angezeigt. Hier ist der Code, um dies zu erreichen:
<span><!-- the white box that contains the buttons --> </span><span><span><span><div</span> class<span>="buttons-wrapper settings-box-element"</span>></span><span><span></div</span>></span></span>
Wenn der Benutzer auf das Zahnradsymbol klickt, wird das Kontrollkästchen mit ausgewählt und hier kommt die Magie. Sobald das Zahnradsymbol geklickt ist, wird Folgendes geschehen:
Verwenden des benachbarten Geschwister -Selektors (), dem Etikett, das sofort kommt.
Verwenden des allgemeinen Geschwisterauswahls das Ansichtsfenstersowohl der angrenzende Geschwisterauswahl als auch der allgemeine Geschwisterauswahl sind hier unverzichtbar, da diese Technik ohne sie nicht funktioniert.
Lassen Sie mich Sie an den HTML -Code für die Optionsfelder erinnern:
<span>/* we don't want the input fields to appear, all we need is the labels */ </span><span>input<span><span>[type="checkbox"]</span>, input<span>[type="radio"]</span></span> { </span> <span>position: absolute; </span> <span>visibility: hidden; </span><span>} </span> <span><span>.settings-box-element</span> { </span> <span>z-index: 10; </span><span>}</span>
Der Hintergrund, den wir ändern werden, ist der Hintergrund des Main-Wrapper-Elements. Hier ist das CSS:
<span><!-- the gear icon that opens the box when you click on it --> </span><span><span><span><input</span> id<span>="settings-btn"</span> class<span>="settings-btn"</span> type<span>="checkbox"</span>></span> </span><span><span><span><label</span> for<span>="settings-btn"</span> class<span>="settings-box-element"</span>></span><span><span></label</span>></span></span>
Sie können sehen, dass wir in der HTML 4 Eingabeelemente von Typ = "Radio" und 4 Labels haben. Wenn eines der Beschriftungen angeklickt wird, wird die Eingabe, die dieser bestimmten Etikett zugeordnet ist, ausgewählt und daher mit der geprüften Pseudoklasse übereinstimmt. Je nachdem, auf welcher Etikett geklickt wird, wird einer der oben genannten vier Stile auf die Hauptverpackung angewendet.
Für das Element anzeigen/ausblenden verwende ich ein Kontrollkästchen:
<span><span>.settings-btn + label</span> { </span> <span>position: fixed; </span> <span>top: 130px; </span> <span>right: 0; </span> <span>display: block; </span> <span>width: 35px; </span> <span>color: #e83737; </span> <span>text-align: center; </span> <span>background: #fff; </span> <span>cursor: pointer; </span><span>}</span>
Und hier ist das CSS:
<span><!-- the white box that contains the buttons --> </span><span><span><span><div</span> class<span>="buttons-wrapper settings-box-element"</span>></span><span><span></div</span>></span></span>
In diesem Fall sagen wir dem Browser, das Element mit und festlegen, dass es auf die Anzeige angezeigt wird, wenn der Benutzer auf die zugehörige Beschriftung klickt, wodurch das Kontrollkästchen ausgewählt wird.
Es gibt viele andere Dinge, die Sie mit dieser Auswahltechnik tun können, und die Grenze ist Ihre eigene Kreativität. Wenn diese Technik für Sie neu ist, hoffe ich, dass dieser Artikel als Ausgangspunkt für Sie dienen kann, um mit anderen Möglichkeiten zu experimentieren.
unten finden Sie die abgeschlossene Demo:
Siehe den Stift A Style Switcher mit reinem CSS mit: Überprüfung von SitePoint (@sinepoint) auf CodePen.
Das obige ist der detaillierte Inhalt vonErstellen eines Stilschalters mit reinem CSS mit: Überprüfung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!