Text Sichtbar machen wenn Elemente angeklickt werden (Tabindex? Radio?)

Mondgesang

Lieutenant
Registriert
Dez. 2023
Beiträge
849
Liebe Freunde,

auf meiner Website habe ich 3 Bilder von Personen. Dazu habe ich 3 Texte die zu der jeweiligen Person gehören. Ich möchte, dass beim Besuch der Seite zunächst alle Texte ausgeblendet sind. Nur beim Klick auf ein Bild soll der dazu gehörige Text eingeblendet werden. Beim Klick auf ein anderes Bild soll der Text verschwinden und der wiederum DA hinzugehörige Text erscheinen.

Dies konnte ich dank eines users von Stack Overflow gut nachbauen: https://jsfiddle.net/q57et2sL/

Hier sind zwar nur zwei Optionen anklickbar aber ok. Das kann man ja beliebig ausweiten. Ich habe dies auch schon erfolgreich auf meiner Website ausgebaut.

ALLERDINGS setzt diese Methode voraus, dass alle Elemente, also sowohl die Bilder als auch die dazugehörigen Texte innerhalb dieses einen divs sind, das sie umschließt. Warum weiß ich nicht. Ich weiß bloß, dass es NICHT klappt, wenn sie nicht alle darin sind. Und da ist mein Problem.

Meine Bilder auf der Seite befinden sich in einem <div class="staff-row"> damit sie schön passend angeordnet sind. Die Texte werden darunter eingeblendet. Alleine diese Trennung sorgt dafür dass diese Methode nicht mehr funktioniert.

Dann aber habe ich mir gedacht es kann doch nicht SO schwer sein und mir fielen die Radio Buttons ein. Die haben ja die Eigenschaft dass immer nur einer fokussiert oder checked sein kann während die anderen es nicht sind.

Kann ich da nicht auf die texte die ja in <div class="hiddendiv"> stecken und in CSS .hiddendiv {display: none} haben einfach sagen dass wenn radiobutton 1 checked ist oder focus hat (weiß nicht wie Radiobuttons in CSS anvisiert werden; bei tabindex war das focus) dass dann der dazugehörige Text dann display: block bekommt? Wo auch IMMER der sich bei mir auf der Seite befindet?

Beispiel

Radiobutton1 class="button1"<img>
Radiobutton2 class="button2"<img>
Radiobutton3 class="button3"<img>

<div class="hiddendiv" id="mitarbeiter1">
<p>...</p>
</div>

<div class="hiddendiv" id="mitarbeiter2">
<p>...</p>
</div>

<div class="hiddendiv" id="mitarbeiter3">
<p>...</p>
</div>



CSS

.hiddendiv {
display: none;
}

.button1:focus #mitarbeiter1 {
display: block;
}

.button2:focus #mitarbeiter2 {
display: block;
}

.button3:focus #mitarbeiter3 {
display: block;
}


Sowas in der Art stelle ich mir vor. Ich habe das Gefühl dass ich so weit von der Lösung nicht sein kann.

Soeben fand ich auch diese Anleitung: https://enmascript.com/articles/2019/09/26/toggle-content-on-click-without-javascript/

Hier kann man auch erst versteckten Text per Click sichtbar machen. Was mich hier allerdings stört ist dass man den text wieder manuell einklappen muss.
 
Mit JS easy zu machen, warum dieses Gekrebse "ohne JS"?
 
Warum begeben sich Leute mit solchen Fragen immer noch in ein Forum wo sie direkt angepampt werden ... die Lösung heist auch hier ChatGPT und da kann man sich sogar alles ganz genau erklären lassen, wie und warum es funktioniert, oder eventuell auch warum nicht.
 
Janush schrieb:
Warum begeben sich Leute mit solchen Fragen immer noch in ein Forum wo sie direkt angepampt werden
Warum begeben sich Leute in einen solchen Thread nur um zu pampen? Ich habe hier nirgendwo in den Forenregeln gelesen, dass man mit dieser Frage lieber zu ChatGPT gehen soll weil man hier nur angepampt würde.

Vielleicht sollte einer der Admins oder Moderatoren so eine Eingangszeile programmieren, die das erkennt und sofort eine Warnung ausspricht, diesen Thread nicht zu erstellen, weil es den Puls mancher Benutzer in gefährliche Höhen schießen lässt.

Janush schrieb:
Gibt es eine Art Katalog hier im Forum, wo so Fragen-Kategorien aufgeführt sind mit Farbmarkierungen von Grün bis Rot, die die Gefahr des Angepamptwerdens anzeigen? Hatte ich bislang nicht gesehen. Vielleicht habe ich auch einfach nicht intensiv genug geschaut.
 
Mondgesang schrieb:
Warum begeben sich Leute in einen solchen Thread nur um zu pampen?
Mein Kommentar war nicht gegen dich gerichtet, eher gegen das Forum. Du bekommst schnellere und bessere Ergebnisse, wenn du Chat fragst ... aber das kannst du ja machen wie du willst ... wenn du darauf stehst belehrt zu werden :-)

Ich sehe deine Frage eher als eine Einsteigerfage, aber ich sehe in dem Thread keine Lösung.
 
Mondgesang schrieb:
Nur beim Klick auf ein Bild soll der dazu gehörige Text eingeblendet werden. Beim Klick auf ein anderes Bild soll der Text verschwinden und der wiederum DA hinzugehörige Text erscheinen.

Dafür gibt es JavaScript.

Mondgesang schrieb:
die ja in <div class="hiddendiv"> stecken und in CSS .hiddendiv {display: none} haben einfach sagen

Verstecke Elemente/Inputs sind gar nicht so unüblich und werden überwiegend bei Formularen eingesetzt, für deine Frage (oder Problem) sind sie aber ungeeignet.

Hier ist die Lösung:

Javascript:
document.getElementsByClassName('staff-row')[0]
        .addEventListener('click', function (event) {
            // do something
        });

Und das hat mich nun eine Minute Recherche im Internet gekostet:

https://stackoverflow.com/questions/20772954/add-click-event-on-div-tag-using-javascript

So viel "Eigeninitiative" hätte man von dir selber erwartet; besonders, nachdem es den Hinweis auf JS schon gegeben hatte.
 
Janush schrieb:
Mein Kommentar war nicht gegen dich gerichtet, eher gegen das Forum
So habe ich das auch aufgefasst, keine Sorge. Es ist schon erstaunlich. Bin ja schon seit einigen Jahren hier dabei (bloß nicht mit diesem Account). Alle wettern sie gegen die RTFM-Fraktion von milinanten Linuxern aber wehe man stellt eine Frage.


"All modern browsers come with built-in support for JavaScript, and it has enabled JavaScript by default. Frequently, you may need to enable or disable this support manually. This chapter explains how to turn JavaScript support on and off in your browsers: Chrome, Microsoft Edge, Firefox, Safari, and Opera."

Die Tatsache dass es einige Browser geben soll die JS nicht out of the box aktiviert haben, verleitet mich, möglichst darauf zu verzichten.
 
Mondgesang schrieb:
Die Tatsache dass es einige Browser geben soll die JS nicht out of the box aktiviert haben, verleitet mich, möglichst darauf zu verzichten.
Heutzutage ganz auf JS zu verzichten, ist Quatsch. Praktisch jede Website funktioniert nur noch mit JS.
 
Mondgesang schrieb:
Die Tatsache dass es einige Browser geben soll die JS nicht out of the box aktiviert haben, verleitet mich, möglichst darauf zu verzichten.
Und welche Browser wären das? Ich glaube kaum das Benutzer mit dem Tor-Browser auf deine Webseite gehen.
 
  • Gefällt mir
Reaktionen: CyborgBeta
maxpayne80 schrieb:
Mit JS easy zu machen, warum dieses Gekrebse "ohne JS"?
Weil es Leute gibt die JS deaktiviert haben?

CyborgBeta schrieb:
Heutzutage ganz auf JS zu verzichten, ist Quatsch. Praktisch jede Website funktioniert nur noch mit JS.
Muss man nicht, aber jede Seite sollte auch ohne JS funktionieren, tut sie das nicht ist es ein schlechter Stil..es gibt genug Leute die aktivieren JS erst wenn sie sich eine Seite erst einmal genau angeschaut haben. ich z.B. möchte nicht von einer Seite die ich das erste mal ansurfe mit PopUps und Co erschlagen werden, und das Tracking und Co via JS aktiviert werden weiß du sicherlich auch..das vergessen irgendwie die letzten Jahre immer mehr Webdesigner.
 
  • Gefällt mir
Reaktionen: RegShoe und Mondgesang
Guru-Meditation schrieb:
Muss man nicht, aber jede Seite sollte auch ohne JS funktionieren,
Konvention ist das nicht, aber man sollte ein "Grundgerüst" sehen.

Aber, wobei es hier rauf ankommt, ist, dass seine Frage nur mithilfe von JS umsetzbar ist ... wie jetzt auch schon viele geschrieben haben.

Guru-Meditation schrieb:
die aktivieren JS erst wenn sie sich eine Seite erst einmal genau angeschaut haben
Was aber auch Quatsch ist, weil man malicious Websites nicht am reinen HTML bzw. der Oberfläche erkennt. Das kann nur der Browser oder eine AV-Lösung sicherstellen.

Beispiel: https://www.virustotal.com/gui/home/url

Erst dann kann man eigentlich davon ausgehen, dass eine Website "sicher" ist.
 
Nun ja, sagen wirs mal so. Ich (Asche auf mein Haupt) ging davon aus dass das eigentlich nicht zu viel verlangt wäre dass es nur mittels HTML/CSS umsetzbar ist, weil ich auch einfach sehe was für wunderschöne und funktionale Navigationen man NUR mit HTML/CSS bauen kann. Bei JSFiddle gibt es da so atemberaubend geile Sachen, wie sich was verhält, wenn man hier und da drüber hovert, anklickt, unsichtbar wird zu sichtbar etc etc. Da geht schon echt einiges.

Daher dachte ich es wäre ein Klacks zu sagen klick Bild A an und Text A wird angezeigt. Klick Bild B an und Text A wird wieder zugeklappt und Text B wird angezeigt.
 
Mondgesang schrieb:
weil ich auch einfach sehe was für wunderschöne und funktionale Navigationen man NUR mit HTML/CSS bauen kann
Ehm, nein. Ohne JS bewegt sich da nichts. (Ich gehe davon aus, du meinst Sidebar/-Panel, Pagination oder Breadcrumbs).

Vielleicht erstmal mit den absoluten Basics auseinandersetzen.
 
Mondgesang schrieb:
Daher dachte ich es wäre ein Klacks zu sagen klick Bild A an und Text A wird angezeigt. Klick Bild B an und Text A wird wieder zugeklappt und Text B wird angezeigt.

Das geht mit reinem HTML..hier ein grobes Beispiel...

HTML:
<div>
 <details name="content">
  <summary><img src="bild1" width="200" height="20" alt=""></summary>
   <p>Text der angezeigt wird wenn Bild1 angeklickt wird</p>
 </details>
 <details name="content">
  <summary><img src="bild2" width="200" height="20" alt=""></summary>
   <p>Text der angezeigt wird wenn das Bild2 angeklickt wird, der erste Text wird dabei automatisch geschlossen</p>
 </details>
</div>

Mit CSS kannst du das dann natürlich alles noch verfeinern, positionieren usw.

Ergänzung ()

CyborgBeta schrieb:
hm, nein. Ohne JS bewegt sich da nichts

Das ist aber Quatsch...
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Mondgesang
Na ja, das Bild in einem Spoiler zu verstecken, ist eher ein Workaround.
 
CyborgBeta schrieb:
Ehm, nein. Ohne JS bewegt sich da nichts.
Das erklär mal bitte der Sprache CSS die on hover Positionen von Objekten verändert, sie vergrößert und mittels transiton-Zeiten das ganze auch sanft und geschmeidig aussehen lässt. Und wozu soll sich da überhaupt was bewegen? Mir gehts ums Verstecken und Anzeigen bei bestimmten Aktionen des Benutzers.
 
Zuletzt bearbeitet:
Zurück
Oben