JS: Erste Versuche einer "Gallerie" (Hover-Effekt)
Hi,
die letzten "Kritiken" haben mich dazu bewegt, meine Gallerievorstellung zu überarbeiten. Ich möchte sie nun per JS reallisieren. Folgender ist der aktuelle Stand:
Javaskript
Seitenquelltext
Die Bilder werden derzeit nebeneinander aufgereiht. Wenn man nun eine Sekunde über ein Bild verweilt, soll es vergrößert werden (also das große Original geladen). Ich bin nun (wie oben zu sehen) soweit, dass die entsprechende Funktion nach einer Sekunde ausgeführt wird. Nun habe ich folgende Probleme:
1. Wie kann ich nun das entsprechende Bild zentriert und groß laden?
2. Wie lasse ich das Bild wieder "verschwinden"? Ich hätte es ja fast per timer gemacht, aber ich möchte lieber, dass der User dies aktiv macht.
Vielen Dank schon mal für die Hilfe.
Gruß, Toast
die letzten "Kritiken" haben mich dazu bewegt, meine Gallerievorstellung zu überarbeiten. Ich möchte sie nun per JS reallisieren. Folgender ist der aktuelle Stand:
Javaskript
Spoiler
![]()
Javascript-Quelltext
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 function pichor() { this.aktiv = setTimeout("picture()", 1000); } function clearhor() { clearTimeout(this.aktiv); } function picver() { this.aktiv = setTimeout("picture()", 1000); } function clearver() { clearTimeout(this.aktiv); } function picture() { }
Seitenquelltext
Spoiler
![]()
PHP-Quelltext
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17$files = scandir($_SERVER['DOCUMENT_ROOT'].'/galerie/wir/hor/thumbs'); foreach ($files as $data) { if ($data != "." && $data != "..") { echo ' <a onmouseover="pichor()" onmouseout="clearhor()" href="http://www.diesite.com/galerie/wir/hor/'.$data.'" target="_blank" class="showhor">'; echo ' <img src="http://www.die site.com/galerie/wir/hor/thumbs/'.$data.'" alt="" class="imgwidth">'; echo ' </a>'; } } echo '<div class="clear"></div>'; $files = scandir($_SERVER['DOCUMENT_ROOT'].'/galerie/wir/ver/thumbs'); foreach ($files as $data) { if ($data != "." && $data != "..") { echo ' <a onmouseover="picver()" onmouseout="clearver()" href="http://www.diesite.com/galerie/wir/ver/'.$data.'" target="_blank" class="showver">'; echo ' <img src="http://www.diesite.com/galerie/wir/ver/thumbs/'.$data.'" alt="" class="imgwidth">'; echo ' </a>'; } }
Die Bilder werden derzeit nebeneinander aufgereiht. Wenn man nun eine Sekunde über ein Bild verweilt, soll es vergrößert werden (also das große Original geladen). Ich bin nun (wie oben zu sehen) soweit, dass die entsprechende Funktion nach einer Sekunde ausgeführt wird. Nun habe ich folgende Probleme:
1. Wie kann ich nun das entsprechende Bild zentriert und groß laden?
2. Wie lasse ich das Bild wieder "verschwinden"? Ich hätte es ja fast per timer gemacht, aber ich möchte lieber, dass der User dies aktiv macht.
Vielen Dank schon mal für die Hilfe.
Gruß, Toast
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Toast« (16. März 2011, 10:23)
zu 1:
so kannst du per JS Bilder laden
das es zentriert und groß ist musst du es halt an eine bestimmte stelle in deinem DOM einfügen und per css stylen
zu2:
wie du es verschwinden lassen willst bzw wann ist halt dir überlassen
da gibt es sicher viele Möglichkeiten
- du bindest einen schließen Button mit ein wenn du das bild einblendest
- per klick auf das bild
- oder je nach style des hovers einfach nur wenn du über ein anderes Bild hoverst
....
mfg LA
so kannst du per JS Bilder laden
|
|
Javascript-Quelltext |
1 2 3 4 5 |
img = document.createElement("img"); img.src = "dateipfad/dateiname.endung"; img.onload = function (){ //die funktion wird getriggert wenn das bild geladen wurde } |
das es zentriert und groß ist musst du es halt an eine bestimmte stelle in deinem DOM einfügen und per css stylen
zu2:
wie du es verschwinden lassen willst bzw wann ist halt dir überlassen
da gibt es sicher viele Möglichkeiten- du bindest einen schließen Button mit ein wenn du das bild einblendest
- per klick auf das bild
- oder je nach style des hovers einfach nur wenn du über ein anderes Bild hoverst
....
mfg LA
Hey,
Danke für die Antwort. Also das Ganze scheint soweit sinnig
- Dennoch: Einige Fragen bleiben:
Wie kriege ich es denn hin, dass ich dem Bild eine ID zuweise (um es anschließend mit CSS anzusprechen)? Oder lasse ich lieber ein Div dann anzeigen (was sonst nicht angezeigt wird, aber ne ID hat), welches formatiert ist, und lasse das Bild dieses Div nur ausfüllen.
Und ist es möglich, dass ich die Adresse des Bildes von dem Link übernehmen kann (sonst müsste ich ja zig Funktionen schreiben - denke also, dass das geht)?
Noch eine letzte Frage
. Wenn das Bild nun groß ist, und ich möchte, das es beim Draufklicken kleiner wird. Wie mache ich das? Klar ist ja mit der onclick-Funktion, aber die muss doch dann im Image-Tag rein, oder nicht?
Sorry, wenn die Fragen doof sind, aber in Java-Skript fühle ich mich definitiv noch net zu Hause
.
Gruß, Toast
Danke für die Antwort. Also das Ganze scheint soweit sinnig
Wie kriege ich es denn hin, dass ich dem Bild eine ID zuweise (um es anschließend mit CSS anzusprechen)? Oder lasse ich lieber ein Div dann anzeigen (was sonst nicht angezeigt wird, aber ne ID hat), welches formatiert ist, und lasse das Bild dieses Div nur ausfüllen.
Und ist es möglich, dass ich die Adresse des Bildes von dem Link übernehmen kann (sonst müsste ich ja zig Funktionen schreiben - denke also, dass das geht)?
Noch eine letzte Frage
. Wenn das Bild nun groß ist, und ich möchte, das es beim Draufklicken kleiner wird. Wie mache ich das? Klar ist ja mit der onclick-Funktion, aber die muss doch dann im Image-Tag rein, oder nicht?Sorry, wenn die Fragen doof sind, aber in Java-Skript fühle ich mich definitiv noch net zu Hause
.Gruß, Toast
Warum weist Du dem Bild nicht einfach eine Klasse zu ?
Natürlich musst Du die Klasse dann auch in der Css-Datei definieren.
Bsp:
Das verstehe ich nicht ganz ...
Die onClick-Funktion ist ein Eventhandler.
Der muss in den Link rein.
Bsp:
Da findest Du einiges: http://lmgtfy.com/?q=bildwechsel+javascript+onclick
Gruß,
Mckbrother
|
|
HTML |
1 |
<img src="bildressource.jpg" class="css-klasse" alt="alternativtext" /> |
Natürlich musst Du die Klasse dann auch in der Css-Datei definieren.
Bsp:
|
|
Cascading Style Sheet |
1 2 3 |
.css-klasse{
border: 1px solid #ff0000;
}
|
Zitat
Und ist es möglich, dass ich die Adresse des Bildes von dem Link übernehmen kann (sonst müsste ich ja zig Funktionen schreiben - denke also, dass das geht)?
Das verstehe ich nicht ganz ...
Die onClick-Funktion ist ein Eventhandler.
Der muss in den Link rein.
Bsp:
|
|
HTML |
1 |
<a href="" onClick="wechselfunktion('parameter1', 'parameter2')"><img src="bildressource.jpg" class="css-klasse" alt="alternativtext" /></a> |
Da findest Du einiges: http://lmgtfy.com/?q=bildwechsel+javascript+onclick
Gruß,
Mckbrother
Wo kämen wir hin,
wenn jeder sagen würde:
"wo kämen wir hin",
und niemand ginge um zu schauen,
wohin wir kämen,
wenn wir gingen.
wenn jeder sagen würde:
"wo kämen wir hin",
und niemand ginge um zu schauen,
wohin wir kämen,
wenn wir gingen.
Danke für den (lustigen) Ling
.
Da habe ich ne schöne Idee gefunden, wo die Sache per Pop-Up-Fenster funktioniert. Es kam dort von meinem Browser keine Aussage mit "Popup blockiert". Wenn ich diese Variante versuche nachzubauen, kommt jedoch diese Meldung. Gibt es da einen Trick
Mit der Übernahme war ja eigentlich logisch, dass das so geht. Ist ja bei anderen Programmiersprachen genauso... Mist, dass ich das gefragt habe
.
Wie oben gesagt, versuche ich nun die Popup-Variante nachbauen. Dabei bin ich auf das Problem gestoßen, dass aus irgend einen Grund das ganze nicht eine Sekunde wartet, sondern sofort startet. Wieso geschieht das?
Danke schon Mal soweit. Ich denke, dass sind die letzten Fragen
Gruß, Toast
.Da habe ich ne schöne Idee gefunden, wo die Sache per Pop-Up-Fenster funktioniert. Es kam dort von meinem Browser keine Aussage mit "Popup blockiert". Wenn ich diese Variante versuche nachzubauen, kommt jedoch diese Meldung. Gibt es da einen Trick
Mit der Übernahme war ja eigentlich logisch, dass das so geht. Ist ja bei anderen Programmiersprachen genauso... Mist, dass ich das gefragt habe
.Wie oben gesagt, versuche ich nun die Popup-Variante nachbauen. Dabei bin ich auf das Problem gestoßen, dass aus irgend einen Grund das ganze nicht eine Sekunde wartet, sondern sofort startet. Wieso geschieht das?
|
|
Javascript-Quelltext |
1 2 3 4 5 6 7 8 9 |
function pichor(url) { this.aktiv = setTimeout(picture(url), 1000); } function clearhor() { clearTimeout(this.aktiv); } function picture(url) { window.open(url,'Bild','width=400,height=200'); } |
|
|
PHP-Quelltext |
1 2 |
$url = "'http://www.diesite.com/galerie/tattoo/hor/".$data."'";
echo ' <a onmouseover="pichor('.$url.)">Testbild</a>
|
Danke schon Mal soweit. Ich denke, dass sind die letzten Fragen

Gruß, Toast
Muss es denn ein PopUp sein?
Mich schrecken die Dinger immer sofort ab!!!
Ich würde mir einen kleinen! Tooltip mit JavaScript erstellen, der ausgeführt wird beim Draufklicken.
Natürlich bliebe Dir auch die Alternative die Lightbox und ihre Konkurrenten zu nehmen.
Ich finde das das immer eine elegante Lösung ist, zumal man das Design der Dinger relativ einfach beeinflussen/ändern kann.
Zu dem Warten kann ich Dir leider nichts sagen, nicht mein Gebiet.
Grüße,
Mckbrother
Mich schrecken die Dinger immer sofort ab!!!
Ich würde mir einen kleinen! Tooltip mit JavaScript erstellen, der ausgeführt wird beim Draufklicken.
Natürlich bliebe Dir auch die Alternative die Lightbox und ihre Konkurrenten zu nehmen.
Ich finde das das immer eine elegante Lösung ist, zumal man das Design der Dinger relativ einfach beeinflussen/ändern kann.
Zu dem Warten kann ich Dir leider nichts sagen, nicht mein Gebiet.
Grüße,
Mckbrother
Wo kämen wir hin,
wenn jeder sagen würde:
"wo kämen wir hin",
und niemand ginge um zu schauen,
wohin wir kämen,
wenn wir gingen.
wenn jeder sagen würde:
"wo kämen wir hin",
und niemand ginge um zu schauen,
wohin wir kämen,
wenn wir gingen.
Gut, für's erste nehme ich die Lightbox. Muss erst mal reichen - aber nichts desto trotz will ich noch mein Vorhaben umsetzen
- also immer nur her mit den Antworten.
Gruß, Toast
P.S. Wie passe ich die an die Auflösung an (ja - ich weiß, das ist jetzt Faulheit, weil ich die Stelle in der CSS net suche. Aber ist schon so spät
)
P.P.S. Was passiert, wenn JS deaktiviert ist
- also immer nur her mit den Antworten.Gruß, Toast
P.S. Wie passe ich die an die Auflösung an (ja - ich weiß, das ist jetzt Faulheit, weil ich die Stelle in der CSS net suche. Aber ist schon so spät
)P.P.S. Was passiert, wenn JS deaktiviert ist
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Toast« (18. März 2011, 21:41)
Also komm, wenn es Dir zu spät ist, dann mach es morgen 
Wenn Javascript nicht aktiviert ist, dann passiert nichts.
Das ist aber auch bei jeder anderen Javascript-Galerie der Fall...
Gruß,
Mckbrother

Wenn Javascript nicht aktiviert ist, dann passiert nichts.
Das ist aber auch bei jeder anderen Javascript-Galerie der Fall...
Gruß,
Mckbrother
Wo kämen wir hin,
wenn jeder sagen würde:
"wo kämen wir hin",
und niemand ginge um zu schauen,
wohin wir kämen,
wenn wir gingen.
wenn jeder sagen würde:
"wo kämen wir hin",
und niemand ginge um zu schauen,
wohin wir kämen,
wenn wir gingen.
Also komm, wenn es Dir zu spät ist, dann mach es morgen
Wenn Javascript nicht aktiviert ist, dann passiert nichts.
Das ist aber auch bei jeder anderen Javascript-Galerie der Fall...
Gruß,
Mckbrother
Haha

Hast ja Recht. Neuer Tag, neue Energie. Ich habe es mit folgender Änderung in der CSS-Datei hinbekommen, dass das Bild nur noch 50% der Weite ausfüllt
|
|
Cascading Style Sheet |
1 |
#outerImageContainer{ position: relative; background-color: #fff; width: 250px; height: 250px; margin: 0 auto; max-width: 50%;}
|
(das max-width)
Nun habe ich aber einen großen, weißen Container unter dem Bild, der wahrscheinlich dadurch entsteht, dass JS das Original-Bild für seine Berechnungen nutzt.
Zudem finde ich nicht den Container, der die unter Leiste steuert (hätte eigentlich gedacht, das wäre #hoverNav). Folglich ist die Leiste noch immer viel zu breit.
Und noch ein letztes Problem
. Ich kann zwar die Breite beschränken aber auf mein max-height rwird nicht reagiert, sprich: die vertikalen Bilder kann ich iwie net begrenzen.Gruß, Toast
Edit: habe nach ausführlichem Googeln meine Lösung gefunden. Danke an alle für die Hilfe
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Toast« (19. März 2011, 14:43)
Ähnliche Themen
-
Grafiken »-
Tipps für Hover effekt
(30. Juli 2010, 13:22)
-
(X)HTML & CSS & DHTML & Javascript »-
beste umsetzung eines design und hover effekt in html
(21. November 2009, 00:09)
-
(X)HTML & CSS & DHTML & Javascript »-
hover effekt?!
(27. Oktober 2007, 22:31)
-
(X)HTML & CSS & DHTML & Javascript »-
Hover effekt?!
(30. August 2003, 10:00)


