Verbindung von Imagemap und Bild tauschen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verbindung von Imagemap und Bild tauschen

    HI Leute,

    weiß jemand von euch, ob man Folgendes in HTML realisieren kann:

    ein großes Bild auf einer Website, auf dem mehrere Personen zu sehen sind;
    sobald man mit der Maus auf das Bild fährt, wird alles schwarz-weiß(also grautöne);
    wenn man jetzt auf eine der Personen fährt, wird das ganze Bild getauscht, sodass nur diese Person farbig wird;
    außerdem kann man, wenn man auf die Person klickt, auf eine Seite, auf der eine Beschreibung dieser Person ist, gelangen

    wäre das möglich?
    Cuiusvis hominis est errare, nullius nisi insipientis in errore perseverare.
    Irren ist menschlich, doch im Irrtum zu verharren ist ein Zeichen von Dummheit.

    -Cicero
  • Hi,

    also ich denk mit ner Imagemap wirst Du da große Probleme haben, weil Du diese Polygone nur schwer nachbilden kannst. Ich würde versuchen, Divs über die Personen zu legen und das Gruppenbild dann immer je nachdem in welchem Div deine Maus grad ist austauschen.

    Grob so:
    • Hintergrundbild
    • absolute positionierte Divs mit onmouseover / onmouseout und onclick Ereignissen:
      • onclick = Öffnen der Detailseite
      • onmouseover = Tausch des Hintergrundbild mit dem Hintergrundbild, auf dem die anderen Personen nicht farbig sind + Overlay aufrufen, was den Rest "ausgraut"
      • onmouseout = Tausch des Hintergrundbildes in Ursprungszustand



    Bin aber für andere Anregungen oder Ideen offen :)
  • könnt ich mal bitte die Syntax von den ganzen Befehlen haben?
    und wie soll ich die Div-tags über die Personen legen?
    Cuiusvis hominis est errare, nullius nisi insipientis in errore perseverare.
    Irren ist menschlich, doch im Irrtum zu verharren ist ein Zeichen von Dummheit.

    -Cicero
  • huhu,

    basically:

    HTML-Quellcode

    1. <html>
    2. <head>
    3. <title></title>
    4. <style type="text/css">
    5. body {
    6. background-image: url(/bilder/hintergrungbild.jpg) no-repeat;
    7. margin: 0;
    8. padding: 0;
    9. }
    10. div {
    11. position: absolute;
    12. cursor: pointer;
    13. }
    14. #person1 {
    15. top: 10px;
    16. left: 200px;
    17. width: 87px;
    18. height: 150px;
    19. background-color: #ADADAD;
    20. }
    21. #person2 {
    22. top: 87px;
    23. left: 30px;
    24. width: 120px;
    25. height: 80px;
    26. background-color: #232523;
    27. }
    28. </style>
    29. <script type="text/javascript">
    30. function wechselHintergrund(id) {
    31. if(id) {
    32. document.body.backgroundImage = 'url(/bilder/hintergrungbild_'+id+'.jpg) no-repeat;';
    33. } else {
    34. document.body.backgroundImage = 'url(/bilder/hintergrungbild.jpg) no-repeat;';
    35. }
    36. }
    37. function oeffnePerson(name) {
    38. document.location.href = '/'+name+'.html';
    39. }
    40. </script>
    41. </head>
    42. <body>
    43. <div id="person1" onmouseover="wechselHintergrund(this.id);" onmouseout="wechselHintergrund();" onclick="oeffnePerson('peter');"> </div>
    44. <div id="person2" onmouseover="wechselHintergrund(this.id);" onmouseout="wechselHintergrund();" onclick="oeffnePerson('antje');"> </div>
    45. </body>
    46. </html>
    Alles anzeigen


    Wie Du siehst, gibt es 2 Divs, einmal mit id="person1" & einmal mit id="person2". Oben siehst Du den Teil

    Quellcode

    1. #person1 {
    2. top: [B]10px[/B];
    3. left: [B]200px[/B];
    4. width: [I] 87px;[/I]
    5. height: [I]150px[/I];
    6. [U]background-color: #ADADAD;[/U]
    7. }

    Über die Werte top und left kannst Du einstellen, wo das Div nachher erscheint. Der Einfachkeit halber habe ich noch eine Hintergrundfarbe eingestellt, damit Du siehst, wo das Div gerade ist ;) Die solltest Du rausnehmen, wenn Du alle Divs posistioniert hast!
    Dann musst Du noch die Größe des Divs einstellen. Jede Person kann auf deinem Hintergrundbild ja unterschiedlich groß sein!
    Mit diesen 4 Werten musst Du also für jede Person ein bisschen spielen, bis alles an der richtigen Stelle ist. Danach kannst Du die Zeile mit background-color entfernen.

    Gut. Dann zum Rest der Struktur. Du brauchst einmal das Basishintergrundbild und für jede Person ein Hintergrundbild, auf dem die entsprechende Person in Farbe dargestellt ist und der Rest nicht. Das Basishintergrundbild legst Du in den Unterordner "/bilder/" mit dem Namen "hintergrungbild.jpg". Die anderen Hintergrundbilder liegen ebenfalls in diesem Ordner, aber mit nem Namen "hintergrungbild_person1.jpg" oder "hintergrungbild_person2.jpg".
    Dieser Suffix person1 ist die ID von dem Div, das über der Person liegen soll. Deswegen musst Du es auch so nennen!

    Ansonsten gibts ja noch den Klick auf das Div:

    Quellcode

    1. <div id="person2" onmouseover="wechselHintergrund(this.id);" onmouseout="wechselHintergrund();" [B]onclick="oeffnePerson('[U]antje[/U]')[/B];"> </div>

    Wie Du sehen kannst, unterscheidet sich also nicht nur die id der Divs, sondern auch der Part in onclick. Ich habe hier die tatsächlichen Namen der Personen verwendet, da die HTML-Seiten für die Personen über Namen schöner sind... kann der Benutzer sich leichter merken als person1 :)
    Hier gilt einfach: eine HTML-Seite für den Benutzer mit dem Namen .html im Basisverzeichnis. Aus dem Beispiel gerade würde die Datei antje.html heissen.


    Hmm noch fragen? :)
  • danke für den code, aber der funktioniert nicht
    teilweise weiß ich jetzt auch warum:
    das Semikolon (;) hinter background-image fehlt
    nur das bild wechseln funktioniert noch nicht
    es ist doch möglich, dass ich statt "#person1" "#antje" schreib, wenn ich dann auch unten die ID von "person1" in "antje" umschreib, oder?
    Cuiusvis hominis est errare, nullius nisi insipientis in errore perseverare.
    Irren ist menschlich, doch im Irrtum zu verharren ist ein Zeichen von Dummheit.

    -Cicero
  • Hi,
    das ist nur ein kleiner JS-Fehler im Code. "backgroundImage" ist eine Eigenschaft vom style des HTML-Objekts, muss also so heißen

    Quellcode

    1. document.body.style.backgroundImage


    Aber es gibt auch noch 2 CSS-Fehler. Einmal sollten url-Angaben in Hochkommerta oder Anführungsstriche stehen (eher ein unbedeutener Fehler) und no-repeat ist eine Eigenschaft von background oder background-repeat, aber nicht von background-image.

    Also müsste es so funktionieren:

    HTML-Quellcode

    1. <html>
    2. <head>
    3. <title></title>
    4. <style type="text/css">
    5. body {
    6. background-image: url('/bilder/hintergrungbild.jpg');
    7. background-repeat: no-repeat;
    8. margin: 0;
    9. padding: 0;
    10. }
    11. div {
    12. position: absolute;
    13. cursor: pointer;
    14. }
    15. #person1 {
    16. top: 10px;
    17. left: 200px;
    18. width: 87px;
    19. height: 150px;
    20. background-color: #ADADAD;
    21. }
    22. #person2 {
    23. top: 87px;
    24. left: 30px;
    25. width: 120px;
    26. height: 80px;
    27. background-color: #232523;
    28. }
    29. </style>
    30. <script type="text/javascript">
    31. function wechselHintergrund(id) {
    32. if(id) {
    33. document.body.style.backgroundImage = 'url("/bilder/hintergrungbild_'+id+'.jpg")';
    34. } else {
    35. document.body.style.backgroundImage = 'url("/bilder/hintergrungbild.jpg")';
    36. }
    37. }
    38. function oeffnePerson(name) {
    39. document.location.href = '/'+name+'.html';
    40. }
    41. </script>
    42. </head>
    43. <body>
    44. <div id="person1" onmouseover="wechselHintergrund(this.id);" onmouseout="wechselHintergrund();" onclick="oeffnePerson('peter');"> </div>
    45. <div id="person2" onmouseover="wechselHintergrund(this.id);" onmouseout="wechselHintergrund();" onclick="oeffnePerson('antje');"> </div>
    46. </body>
    47. </html>
    Alles anzeigen


    Aber sonst reife Leistung, die_dani85 (also generell im HowTo)

    Gruß
    Broken Sword

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Broken Sword ()