Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

Toast

Tripel-As

Dabei seit: 02.01.2011

Beiträge: 210

 

1 Zum Seitenanfang

Mittwoch, 16. März 2011, 10:23

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

  Spoiler 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 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)

 

Bomberus

Tripel-As

Dabei seit: 12.06.2010

Beiträge: 167

 

2 Zum Seitenanfang

Mittwoch, 16. März 2011, 15:19

Schau dir mal Lightbox an, vielleicht ist das ja was für dich
 

DarkiceX

Mitglied

Dabei seit: 17.02.2011

Beiträge: 32

 

3 Zum Seitenanfang

Mittwoch, 16. März 2011, 15:23

Benutzt du schon jQuery? Da sollte so etwas einfach möglich sein und es wird auch sicher Gallerie Plugins geben.
 

Toast

Tripel-As

Dabei seit: 02.01.2011

Beiträge: 210

 

4 Zum Seitenanfang

Mittwoch, 16. März 2011, 15:28

Ich wollte ja kein PlugIn oder sowas, sondern mir selbst was entwerfen :D. Solche Sachen (können) mir lediglich als Idee dienen.

Gruß, Toast
 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

5 Zum Seitenanfang

Mittwoch, 16. März 2011, 15:51

zu 1:

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
 

Toast

Tripel-As

Dabei seit: 02.01.2011

Beiträge: 210

 

6 Zum Seitenanfang

Freitag, 18. März 2011, 16:10

Hey,

Danke für die Antwort. Also das Ganze scheint soweit sinnig :thumbup: - 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 :D. 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
 

Mckbrother

Haudegen

Dabei seit: 04.02.2010

Beiträge: 515

 

7 Zum Seitenanfang

Freitag, 18. März 2011, 16:25

Warum weist Du dem Bild nicht einfach eine Klasse zu ?

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.
 

Toast

Tripel-As

Dabei seit: 02.01.2011

Beiträge: 210

 

8 Zum Seitenanfang

Freitag, 18. März 2011, 20:45

Danke für den (lustigen) Ling :w00t: .
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 :D.

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 :D

Gruß, Toast
 

Mckbrother

Haudegen

Dabei seit: 04.02.2010

Beiträge: 515

 

9 Zum Seitenanfang

Freitag, 18. März 2011, 20:51

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
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.
 

Toast

Tripel-As

Dabei seit: 02.01.2011

Beiträge: 210

 

10 Zum Seitenanfang

Freitag, 18. März 2011, 21:41

Gut, für's erste nehme ich die Lightbox. Muss erst mal reichen - aber nichts desto trotz will ich noch mein Vorhaben umsetzen :D - 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 :D)
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)

 

Mckbrother

Haudegen

Dabei seit: 04.02.2010

Beiträge: 515

 

11 Zum Seitenanfang

Freitag, 18. März 2011, 22:32

Also komm, wenn es Dir zu spät ist, dann mach es morgen :D
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.
 

Deffcon

König

Dabei seit: 11.11.2010

Beiträge: 897

 

12 Zum Seitenanfang

Samstag, 19. März 2011, 07:38

Du kannst nur im <noscript> Tag darauf Hinweisen, dass die Galerie auf JS basiert und sie dies anschalten müssen um die Galerie richtig zu betrachten.

Das wird dem User dann angezeigt wenn er JS deaktiviert hat.
 

Toast

Tripel-As

Dabei seit: 02.01.2011

Beiträge: 210

 

13 Zum Seitenanfang

Samstag, 19. März 2011, 14:43

Also komm, wenn es Dir zu spät ist, dann mach es morgen :D
Wenn Javascript nicht aktiviert ist, dann passiert nichts.
Das ist aber auch bei jeder anderen Javascript-Galerie der Fall...

Gruß,
Mckbrother

Haha :D

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 :D. 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)