CSS zur Realisierung der Einzelauswahl-Faltmenüfunktion

CSS zur Realisierung der Einzelauswahl-Faltmenüfunktion

Führen Sie kein Front-End-UI-Framework ein, es sei denn, dies ist unbedingt erforderlich, da HTML5 und CSS3 die meisten Funktionen bereits implementieren können, z. B. die vorherige Ausgabe von "CSS zum Erreichen des einfachsten Switches".

dca0a8cfcb26d3cd87aed4ceeceee3b4.png

Allerdings sind viele Leute in der Denkweise noch immer im Web 2.0-Zeitalter gefangen und verwenden zur Erstellung der Benutzeroberfläche verschiedene Bibliotheken, was zu aufgeblähten Webseiten führt. Heute zeige ich Ihnen, wie Sie mit reinem CSS ein Single-Select-Faltmenü implementieren, ohne dass JavaScript erforderlich ist. Akkordeons ähneln Registerkarten. Logischerweise handelt es sich bei beiden um Einzelauswahlfelder, mit der Ausnahme, dass Akkordeons im Allgemeinen vertikal gestapelt sind, während Registerkarten horizontal angeordnet sind.

873ecdccbd4a9eda8905fa3dda8a95f3.gif

Registerkarten:

6af435a8d5daf3680c52d09d86cf2254.gif

Da es sich um eine einzelne Auswahl handelt, können Sie zur Implementierung das Optionsfeld <input type="radio">verwenden. Erstens verwendet das übergeordnete Element dieser Optionsfeldgruppen <form>, da <form> die Änderungen der Schaltflächengruppe überwachen und über das Namensattribut auch direkt die RadioNodeList-Liste abrufen und den Wert ändern kann. Dies ist sehr praktisch und es müssen keine anderen CSS-Selektoren festgelegt werden. Der HTML-Code dieses Klappmenüs lautet also wie folgt:

<Formular-ID="Formular">
    <Eingabetyp="Radio" Name="Collapse">
    <div></div>
 
    <Eingabetyp="Radio" Name="Collapse">
    <div></div>

    <Eingabetyp="Radio" Name="Collapse">
    <div></div>
</form>

Legen Sie eine ID für das <form> fest, damit es direkt über window[id] gefunden werden kann. Das Namensattribut jedes <radio> muss konsistent sein, und dann erhalten Sie die Radiogruppe über form[name]. form[name].value ist der Wert der aktuell ausgewählten Schaltfläche, der den Titel der Minimierungsschaltfläche darstellt. Auf jedes <radio> folgt ein <div>, das den Inhalt des erweiterten Menüs darstellt. Aber das Standard-<radio> sieht so aus:

3734ce405520be5e763445ce517388d4.gif

Oder verwenden Sie zuerst appearance: none, um den Standardstil wie oben gezeigt zu deaktivieren, verwenden Sie dann ::before als Namen auf der linken Seite der Schaltfläche (lesen Sie das Value-Attribut), ::after als kleinen Pfeil auf der rechten Seite (die Zeichen > und v) und verwenden Sie das Attribut :checked, um den reduzierten Status anzuzeigen.

Eingabe[Typ="Radio"] {       
      Cursor: Zeiger;
      Aussehen: keines;
      Anzeige: Block;
}
 
 
Eingabe[Typ="Radio"]::vor {
      Inhalt: attr(Wert);
}
 
 
Eingabe[Typ="Radio"]::nach {       
      schweben: rechts;
      Inhalt:">";
}
 
 
Eingabe[Typ="Radio"]:aktiviert::nach {
      Inhalt: "v";
}

Bei <div> ist es standardmäßig ausgeblendet und nur das <div> hinter dem ausgewählten <radio> wird angezeigt. Was die Faltanimation betrifft, hängt es von Ihren Anforderungen ab. Für mich wäre es ohne Animation erfrischender.

Eingabe[Typ="Radio"] + div {
      Anzeige: keine;
}
 
 
Eingabe[Typ="Radio"]:aktiviert + div {
      Anzeige: Block;
}

Oben sehen Sie das grundlegende Layout. Mit ein wenig zusätzlichem Styling wird daraus:

192e7d623a0ddedcc4811c5fab7db066.png

Aufgrund der Eigenschaften von <radio> kann das Menü jedoch nicht umgekehrt werden. Nachdem das Menü erweitert wurde, können Sie es nur durch Klicken auf ein anderes Menüelement ausblenden. Das ist natürlich in Ordnung. Wenn Sie die Funktion der umgekehrten Menüauswahl implementieren müssen, müssen Sie das zuletzt erweiterte Menüelement aufzeichnen und bei jedem Klickereignis feststellen, ob es sich um einen wiederholten Klick handelt:

// für jedes <radio>
radio.onclick = () => {
  wenn (Fenster.Radio === Radio) {
    Eingabe.geprüft = falsch;
    Fenster.Radio = null;
  } sonst window.radio = radio;
};

Dies implementiert die inverse Auswahlmöglichkeit des Single-Select-Faltmenüs:

a92c5f3b16fb6ea25513791832948417.gif

Übrigens ist der unordentliche Text im Bild das Ergebnis einer Verschlüsselung des Originaltexts (aus Datenschutzgründen). Sie können eine Zeichenfolge mit dem folgenden Code kodieren:

string.split('').sort(() => Math.random() - 0.5).join('')

Dies ist das Ende dieses Artikels über die Implementierung der Single-Choice-Faltmenüfunktion mit CSS. Weitere relevante CSS-Single-Choice-Faltmenüinhalte finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

<<:  5 Möglichkeiten, den diagonalen Kopfzeileneffekt in der Tabelle zu erzielen

>>:  Detaillierte Erläuterung des Prozessmanagements im Linux-System

Artikel empfehlen

MySQL Multi-Instance-Bereitstellungs- und Installationshandbuch unter Linux

Was ist MySQL Multi-Instance Einfach ausgedrückt ...

Ist ein Design, das den Designspezifikationen entspricht, ein gutes Design?

In den letzten Jahren meiner Karriere habe ich an...

Miniprogramm zur Implementierung der Rechnerfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung zu Drag-Time und Drag-Case in JavaScript

Inhaltsverzeichnis DragEvent-Schnittstelle Übersi...

JavaScript-Code zur Implementierung eines einfachen Rechners

In diesem Artikelbeispiel wird der spezifische Ja...

HTML lädt dynamisch CSS-Stile und JS-Skripte – Beispiel

1. Dynamisches Laden von Skripten Mit der wachsen...

Beispielcode zur Implementierung eines Musikplayers mit nativem JS

Dieser Artikel stellt hauptsächlich den Beispielc...

Detailliertes Tutorial zur Installation von MySQL 8.0.20 auf CentOS7.8

1. MySQL-Software installieren Laden Sie das offi...

nginx+tomcat-Beispiel für den Zugriff auf das Projekt über den Domänennamen

Ich wollte wissen, wie ich mit einem Domänennamen...

Tutorial zur Installation von MySQL 5.6 auf CentOS 6.5

1. Laden Sie das RPM-Paket für Linux herunter htt...

10 Best Practices zum Erstellen und Warten großer Vue.js-Projekte

Inhaltsverzeichnis 1. Nutzen Sie Slots, um Kompon...