Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/05/2014, 05:18
Avatar de seozeta
seozeta
 
Fecha de Ingreso: junio-2013
Mensajes: 98
Antigüedad: 10 años, 10 meses
Puntos: 66
Usar height en un elemento invisible (hidden)

Estoy creando un menú superior desplegable que tiene otro debajo que se queda fijado en la parte superior cuando se hace scrolldown. El problema es que el funcionamiento del menú fijado depende del alto que sea el menú desplegable de arriba. Cuando está plegado mide 34px, pero cuando está abierto puede variar el alto según los enlaces que contenga.

Cuando se carga la página, el menú óbviamente está plegado y HEIGHT me calcula los 34px automáticamente. Cuando lo despliego, hay otro elemento que se hace visible (.menuwrap), pero me sigue tomando los 34px porque son los que HEIGHT calculó al cargar la página, y en ese momento .menuwrap estaba invisible (hidden).

Os pongo mi código a ver qué podemos hacer:

Código Javascript:
Ver original
  1. $("document").ready(function($){
  2.     if ($('#condensed-header').length){ //Si hay esta versión del menú
  3.         var nav = $('#condensed-header');
  4.         if ($('#topnav').length){ //Comprueba que tenga activada la navegación superior
  5.            
  6.             if ($(".mobile-top-button").is(":hidden")) { //Si no es versión responsive
  7.                 var height = 3 + $("#topnav .menuwrap").height();
  8.             } else {
  9.                
  10.                 //Si el menú no está desplegado
  11.                 if($("#topnav .menuwrap").is(":hidden")) {
  12.                     height = 3 + $(".mobile-top-button").height();
  13.                 } else {
  14.                     height = 3 + $("#topnav").height(); //NO CALCULA ESTE HEIGHT
  15.                 }
  16.             }          
  17.            
  18.         } else {
  19.             height = 3;
  20.         }
  21.  
  22.     $(window).scroll(function () {
  23.             if ($(this).scrollTop() > height) {
  24.                 nav.addClass("f-nav");
  25.             } else {
  26.                 nav.removeClass("f-nav");
  27.             }
  28.     });
  29.     }
  30. });