Ist es möglich, Text über einen Link nur mit CSS ein- und auszublenden - ohne JavaScript?
Zum Beispiel: Auf dieser Seite
Beachten Sie den Link "Mehr". Wenn Sie darauf klicken, wird der Text ausgeblendet. Dieses spezielle Beispiel ist JavaScript, aber ich bin nicht sicher, ob es mit reinem CSS möglich ist.
Antworten:
Es gibt das
<details>
Element , das noch nicht in Edge integriert ist:Ich bin mir nicht sicher, wie schwierig es ist, über alle Browser hinweg einheitlich zu stylen.
Es gibt einen allgemeinen Checkbox-Hack (bei dem das Kontrollkästchen ausgeblendet und das Etikett so gestaltet werden kann, dass es wie alles aussieht):
aber es ist nicht immer (vielleicht jemals? hmm) angemessen, es zu benutzen; Normalerweise können Sie einfach auf die Anzeige des Inhalts zurückgreifen, wenn JavaScript nicht geladen werden kann, und den Link "Mehr" darauf haben.
Es gibt auch
:target
, aber es ist wahrscheinlich noch weniger angemessen, da es schwieriger ist, den Schließmechanismus einzubauen.quelle
:checked
oder:target
niemals angemessen wären. Sie existieren schließlich.id
Anforderung vorstellen , die die Verwendung für dynamische Seiten erschwert. Kein guter Grund, obwohl IMO - dieses versteckte Kontrollkästchenmuster ist ziemlich alt, nicht schwer zu verstehen, und Sie können in dynamischen Situationen einfach einen Hash als Teil der ID verwenden.:target
- der Inhalt verschwindet, wenn Sie irgendwo anders verlinken.:checked
bedeutet, dass Sie innerhalb der Erweiterung keine Verknüpfung herstellen können. Wenn Sie das Kontrollkästchen ausblenden, müssen Sie die Beschriftung tastaturfokussierbar machen. Da für beide Funktionen der Inhalt bereits vorhanden sein muss, würde ich ihn standardmäßig anzeigen und in den meisten Fällen JavaScript verwenden, um die Verbesserung bereitzustellen.Ja , das ist mit reinem CSS möglich. Sie können auf ein Element klicken, indem Sie das
:checked
Attribut eines Kontrollkästchens in Kombination mit<label>
demfor
Attribut eines Elements verwenden .Da das Kontrollkästchen kann nicht markiert , können Sie dies auf Sichtbarkeit ändern verwenden , indem Sie einfach
visibility: hidden
auf ein Element sich aus:checked
(sobald das Kontrollkästchen erneut angeklickt wird, diese Pseudo-Selektor ungültig sein, und der CSS - Selektor wird nicht mehr das Ziel übereinstimmen).Dies kann
<label>
unter Verwendung desfor
Attributs auf a erweitert werden, sodass Sie das Kontrollkästchen selbst vollständig ausblenden und Ihr eigenes Styling<label>
direkt auf das anwenden können .Im Folgenden wird der benachbarte Geschwisterkombinator (
+
) verwendet, um die Klasse umzuschalten,toggle
wenn auf das<label>
Element geklickt wird:quelle
Ja, Sie können dies problemlos nur mit CSS tun. Bitte beachten Sie den folgenden Code:
quelle
Sie können ein Kontrollkästchen ausblenden, es jedoch über das zugehörige
<label>
Element aktivieren / deaktivieren .Abhängig davon, ob das Kontrollkästchen aktiviert ist oder nicht, können Sie den zusätzlichen Text ausblenden / anzeigen und sogar den Text der Beschriftung von "Mehr" in "Weniger" ändern.
Ich habe einige zusätzliche Details in das CSS aufgenommen, damit die Absichten jeder Definition etwas klarer werden können.
1. Mit einem Schalter "Mehr" / "Weniger":
2. Mit der Schaltfläche "Mehr" oben und der Schaltfläche "Weniger" unten:
quelle
Technisch gesehen ist es möglich, die Sichtbarkeit von Text basierend auf dem Klicken auf eine Schaltfläche oder einen Link umzuschalten, wie unten gezeigt:
Trotzdem empfehle ich dringend, dass Sie sich mit JavaScript vertraut machen, da die Lösung mit JavaScript für so etwas viel einfacher ist und zusätzliche Flexibilität ermöglicht.
quelle
Ja, Sie können dies nur mit HTML und CSS tun.
quelle
Jetzt können Sie Text auch nur mit CSS ein- und ausblenden! Wenn Sie eine Texteingabe verwenden und Text basierend auf dem Status des Eingabefelds anzeigen / ausblenden möchten, können Sie die neue CSS-Pseudoklasse
:placeholder-shown
für<input>
oder verwenden<textarea>
. Hier ist ein Beispiel / eine Demo der oben genannten Pseudoklasse!:Hier ist der Link zu MDN-Dokumenten.
quelle
Vielleicht findet jemand diese Lösung intuitiver und einfacher zu implementieren. Die Mechanik dabei ist, dass der Link auf sich selbst abzielt und in diesem Fall einfach alles auswählen kann, was als nächstes im DOM kommt.
quelle
Verwenden
"display: none;" attribute.
quelle