Antworten auf deine Fragen:
Neues Thema erstellen

Overlay springt

TorstenSchmitt

Noch nicht viel geschrieben

Hallo. Kann mir jemand im Forum helfen?
Ich habe ein Overlay erstellt mit jQuery.
Wenn ich das Overlay schliesse, springt die Seite nach oben. Welchen Befehl bruache ich noch, dass die Seite an der Stelle bleibt, wo sie vorher war?

Vielen netten Dank !
 

Tr3icio

Nicht mehr ganz neu hier

AW: Overlay springt

Ein overlay ist normalerweise (wenn ich dich richtig verstehe) eine große ebene, über anderen, die fest positioniert wird. wenn dem so ist, kann sie den rest der seite nicht verschieben.

Ich meine:
position: fixed;
 

mindraper

me[code].Java(Script)

AW: Overlay springt

hi.

@tr3icio: wer lesen kann ist klar im vorteil. deine antwort ist ziemlich an der eigentlichen frage vorbei.

@thorstenschmitt:
ich nehme an, dass du das overlay mittels eines links schliesst, korrekt? und im href-attribut des links ist eine raute notiert? dann ist es ganz einfach.

HTML (des overlays)
HTML:
<div id="overlay">
   <a href="#" id="close_overlay">Schliessen</a>
   
   <!-- ab hier dann die restlichen inhalte -->

</div>
JAVASCRIPT
PHP:
function close_overlay( event ){
   event.preventDefault(); // standardverhalten des browsers unterbinden
   event.stopPropagation(); // durchreichen des events verhindern

   $( event.target ).parent().fadeOut( 500 );
}

$( '#close_overlay' ).bind( 'click', close_overlay );

// bzw. auch machbar (alternativ!):
// $( '#close_overlay' ).click( close_overlay );
ERKLÄRUNG
wenn du auf einen link ( bzw. egal wo auf einer page ) klickst, registriert der browser ein event, also ein ereignis. diese events können abgefangen und ausgewertet werden, sofern für das entsprechende event ein sog. eventlistener registriert wurde. dass passiert bei jQuery mittels bind() ( die kurzformen wie z. b. "click()" nutzen intern ebenfalls die bind()-methode von jQuery ).
wenn ein event normalerweise ein bestimmtes browserverhalten triggert, dann nennt man dieses browserverhalten das "standardverhalten". ein klick auf einen link beispielsweise ruft das standardverhalten "rufe die seite mit der im href-attribut angegebenen url auf" auf. in deinem fall möchtest du aber gerade nicht, dass der browser die angegebene seite bzw. den ankerverweis lädt. du unterdrückst das standardverhalten in diesem fall mit "event.preventDefault()". genau das gleiche kannst du auch machen, wenn du beispielsweise ein formular via ajax verschicken möchtest.

wichtig ist allerdings auch die zweite zeile "event.stopPropagation()". grund ist folgender:
( fast ) jedes event hat eine sog. propagate- und bubbling-phase. das bedeutet, dass ein event auf einem kindknoten eines dom-elements von dessen elternknoten ebenfalls registriert wird. schematisch könnte man das so darstellen:

DIV
└> ANode
......└>TEXTNode

so sieht dein browser dein HTMLkonstrukt. streng genommen klickst du auch nicht auf das a-element, sondern auf den TEXTNode. in der propagate-phase des events durchläuft das event diese dom-struktur folgendermaßen:

DIV > ANode > TEXTNode

anschließend kommt die bubbling-phase. dabei durchläuft das event die dom-struktur rückwärts, also:

TEXTNode > ANode > DIV

sicherheitshalber solltest du die propagate- und bubbling-phase eines events dessen standardverhalten du unterdrücken willst immer mit unterdrücken. je nach der dom-struktur kann es dir nämlich andernfalls geschehen, dass das event auf der höhe des angeklickten elements nicht ausführt, dafür aber auf der nächst höheren ebene innerhalb der dom-struktur.

hoffe das hilft
 
Zuletzt bearbeitet:

Tr3icio

Nicht mehr ganz neu hier

AW: Overlay springt

Naja ich gehe von dem aus, was geschrieben wird und habe keine lust mir den rest dazu zu denken, vorallem wenn es um so klein kram wie overlays geht.

Ach und: bind ist veraltet in jQuery ;-)
Und eine anonyme Funktion, direkt in die bind() Methode, würde den code sogar noch vereinfachen.

Ach und: event.target ist bei einem mouseevent das selbe wie this.
 

Myhar

Hat es drauf

AW: Overlay springt

Es ist leider deshalb nicht gelöst, weil der Ersteller des Threads nicht in der Lage ist, simple Fragen zu beantworten
@thorstenschmitt:
ich nehme an, dass du das overlay mittels eines links schliesst, korrekt? und im href-attribut des links ist eine raute notiert?
 

pascal.k

Basinga

AW: Overlay springt

schreib mal statt
HTML:
$('#buch').click(function(){
        $('#overlay1').fadeIn('fast',function(){
            $('#box').animate({'top':'160px'},500)
        });
    });
HTML:
$('#buch').click(function(){
        $('#overlay1').fadeIn('fast',function(){
            $('#box').animate({'top':'160px'},500)
        });
return false;
    });

EDIT: Dann brauchst du nur noch dein Overlay auf Position: fixed setzen, dass du es auch da unten auf der Seite siehst. ;)
 
Zuletzt bearbeitet:

TorstenSchmitt

Noch nicht viel geschrieben

AW: Overlay springt

PROBLEM GELÖST!
Bloss wo ist jetzt der graue, blasse Hintergrund?
Scrolle ich nach oben, sitzt er an der oberen Kante der Seite.
Ui Ui Ui, ich glaube ich stehe mächtig auf dem Schlauch.
 

pascal.k

Basinga

AW: Overlay springt

Diesem musst du natürlich auch fix stellen. Eigentlich sogar eher diesen fix stellen und die restlichen Elemente normal in diesen fixen Container.
 

pascal.k

Basinga

AW: Overlay springt

Der Fehler liegt einfach daran, dass ID vor Class kommt. In der CSS Datei "Light Box 2/css/lightbox.css" wird das Overlay als ID (#) angesprochen und auf "position: absolute" gesetzt.
In deiner "empfehlungsmarketing_grundgeruest.css", die zwar nach der anderen CSS Datei aufgerufen wird, wird das Overlay als CLASS (.) angesprochen.
ID Werte werden CLASS Werten bevorzugt.
Fazit. Stelle in deiner CSS auf ID um. Also "#overlay" statt ".overlay", dann wird der Wert fixed auch vom Browser genommen.
 

TorstenSchmitt

Noch nicht viel geschrieben

AW: Overlay springt

AHHHH, Ich hbs eben gerade selbst endeckt, hoffe ich mal. Das sind Angänferfehler, bin ja auch Anfänger :) Vielen Herzlichen Dank !!!!!
 

pascal.k

Basinga

AW: Overlay springt

Kleiner Tipp am Rande. Du solltest dem Buch, dass man anklicken kann den CSS Wert
HTML:
cursor:pointer;
setzten. So erkennt der Besucher, dass man dort auch klicken kann. ;)
 

pascal.k

Basinga

AW: Overlay springt

Würde eher sagen da ist was zu viel.
HTML:
#overlay{ position: absolute; top: 0; left: 0; z-index: 90; width: 100%; height: 500px; background-color: #000; }
HTML:
height: 500px; // !!!! ;)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben