Tengo un slider casero:
Código HTML:
Y aqui su css: Ver original
Código CSS:
Ver original
section.slider ul#slider { list-style: none; overflow: hidden; width: 100%; margin: 0 auto; padding: 0; text-align: center; border-bottom: 5px solid #000; font-size: 0; } section.slider ul#slider > li { position:relative; display:inline-block; } section.slider ul#slider > li > a { display: inline-block; } section.slider ul#slider > li > a > span { position: absolute; color: #fff; font-size: 36px; text-shadow: 0 0 34px #000; font-weight: 900; display: inline-block; } section.slider ul#slider img { width: 100%; }
Bien el caso es que el texto del slider lo tengo que centrar mediante Javascript, mas concretamente usando jQuery y he hecho esta funcion.
Código Javascript:
Ver original
function redimensiona_texto_slider() { $('section.slider ul#slider > li').each(function() { var ancho_slider = $(this).width(), alto_slider = $(this).height(), alto_texto = $(this).find('span').height(), ancho_texto = $(this).find('span').width(), top_texto = alto_slider / 2 - alto_texto / 2, left_texto = ancho_slider / 2 - ancho_texto / 2; console.log('Slider alto = '+alto_slider+'px | Slider ancho= '+ancho_slider+'px | Span alto = '+alto_texto+'px | Span ancho= '+ancho_texto+'px'); if(top_texto == 0) $(this).find('span').css({'font-size':ancho_slider/40 + 'px', 'left':left_texto+'px'}); else $(this).find('span').css({'font-size':ancho_slider/40 + 'px', 'top':top_texto+'px', 'left':left_texto+'px'}); }); } $(window).on('resize',function() { redimensiona_texto_slider(); }); redimensiona_texto_slider();
Y el caso es que la primera vez que llamo al console.log me devuelve esto:
Código:
Y cuando hago el resize esto otro:Slider alto = 0px | Slider ancho= 1583px | Span alto = 44px | Span ancho= 678px
Código:
Es como si la primera vez que ejecutase la funcion despues de haber cargado el DOM, el slider no tuviese height establecido y al resizar si.Slider alto = 570px | Slider ancho= 1583px | Span alto = 50px | Span ancho= 754px
¿Alguien sabe que puede estar pasando?
EDITO:
Bendito google, estaba ya desesperado cuando he encontrado este articulo, por si alguien ha tenido un problema similar lo comparto
http://es.softuses.com/72545
$(document).ready(); Se ejecuta cuando el DOM ha sido cargado, las imagenes no forman parte de este a la hora de cargar.
En su lugar usamos
$(window).load(); Esto ejecutará todo una vez la web haya finalizado de cargar al 100%