Foros del Web » Programando para Internet » Jquery »

Definir margin teniendo en cuenta el height de un bloque (jQuery)

Estas en el tema de Definir margin teniendo en cuenta el height de un bloque (jQuery) en el foro de Jquery en Foros del Web. Hola, Tengo un header en posición fixed, flotando por encima del contenido de la pagina. A veces tiene mensajes de alerta lo cual hace que ...
  #1 (permalink)  
Antiguo 01/10/2010, 19:48
 
Fecha de Ingreso: julio-2004
Mensajes: 13
Antigüedad: 20 años, 4 meses
Puntos: 0
Definir margin teniendo en cuenta el height de un bloque (jQuery)

Hola,

Tengo un header en posición fixed, flotando por encima del contenido de la pagina. A veces tiene mensajes de alerta lo cual hace que sea mas alto, por lo que necesito que el margin superior del resto del contenido de las paginas dependa del height de este header.

Lo pude lograr de esta manera:

$('body').css('margin-top', $('#top').height()+20);

El problema es que a veces el margin es mayor de lo que debería ser. No logré determinar por qué pasa esto, ya que simplemente a veces el cálculo lo realiza perfectamente, y otras no (en Google Chrome casi siempre lo calcula mas, dejando un margen extra)

ALguien sabe si estoy haciendo algo mal o existe una manera más efectiva de hacer esto y que el margen este bien seteado desde el inicio de la carga del DOM?

Gracias!
  #2 (permalink)  
Antiguo 02/10/2010, 08:46
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
Respuesta: Definir margin teniendo en cuenta el height de un bloque (jQuery)

Quizas tenga que ver con el box modeling. Vos reseteas tu hoja de estilo CSS, quitando margenes y padding?

Tenes un enlace a tu web?
  #3 (permalink)  
Antiguo 02/10/2010, 17:35
 
Fecha de Ingreso: julio-2004
Mensajes: 13
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Definir margin teniendo en cuenta el height de un bloque (jQuery)

Si mayid! Tengo un CSS Reset de todo... Lamentablemente no me dejan mostrar nada directamente, pero si podés darme más info sobre eso que comentas podría investigar más por ese lado?

EDIT: Testeando un poco más, me di cuenta que el margen extra sólo aparece alguna veces luego de hacer un refresh a la página, y como si le estuviese sumando el margin al margin anterior... Esto ultimo lo pienso porque cuando el margin-top correcto debería ser 129px, a veces al actualizar la pagina se convierte en 278px (2 x 129px + 20px)

Habrá alguna manera de asegurarme que el $('#top').height() se le asigne comenzando desde "0"?

Última edición por MRBarto; 02/10/2010 a las 17:59
  #4 (permalink)  
Antiguo 03/10/2010, 08:25
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
Respuesta: Definir margin teniendo en cuenta el height de un bloque (jQuery)

Cita:
Testeando un poco más, me di cuenta que el margen extra sólo aparece alguna veces luego de hacer un refresh a la página, y como si le estuviese sumando el margin al margin anterior
Algo así me pasó con Chrome hace un tiempo, con un layout muy muy sencillo. No se que es lo que cause el problema :o(

Data sobre lo que pedías: http://api.jquery.com/height/

Pregunta: estás incluyendo imagenes es el div que queres medir?
  #5 (permalink)  
Antiguo 03/10/2010, 10:44
 
Fecha de Ingreso: julio-2004
Mensajes: 13
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Definir margin teniendo en cuenta el height de un bloque (jQuery)

Parece que pude solucionarlo utilizando "$(window).load" en lugar de "$(document).ready"

El problema ahora es que por medio segundo inmediatamente luego de la carga el margen no está seteado, por lo que el contenido de la pagina se "mueve" hacia abajo cuando la pagina termina de cargar...


Edit con SOLUCIÓN: Parece que era mucho más fácil de lo que parecía... Moví el include del CSS antes que los .JS y ahora parece estar funcionando todo correctamente. Créditos a http://36flavours.com/2010/01/jquery-document-ready-bug-in-safari-webkit/ aunque el problema lo tenía en Chrome y no en Safari.

Última edición por MRBarto; 03/10/2010 a las 10:50
  #6 (permalink)  
Antiguo 04/10/2010, 07:11
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
Respuesta: Definir margin teniendo en cuenta el height de un bloque (jQuery)

Muy buena solución! Tomo nota. Gracias.

Etiquetas: definir, height, margin, bloques
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:14.