2014-01-16 86 views
0

我试图做一些固定/粘性元素的水平导航。 当用户滚动页面时,一些div必须停留在左边缘。用粘性div元素水平滚动

这里是我想要做一个小提琴:

http://jsfiddle.net/rQUeL/

css 

.container>div { 

display:block; 
float:left; 
} 

.container { 
height:100%; display:block; background:grey; float:left; width:2000px; 
} 

.cover{ 
width:25%; height:100%; background:blue; } 

.menu{ 
width:90px; height:90px; background:green; margin-left:100px; } 

.menu.fixed{ 
} 

.cover.fixed{ 
} 

.content{ 
width:500px; height:100px; background:red; } 



<div class="container"> 
<div class="cover" > 
     <div class="menu">Menu</div> 
</div> 
<div class="content">content</div> 

当绿色广场到达左边缘,绿色和蓝色的元素都被固定,红色内容在下面。

我相信它可以做jQuery ...

谢谢你的帮助。

塞巴斯蒂安

回答

2

你根本上改变了上课的时候滚动长度超过一定数量
(在这种情况下margin-left.menu

$(window).scroll(function() { 
    var sl = $(this).scrollLeft(); 
    if (sl > 100) { // 100 is margin-left from .menu 
     $('.menu').addClass('fixed'); 
     $('.cover').addClass('fixed'); 
    } else { 
     $('.menu').removeClass('fixed'); 
     $('.cover').removeClass('fixed'); 
    } 
}); 

PS:我不知道你想要的是什么红色元素

FIDDLE

+0

谢谢你的回答。几乎就是这样,但当绿色内容到达边界时,蓝色内容必须保持其位置,目前存在差距。红色内容必须跟随蓝色封面,并在绿色方块到达边界时开始滑动。谢谢@Spokey –

0

我有同样的问题d无法单独使用CSS找到任何解决方案。所以我制作了解决这个问题的jQuery插件。你可以找到它here。现在

Well, I had a great gif here demonstrating what it does but SO doesn't support it. You'll have to click this to see it.

,你冲我嚷嚷之前,让我在你第一次叫喊。这是一个BYOCSS。所以如果你正在寻找一些能够帮你照顾CSS的东西,那就继续寻找吧。您所要做的就是将标题元素放置在绝对位置。

这个插件仍在开发中,需要一些改进。滚动时有点紧张。你可以通过一个CSS3来缓解抖动问题。这只是一个起点,如果你想为它做出贡献,你可以分叉它,看看你能做什么。