• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Lightbox funktioniert nicht

DateYourWeight

Mitglied
@Aaron3219 @basti1012 danke für die Empfehlung mit der Lightbox.
Das sieht in deinem Link @Aaron3219 ganz schick aus: https://jsfiddle.net/Aaron3219/mef2h7yd/1/
Aber bei mir funktioniert das Ganze nicht: https://testseite-dateyourweight.jimdo.com/
Das öffnet sich merkwürdig und lässt sich auch nicht mehr schließen.

Habe folgenden Code eingefügt:

Code:
<p>
    Runterscrollen<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
</p>

<p>
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content
</p>

<div class="lightbox">
    <div>
        <img alt="Es ist ein Fehler aufgetreten" src="" />
        <div class="close">
            <div onclick="document.querySelector('.lightbox').style.display = 'none'">
            </div>
        </div>
    </div>
</div>
<img onclick="lightbox()" class="small-picture" alt="Es ist ein Fehler aufgetreten" src="https://assets.pixolum.com/blog/wp-content/uploads/2016/10/focus-stacking-scharfe-bilder-1.jpg" />
<p>
    Runterscrollen<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
</p>

<p>
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content
</p>
<style>
/* <![CDATA[ */
    * {
  margin: 0;
  padding: 0;
}

body {
  background: white;
  overflow: auto;
  text-align: center;
}

.lightbox {
  display: none;
  position: fixed;
  z-index: 10000;
  height: 100%;
  width: 100%;
  justify-content: center;
  align-items: center;
  top: 0;
  background: rgba(0,0,0,0.4);
}

.lightbox > div {
  position: relative;
}

.lightbox img {
  border-radius: 5px;
  width: 90%;
  max-height: 90%;
  max-width: 600px;
}

.small-picture {
  width: 100%;
  max-width: 300px;
  max-height: 90vH;
  cursor: pointer;
}

.close {
  color: white;
  position: absolute;
  top: 0;
  right: 0;
}

.close > div {
  position: relative;
  cursor: pointer;
}

.close span {
  display: block;
  width: 5px;
  height: 30px;
  background: white;
  border-radius: 100px;
  position: absolute;
  top: -15px;
  right: 27px;
}

.close > div > span:first-child {
  transform: rotate(45deg);
}

.close > div > span:last-child {
  transform: rotate(-45deg);
}

@media only screen and (max-height: 400px) {
  .small-picture {
    width: 100%;
    max-width: 300px;
    max-height: 90vH;
    width: auto;
  }
}

@media only screen and (max-height: 500px) {
  .lightbox img {
    max-width: 90%;
    max-height: 90vH;
    width: auto;
  }
}
/*]]>*/
</style>
<script>
/* <![CDATA[ */
    function lightbox() {
        var source = event.target.getAttribute("src");
 
  document.querySelector(".lightbox img").setAttribute("src", source);
  document.querySelector(".lightbox").style.display = "flex";
}
/*]]>*/
</script>

Und an den Code im "Head bearbeiten" gedacht:

Code:
zoomimage-zoom > img {
   max-width: 100%;
}

Gruß Sarah :)
 
Code:
zoomimage-zoom > img {
   max-width: 100%;
}
Also erstes Ding das auffällt:
zoomimage-zoom ist falsch. Du redest hier von einer Klasse. Es ist also .zoomimage-zoom

Füge außerdem zur Klasse .lightbox folgendes hinzu:
left: 0;

Tja und man sieht, dass der Close-Button fehlt. Das liegt daran, dass du den HTML-Code dazu nicht mitkopiert hast.
Code:
<div onclick="document.querySelector('.lightbox').style.display = 'none'">
</div>
Da müsste eigentlich noch 2-Mal <span></span> drinnestehen... der Code ist also falsch.

Edit:
Aber m.scatello hat recht, solange du den Kram (noch) nicht verstehst, solltest du für deine Seite lieber fertige Sachen nehmen.
Allerdings hast du nun ja auch schon 1000... mal gesagt, es ist deine Testseite, sie eignet sich also eigentlich ganz gut zum üben. Was sich aber nicht eignet ist Jimdo. Wenn es deine Testseite ist und du hast vielleicht Lust an sowas bekommen, lad dir ein Editor-Programm runter und lern den Kram.
Nun ja es ist ja letzlich deine Entscheidung. Das aber nur so als Gedankenanstoß.
 
Noch ein Nachtrag zu #2
Es gibt auch reine CSS-Lightboxen, da brauchst du kein JavaScript.
An deiner Stelle würde ich mir eine ausgereifte Lightbox ziehen und einbinden.

Und wenn eine Lightbox mit JavaScript, dann Lightbox 2, siehe http://lokeshdhakar.com/projects/lightbox2/
 
@m.scatello @Aaron3219
Erstmal danke für eure Antworten.
Auch wenn ich nicht glaube, dass Kommentare wie
Allerdings hast du nun ja auch schon 1000... mal gesagt, es ist deine Testseite
unbedingt notwendig sind. ;)

Halten wir an dieser Stelle doch mal bitte fest, dass ich kein Profi-Programmierer werden möchte,
sondern lediglich an meiner Homepage (bei jimdo) basteln mag. Da probiere ich gerade aus, was alles so möglich ist. Und eines ist mir ja bereits gelungen (danke noch mal an "Sempervivum" dafür!).

Bis vor wenigen Tagen hatte ich noch keine Ahnung, wie HTML, CSS und Javascript überhaupt im Zusammenhang stehen (hätte ich da bereits irgendwo einfach etwas komplett Fertiges kopiert, wäre das wohl heute noch so).

Zwar kann in die einzelnen Teile noch nicht selber schreiben, aber ich kann sie zusammenfügen, um einen Effekt zu erzielen (und das ist für mich schon ziemlich cool :D).

Tatsächlich habe ich den anfangs genannten Code komplett von dir @Aaron3219 übernommen, sprich HTML, CSS und Javascript kombiniert (genau so, wie es bei deiner Seite aufgelistet war). Und bei deiner Seite funktionierte es, bei meiner nicht. Ergo, habe ich vielleicht doch was unter "Head bearbeiten" vergessen oder was kann da passiert sein?

Übrigens muss ich mich korrigieren, bei "Head bearbeiten" steht nun:

Code:
<style>
/* <![CDATA[ */
.zoomimage-zoom > img {
   max-width: 100%;
}
/*]]>*/
</style>

Das muss ich ja mit style tags einbetten, oder?

Aber auch nur mit
Code:
.zoomimage-zoom > img {
   max-width: 100%;
}

Geht's nicht.

Gruß Sarah :)
 
Auch wenn ich nicht glaube, dass Kommentare wie
unbedingt notwendig sind. ;)
Oh das war gar nicht böse gemeint, ich habe dich eher verteidigt. m.scatello wollte dich darauf hinweisen, dass du eine vorgefertigte Lightbox nehmen sollst. Da er aber (wahrscheinlich) die vorherigen Themen nicht alle durchgelesen hat, wollte ich m.scatello nur darauf Hinweisen, dass dies eine Testseite ist und die perfekt zum herumbasteln gemacht ist. Sollte also gar nicht böse rüberkommen.

Zu deinem Problem beziehe ich mich auf meinen vorherigen Beitrag:
Tja und man sieht, dass der Close-Button fehlt. Das liegt daran, dass du den HTML-Code dazu nicht mitkopiert hast.
Da müsste eigentlich noch 2-Mal <span></span> drinnestehen... der Code ist also falsch [kopiert].
 
Alles gut. :) Dann danke fürs Verteidigen. :cool:

Ich verstehe nur einfach nicht, wo etwas falsch kopiert wurde. Ich habe alles markiert und kopiert. :confused:

Wo muss ich denn <span></span> einfügen und wofür ist das? Was ist die Funktion?
Wenn ich das richtig verstanden habe, dann erweitert <span> <div>?
Zum Beispiel nur ein bestimmter Teil des Textes farbig, statt nur mit <div> der ganze Text?

Aber wo muss das hin? :rolleyes:??
 
Zuletzt bearbeitet:
HTML:
<div onclick="document.querySelector('.lightbox').style.display = 'none'"><span></span><span></span>
</div>
Die Spans bilden das Kreuz. Das ist dient einfach nur als Blockelement für jeweils eine Linie des Kreuzes, dass mit CSS gestylt wurde.
 
wollte ich m.scatello nur darauf Hinweisen, dass dies eine Testseite ist und die perfekt zum herumbasteln gemacht ist.
Trotzdem gibt es keinen Grund, ein 'zig tausendfach genutztes Script, das absolut fehlerfrei arbeitet, nicht einzusetzen, anstatt ein gebasteltes Script zu verwenden. Damit will ich nicht deinen Einsatz oder deine Kompetenz in Frage stellen, aber ich würde dein Script nicht benutzen, zumal es, wie gesagt, besseres gibt.
 
Da hast du ja auch völlig recht und das Skript war ja auch nur zum zeigen und läuft nur fast einwandfrei. Ist auch nicht böse rübergekommen. Aber ein kleiner Codespielplatz, so ein bisschen zum reinkommen in das Thema Web, finde ich gar nicht schlecht.

Ich hatte meine Meinung ja schon abgegeben:
Wenn du basteln willst, zum ausprobieren nimm meins. Ich mach dir meinetwegen auch ein vollständig funktionierendes Script. Wenn du aber ein Fehlerfreies Design + viele (gute) Funktionen haben willst, greife auf jeden Fall zu m.scatellos Vorschlag zurück.

Ich warte auf Rückmeldung wie du dich entschieden hast, damit ich ggf. das Skript fertig machen kann ;)
 
@m.scatello ich bedanke mich auch ganz herzlich bei dir. Sollte es so sein, dass ich diese Lightbox nun ganz dringend bräuchte, dann könnte ich mir natürlich etwas Fertiges nehmen (obwohl ich die von dir genannten Seiten auch nicht ganz so einfach zu verstehen finde). ;)

Ich probiere momentan aber einfach schlichtweg ein paar Sachen mit meiner Homepage aus.

@Aaron3219 danke dir! Aber scheinbar habe ich es aber nun tatsächlich hinbekommen! :D

Habe die Werte noch ein bisschen angepasst und das X richtig geschoben und so sieht der Code nun aus:

Code:
<p>
    Runterscrollen<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
</p>

<p>
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content
</p>

<div class="lightbox">
    <div>
        <img alt="Es ist ein Fehler aufgetreten" src="" />
        <div class="close">
            <div onclick="document.querySelector('.lightbox').style.display = 'none'">
                <span><input type="hidden" name="Close-Button" value="foo" /></span><span><input type="hidden" name="Close-Button" value="foo" /></span>
            </div>
        </div>
    </div>
</div>
<img onclick="lightbox()" class="small-picture" alt="Es ist ein Fehler aufgetreten" src="https://assets.pixolum.com/blog/wp-content/uploads/2016/10/focus-stacking-scharfe-bilder-1.jpg" />
<p>
    Runterscrollen<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
</p>

<p>
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content<br />
    Content
</p>
<style>
/* <![CDATA[ */
    * {
  margin: 0;
  padding: 0;
}

body {
  background: white;
  overflow: auto;
  text-align: center;
}

.lightbox {
  display: none;
  position: fixed;
  z-index: 10000;
  height: 100%;
  width: 100%;
  justify-content: center;
  align-items: center;
  top: 0;
  left: 0;
  background: rgba(0,0,0,0.7);
}

.lightbox > div {
  position: relative;
}

.lightbox img {
  border-radius: 5px;
  width: 90%;
  max-height: 90%;
  max-width: 800px;
}

.small-picture {
  width: 100%;
  max-width: 300px;
  max-height: 90vH;
  cursor: pointer;
}

.close {
  color: white;
  position: absolute;
  top: 0;
  right: 0;
}

.close > div {
  position: relative;
  cursor: pointer;
}

.close span {
  display: block;
  width: 5px;
  height: 30px;
  background: white;
  border-radius: 100px;
  position: absolute;
  top: -15px;
  right: 38px;
}

.close > div > span:first-child {
  transform: rotate(45deg);
}

.close > div > span:last-child {
  transform: rotate(-45deg);
}

@media only screen and (max-height: 400px) {
  .small-picture {
    width: 100%;
    max-width: 300px;
    max-height: 90vH;
    width: auto;
  }
}

@media only screen and (max-height: 500px) {
  .lightbox img {
    max-width: 90%;
    max-height: 90vH;
    width: auto;
  }
}
/*]]>*/
</style>
<script>
/* <![CDATA[ */
    function lightbox() {
        var source = event.target.getAttribute("src");
 
  document.querySelector(".lightbox img").setAttribute("src", source);
  document.querySelector(".lightbox").style.display = "flex";
}
/*]]>*/
</script>

Erst dachte ich: Gut, wenn dort diese <span> hin müssen, dann schreibe ich einfach mal dazwischen "Close".
Ich habe etwas gestaunt, als dann dort tatsächlich ein X erschien, jedoch auch die "Close" Wörter.
Diese habe ich nach Recherche jetzt einfach unsichtbar gemacht und juhu: Nur noch das X ist zu sehen und es lässt sich schließen. :D

Ich habe es mal mit folgenden Browsern überprüft:
Google Chrome (Standard-Browser), Internet Explorer, Edge und Mozilla Firefox.

Komischerweise lässt sich die lightbox im Firefox nicht öffnen. Beim Rüberfahren erscheint aber die Hand.
Woran liegt das? Java? :eek:
 
Ja da ist trotzdem noch was zu bemängeln.
Code:
<span><input type="hidden" name="Close-Button" value="foo" /></span><span><input type="hidden" name="Close-Button" value="foo" /></span>
ist ebenfalls falsch, bzw. unnötig. :D

Du kannst dir das ausblenden sparen:
Code:
<span></span><span></span>
reicht.
 
Im Firefox 57.0.4 funktioniert es bei mir nicht, im Chrome 63 ja
 
Hm, das ist komisch.
Auf der Testseite habe ich ja inzwischen nur diesen Code und wenn ich keinen Input habe, dann funktioniert es nicht, d.h. ich kann es nicht schließen.

Wenn ich auf der Testseite allerdings in der Navigation eine weitere Unterseite erststelle und bei
Unterseite 1 = Mit input
Unterseite 2 = ohne input
dann funktioniert es bei beiden.
Oder auch, wenn ich die Bilder untereinander platziere.

Habe jetzt mal alles gelöscht und nur den Code OHNE input drin, dann geht's nicht:
https://testseite-dateyourweight.jimdo.com/

Zusätzlich löscht er mir das <span></span><span></span> auch wieder aus dem Code.
Wenn ich da nämlich wieder drauf klicke, ist es weg.
 
Ich nutze Windows 10 (falls das wichtig ist).
Geöffnet habe ich die Seite über:

1. ) Google Chrome: 63.0.3239.132 (lightbox öffnet sich, lässt sich aber nicht schließen) -> Mein Standard Browser

2. ) Mozilla Firefox: 57.0.4 (lightbox lässt sich hier nicht mal öffnen, nur die Hand erscheint beim mouseover)

3. ) Internet Explorer: 11.0.50 (lightbox öffnet sich, lässt sich aber nicht schließen)

4.) Microsoft Edge: 40.15063.674.0 (lightbox öffnet sich, lässt sich aber nicht schließen)

5.) Opera: 50.0.2762.45 (lightbox öffnet sich, lässt sich aber nicht schließen)
 
Zuletzt bearbeitet:
man muss aber auch sagen das jimdo der letzte müll ist . habe mich da letztens auch angemeldet und meine seite versucht rein zu stellen. bei fiddle sah alles super aus und bei jimdo dann nur noch müll. am besten machstdu es so wie es an besten geht . der input sollte ja nicht stören wenn er trotzdem da ist
 
Stören tut es nicht, das stimmt.
Aber dass es dann vermutlich an Jimdo liegt und nicht an mir, wundert mich. :D
Ich sage mal so, wenn jemand sich damit so dermaßen gut auskennt, dass er eine Seite komplett selbst programmieren kann und damit komplett frei und flexibel ist, dann soll er das doch machen.
Ich möchte einfach eine kleine, feine Website für meinen Blog und meine Videos haben. Nichts Großes. Und ich finde für solche Leute ist Jimdo doch alles andere als "der letzte Müll".
Aber dass dieser verhältnismäßig einfache Code nicht funktioniert ist irgendwie komisch.
Naja, immerhin geht's ja mit diesem kleinen Trick auch. :cool:
 
Zurück
Oben