2010-12-08 8 views
2

Je crée un site fixe d'une page qui déploie une superposition à l'aide de jQuery. Il y a deux éléments qui composent la superposition:Superposition jQuery très simple

  • #-recouvrement transparent - une div qui couvre toute la fenêtre du navigateur
  • # about-emballage - un pop-up div affiché dans le centre de la fenêtre du navigateur , contenant du texte

ces deux divs sont cachés sur chargement de la page et ont une opacité: 0.

ces deux lignes de commutateur jQuery sur la superposition:

$('#transparent-overlay').show().fadeTo(200, 0.5); 
$('#about-wrapper').delay(200).show().fadeTo(170, 1.0); 

Actuellement, je ne sais pas comment assembler le jQuery qui va désactiver la superposition, c'est-à-dire renvoyer ces éléments à l'état dans lequel ils se trouvaient au chargement de la page - quelqu'un a-t-il des idées?

Modifier la suggestion de Karim ci-dessous:

Le fichier .js se lit maintenant comme suit:

$(document).ready(function() { 
    about_click(); 
    about_close(); 
}); 

function about_click() { 
    $('#about').click(function() { 
     $('#transparent-overlay').show().fadeTo(200, 0.5); 
     $('#about-wrapper').delay(200).show().fadeTo(170, 1.0); 
    }); 
} 

function about_close() { 
    $('#about-close').click(function() { 
     $('#about-wrapper').hide(); 
     $('#transparent-overlay').fadeOut(200); 
    }); 
} 

Cette charge la superposition parfaite, puis se cache parfaitement. Cependant, quand je vais recharger l'overlay, # over-wrapper et # transparent-overlay se réinstallent au lieu de - dans le cas de # overlay transparent - en fondu.

Quelle est la meilleure façon pour y remédier, s'il vous plaît?

+0

Avez-vous essayé '$ ('# transparent-overlay'). Hide()'? – gideon

+0

@Quand voulez-vous qu'ils se cachent ??? quelques clics déclencheurs que pour montrer juste – kobe

+0

Désolé, j'aurais dû fournir plus d'informations: Je veux que # about-wrapper se ferme instantanément, mais # transparent-overlay devrait disparaître de la même manière qu'il s'est estompé. – Jim

Répondre

3

Vous faites simplement le contraire de ce que vous avez fait. Incluez le masquage des éléments dans une fonction de rappel afin que le fondu fonctionne au préalable.

$('#about-wrapper').hide().fadeTo(0, 0); 
$('#transparent-overlay').fadeTo(200, 0, function(){ 
    $(this).hide(); 
}); 
+0

Brillant, qui l'a résolu - merci :) – Jim

0

Que diriez-vous:

$("#about-wrapper").hide(); 
$("#transparent-overlay").fadeOut("slow"); 
1

Si vous le souhaitez, vous pouvez utiliser des événements personnalisés pour encapsuler le cacher/révéler de la superposition, puis les déclencher à l'aide des contrôles sur votre page. Par exemple:

$(document).bind("overlay-reveal", function() { 
    $('#transparent-overlay').show().fadeTo(200, 0.5); 
    $('#about-wrapper').delay(200).show().fadeTo(170, 1.0); 
}).bind("overlay-close", function() { 
    $('#about-wrapper').hide(); 
    $('#transparent-overlay').fadeOut(200); 
}); 

$(".closeOverlay").click(function() { 
    $(document).trigger("overlay-close"); 
}); 

$(".showOverlay").click(function() { 
    $(document).trigger("overlay-reveal"); 
}); 
+0

Merci, Karim. Je n'ai pas réussi à faire fonctionner les événements personnalisés, mais j'ai ajouté votre code dans mon fichier .js. Il n'est toujours pas tout à fait là, cependant - je changerai ma question en conséquence :) – Jim