Guten Tag in die Runde,
man hat mir erzählt, dass hier im Forum immer sehr freundlich geholfen wird, deshalb komme ich mit meinem (leider recht spezifischen) Problem mal zu euch!
Ich arbeite an meinem ersten größeren HTML/CSS Projekt und komme jetzt leider nicht mehr um JavaScript herum.
Ich möchte für die Uni (bin Biologiestudent) einen Bestimmungsschlüssel umsetzen:
Ich habe zwei div-Boxen. In der linken Box ist Text. Die rechte soll Bilder passend zum Text anzeigen.
Im Text möchte ich einzelne Wörter anklickbar machen, die ein Bild hinterlegt haben. Steht also im Text links z.B. "Das Tier hat vier Beine", soll man das Wort "vier" anklicken können und in der rechten div-Box erscheint dann ein Beispielbild wie ein Tier aussieht, das vier Beine hat:
Da ich das ganze ohne Vorkenntnisse autodidaktisch mache, habe ich mit Hilfe von Chatbots und YouTube Videos folgenden Code zusammengebastelt. Ich habe aber die Befürchtung, dass der schlecht ist und so niemals von einer Person mit Ahnung geschrieben werden würde:
HTML/CSS:
JavaScript: (im Code steht oft "hoverable word", weil ich erst mit MouseOver gearbeitet habe. Nun soll das Bild aber erst nach einem klick erscheinen)
Es funktioniert, dass der Code das entsprechende Bild anzeigt, wenn ich auf das Wort klicke. Wenn ich wo anders hin klicke, verschwindet es wieder. So weit, so gut.
Nun meine Fragen:
Ich verstehe, dass das eine sehr spezifische Frage ist. An diesem Projekt sitze ich seit vielen Wochen in jeder Minute meiner Freizeit. Ich habe bei absolut Null Kenntnissen zu HTML/CSS/JavaScript angefangen und deshalb sehr viel Zeit investieren müssen, um bis hier hin zu kommen. Ich wäre euch enorm dankbar, wenn mir jemand helfen könnte, da diese Funktion für mein Projekt wirklich wichtig ist.
Danke schon mal im Voraus!!
Paul
man hat mir erzählt, dass hier im Forum immer sehr freundlich geholfen wird, deshalb komme ich mit meinem (leider recht spezifischen) Problem mal zu euch!
Ich arbeite an meinem ersten größeren HTML/CSS Projekt und komme jetzt leider nicht mehr um JavaScript herum.
Ich möchte für die Uni (bin Biologiestudent) einen Bestimmungsschlüssel umsetzen:
Ich habe zwei div-Boxen. In der linken Box ist Text. Die rechte soll Bilder passend zum Text anzeigen.
Im Text möchte ich einzelne Wörter anklickbar machen, die ein Bild hinterlegt haben. Steht also im Text links z.B. "Das Tier hat vier Beine", soll man das Wort "vier" anklicken können und in der rechten div-Box erscheint dann ein Beispielbild wie ein Tier aussieht, das vier Beine hat:
Da ich das ganze ohne Vorkenntnisse autodidaktisch mache, habe ich mit Hilfe von Chatbots und YouTube Videos folgenden Code zusammengebastelt. Ich habe aber die Befürchtung, dass der schlecht ist und so niemals von einer Person mit Ahnung geschrieben werden würde:
HTML/CSS:
HTML:
<style>
#image-popup { /* specifications for image popup by mouse hovering */
position: absolute;
display: none;
background-color: white;
border: 1px solid black;
padding: 1px;
margin-left: 40px
</style>
<div id="left-box">
Das Tier hat <span class="hoverable-word" data-img="img/Vierbeiner.jpeg"> vier</span> oder mehr Beine.
</div>
<div id="right-box">
<div id="image-popup"></div>
</div>
JavaScript: (im Code steht oft "hoverable word", weil ich erst mit MouseOver gearbeitet habe. Nun soll das Bild aber erst nach einem klick erscheinen)
Javascript:
<script>
document.addEventListener('DOMContentLoaded', function() {
const hoverableWords = document.querySelectorAll('.hoverable-word');
hoverableWords.forEach(word => {
word.addEventListener('click', function() {
const imgSrc = this.getAttribute('data-img');
const imgPopup = document.getElementById('image-popup');
const textBlockWidth = document.querySelector('.text-block').offsetWidth; // Get the width of the text block and safe it in a variable
imgPopup.innerHTML = `<img src="${imgSrc}" alt="Hovered Image" style="width: ${textBlockWidth}px; height: auto;">`; // set width of displayed image as the same as the width of the text blocks.
imgPopup.style.display = 'block';
});
document.addEventListener('click', function(event) {
if (!event.target.classList.contains('hoverable-word')) {
document.getElementById('image-popup').innerHTML = '';
document.getElementById('image-popup').style.display = 'none';
}
});
});
});
</script>
Es funktioniert, dass der Code das entsprechende Bild anzeigt, wenn ich auf das Wort klicke. Wenn ich wo anders hin klicke, verschwindet es wieder. So weit, so gut.
Nun meine Fragen:
- Ist der Code so erst mal akzeptabel?
- Ist es möglich, einem Wort mehrere Bilder zu hinterlegen? Ich stelle mir da kleine Pfeilchen (siehe Abb.) neben dem Bild vor, mit denen man dann durch die verschiedenen Fotos wechseln kann, die z.B. zum Wort "vier" passen.
- Wie kennzeichne ich die "klickbaren" Wörter im Text? Ich hätte sie sehr gern blau, wie im Beispiel-Screenshot.
Ich verstehe, dass das eine sehr spezifische Frage ist. An diesem Projekt sitze ich seit vielen Wochen in jeder Minute meiner Freizeit. Ich habe bei absolut Null Kenntnissen zu HTML/CSS/JavaScript angefangen und deshalb sehr viel Zeit investieren müssen, um bis hier hin zu kommen. Ich wäre euch enorm dankbar, wenn mir jemand helfen könnte, da diese Funktion für mein Projekt wirklich wichtig ist.
Danke schon mal im Voraus!!
Paul
Zuletzt bearbeitet: