2011-12-22 19 views
5

Sé que el título es un poco confuso; D, pero básicamente lo que quiero hacer se muestra claramente en este sitio web http://9gag.com desplácese hacia abajo y preste atención a la barra lateral, hay 2 anuncios una vez que el segundo anuncio aparece en la parte superior de la página. una página.¿Cómo hacer que div se desplace hacia abajo con una página una vez que llegue a la parte superior de la página?

Me gustaría saber cómo hacer esto? Las soluciones html/css o jQuery están prefabricadas.

+2

La forma más fácil es escuchar evento de desplazamiento del cuerpo de la etiqueta, a continuación, cuando el scrollTop consigue más allá de una cierta cantidad, agregar una clase a la haciendo una posición fija en su anuncio, luego eliminando la clase cuando scrollTop vuelve a ser menor que esa cantidad. No tengo código para publicar como muestra, así que no lo publicaré como respuesta. –

+0

@KevinB thnx, pero no soy bueno con el código, así que prefijaría un código, ¡pero por lógica! – Ilja

Respuesta

7

Como señala Kevin, lo que debe hacer es escuchar el evento scroll del documento. Cuando se active, querrá ver el valor de scrollTop.

$(document).scroll(function() { 

    var useFixedSidebar = $(document).scrollTop() >= myThresholdValue; 
    $('.my-sidebar-items').toggleClass('fixed', useFixedSidebar); 

}); 

Y tu CSS sería básicamente el siguiente aspecto:

.my-sidebar-items.fixedSidebar { position: fixed; } 

Un factor de complicación es que es probable que desee los elementos que se fijan en sus nuevas posiciones, los mejores, y que querría haga algo como esto:

.my-sidebar-items.fixedSidebar { position: fixed; top: 0 } 

Sin embargo, eso probablemente apilaría sus artículos uno encima del otro. Una solución para eso sería poner la clase fixedSidebar en un contenedor y usar la clase como se describe.

Demo

+0

Lo intentaré ahora, gracias – Ilja

Cuestiones relacionadas