2013-03-19 4 views
3

J'ai actuellement une section joliment cachée en haut de mon site qui glisse sur le clic. L'animation fonctionne très bien avec slideToggle mais j'aimerais aussi que la div couvre au moins la hauteur de la fenêtre.combinant slideToggle avec succès avec min-height

J'ai réussi à définir la hauteur de la fenêtre comme une variable et à modifier le css pour refléter cela, mais en le combinant avec le slideToggle rend l'animation sautillante.

jQuery(document).ready(function($) { 
    var win = $(window).height(); 
    $("#hidden").css("min-height", win); 
    $("a#toggle").click(function() { 
    var txt = $("#hidden").is(':visible') ? 'Show' : 'Hide'; 
    $("#toggle").text(txt); 
    $("#hidden").slideToggle(500); 
    }); 
}); 

Voici un violon http://jsfiddle.net/HZACf/

Si vous supprimez les deux premières lignes du jQuery, il glisse normalement.

Merci pour votre aide!

Répondre

1

Essayez animate:

jQuery(document).ready(function ($) { 
    var $hidden = $("#hidden"), 
    currentHeight = $hidden.height(), 
    newHeight = $(window).height(); 

    newHeight = (currentHeight > newHeight) ? currentHeight : newHeight; 

    $("#hidden").css("height", newHeight); 

    $("a#toggle").click(function() { 
     var txt = $("#hidden").is(':visible') ? 'Show' : 'Hide'; 
     $("#toggle").text(txt); 
     $("#hidden").animate({ 
      height : "toggle" 
     }, 500); 
    }); 
}); 

Je l'ai utilisé animate mais vous pouvez utiliser slideToggle plutôt que nous traitons uniquement height des éléments maintenant.

Fiddle here

+0

Merci @darshanags, il fonctionne, mais est presque aussi saccadé qu'avec l'ancienne méthode. Il est difficile de voir sur l'exemple du petit violon mais l'animation est faite en deux parties distinctes et ne fonctionne donc pas vraiment bien. Est-il possible de régler la hauteur minimale avant que la bascule ait lieu? – onjegolders

+0

pourquoi voulez-vous utiliser 'min-height' au lieu d'utiliser' height'? – darshanags

+0

dans le cas où le contenu dépasse la hauteur de la fenêtre – onjegolders