2012-07-25 40 views
7

Tengo la siguiente página:div magnético: div fijado en el interior absoluta div posicionado

[LINK]

La página está diseñado para ser desplazado horizontalmente, de modo que una serie de divs (los negros confinado) aparecen en una fila.

Ahora, los divs más pequeños dentro (rojos) me comporto para que nunca salgan del div principal pero al mismo tiempo, mientras se desplaza por la página, quiero que se muevan dentro del div principal como si fueran posición fija.

Me explicaré con un diagrama. Quiero que mis divs que se comportan de esta manera:

[LINK]

Cualquiera puede ayudar? ¡Gracias por tu tiempo!

+0

¿Hay contenido real en el div roja? Creo que sería posible con una imagen de fondo y las cajas blancas de fondo transparente con un grueso borde derecho e izquierdo. –

+0

Esto no es posible usando solo CSS. Puedes revisar MARQUEE en CSS y HTML, pero creo que esto no resolverá tu propósito. Tienes que usar javascript o jQuery. Por favor, agréguelos a tus etiquetas. – Narendra

+0

esto explica cómo hacer ese efecto: http: // jqueryfordesigners.com/iphone-like-sliding-headers/ – Kristian

Respuesta

3

ACTUALIZACIÓN


creado algunas mínimas experimental plugin de jQuery /: https://gist.github.com/3177804

que debería ser capaz de utilizar de esta manera: http://jsfiddle.net/7q3Zu/2/

descarga e incluyen el plugin https://raw.github.com/gist/3177804/556074672de8f200327d83f0146d98533c437ac3/jquery.magnetic.js luego llámalo es:

$(function() { 

    $('.container').magnetic({ //call it on some scrollable container 
     selector: '.object', //what to fix 
     left: 180,    //when to fix (px) 
     right: 500    //when to unfix (px) 
    }); 

});​ 

atm esto es sólo un experimento sin la garantía de trabajar en cualquier navegador

(por lo que no dude en agarrar la esencia y mejorarlo :)


Como se menciona en los comentarios, puedes hacer esto con Javascript.

Aquí es am ejemplo usando jQuery:

http://jsfiddle.net/7q3Zu/

HTML

​<div class="container"> 
<div class="object"></div> 
</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

JS

$(function() { 
    var obj = $('.object'); 
    $(document).on('scroll', function() { 

     var offset = $(this).scrollLeft() 
     //fix the position a some point  
     if (offset >= 200) { 
      obj.css('position', 'fixed').css('left', '20px'); 
     } 
     //..and unfix it later  
     if (offset >= 500) { 
      obj.css('position', 'absolute').css('left', '500px'); 
     } 

    }); 
});​ 

CSS

.container{ 
    width: 4000px; 
    padding: 20px; 
    margin: 20px; 
    border: 1px solid #ccc; 
    height: 400px; 
    position: relative; 
} 
.object{ 
    position: absolute; 
    height: 400px; 
    width :100px; 
    background: red; 
    left: 200px; 
} 
+0

Gracias, estoy teniendo problemas para usar este código ya que no soy realmente un experto en js ... ¡espero poder administrarlo pronto! – user1551073

+0

actualizó la respuesta con algo (afortunadamente) más fácil de implementar ... –

Cuestiones relacionadas