CSS – 使内容出现在固定的DIV元素下面

我的目的是在页面顶部创build一个菜单,即使用户滚动,页面顶部仍然保留(就像Gmail最近的function,这个function有用户向下滚动的常用button,以便它们可以执行对消息的操作,而不必滚动到页面的顶部)。

我也想设置下面的菜单下面的内容 – 目前,它出现在它的后面。

我的目标是这样的:

+________________________+ | MENU | <--- Fixed menu - stays at top even when scrolling. +¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬+ | CONTENT BEGINS | | HERE | | | | | | | | | | | | | +¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬+ <--- Bottom of page. 

我希望在顶部有一个永不停息的菜单,即使用户向下滚动,它也停留在页面顶部。 当用户位于页面顶部时,我也希望主要内容从菜单下方开始,但是当用户向下滚动时,菜单是否超出内容顶部并不重要。

概要:

  • 我希望在页面顶部有一个固定的位置菜单,在滚动时跟在用户的后面。
  • 当用户位于页面顶部时,内容必须出现在菜单下方。
    • 当用户向下滚动时,菜单可能与内容重叠。

有人可以请解释如何做到这一点?

谢谢。

更新:

CSS代码:

 #floatingMenu{ clear: both; position: fixed; width: 85%; background-color: #78AB46; top: 5px; } 

HTML代码:

 <div id="floatingMenu"> <a href="http://www.google.com">Test 1</a> <a href="http://www.google.com">Test 2</a> <a href="http://www.google.com">Test 3</a> </div> 

目前,我可以让菜单出现在页面的顶部,并将其置于我的container div 。 但是,内容在菜单后面。 我已经clear: both; 这并没有帮助。

你需要的是一个额外的空格div(据我了解你的问题)。

这个div将被放置在菜单和内容之间,并且与菜单div相同,包括填充。

HTML

 <div id="fixed-menu"> Navigation options or whatever. </div> <div class="spacer"> &nbsp; </div> <div id="content"> Content. </div> 

CSS

 #fixed-menu { position: fixed; width: 100%; height: 75px; background-color: #f00; padding: 10px; } .spacer { width: 100%; height: 95px; } 

在这里看我的例子。

这是通过抵消nav div占用的空间来实现的,但是它的position: fixed; 它已经被取出了文档stream程。


实现这种效果的首选方法是使用margin-top: 95px;/*your nav height*/您的内容包装。

如果你的菜单高度是可变的(为了响应或者是dynamic加载的),你可以将顶部边距设置为固定div的结束位置。 例如:

CSS

 .fixed-header { width: 100%; margin: 0 auto; position: fixed; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; z-index: 999; } 

使用Javascript

 $(document).ready(function() { var contentPlacement = $('#header').position().top + $('#header').height(); $('#content').css('margin-top',contentPlacement); }); 

HTML

 ... <div id="header" class="fixed-header"></div> <div id="content">...</div> ... 

这里有一个小提琴( https://jsfiddle.net/632k9xkv/5/ ),除了固定的导航菜单和标题之外,还有一点变化,希望能够成为一个有用的示例。

我刚刚有这个问题,这是我的解决scheme:

 #floatingMenu + * { margin-top: 35px; } 

调整您的floatingMenu的高度。 如果你不知道它是一个div,那么你可以使用*而不是div 。 这是所有有效的CSS2。

用另一个div来包装菜单内容:

 <div id="floatingMenu"> <div> <a href="http://www.google.com">Test 1</a> <a href="http://www.google.com">Test 2</a> <a href="http://www.google.com">Test 3</a> </div> </div> 

而CSS:

 #floatingMenu { clear: both; position: fixed; width: 100%; height: 30px; background-color: #78AB46; top: 5px; } #floatingMenu > div { margin: auto; text-align: center; } 

而关于菜单下方的页面,你可以给它一个填充顶部:

 #content { padding-top: 35px; /* top 5px plus height 30px */ } 

我刚刚添加了一个填充顶部到导航下面的div。 希望能帮助到你。 我是新来的 C:

 #nav { position: fixed; top: 0; left: 0; width: 100%; margin: 0 auto; padding: 0; background: url(../css/patterns/black_denim.png); z-index: 9999; } #container { display: block; padding: 6em 0 3em; } 

刚刚为此而苦恼,不喜欢一些“黑客”的解决scheme,我发现这是有用的和干净的:

 #floatingMenu{ position: sticky; top: 0; } 

你应该尝试一下,我希望这将帮助你,甚至提供更好的function来使用固定导航

clear:both; 你不需要清楚

对那些build议使用margin-top或padding-top将主分区移动到固定菜单下面的人来说,你似乎没有完全testing它。

如果您设置了边距或填充,则会随页面一起滚动,您将丢失线条 – 请尝试此页面

看起来不错,不是吗? 突出显示底部可见行上的一个单词,然后按下页面向下 – 具有突出显示的单词的行以及其他几行将在固定分割下滚动。

保证金顶部或填充顶部会将主分区定位在固定分割下方,但是当您向下翻页或单击滚动条滚动页面的一个视口高度时,它将全部落在其面上。

同样的问题,如果你页面上,线“脱落”的视图端口的底部。

有没有人有这个问题的实际解决?

我知道如何定位事物 – 如果您知道关于边距,填充等的基本知识,那么这很容易 – 但是如何在滚动时避免线条的丢失?

我已经看了很多例子,声称是一个function正常的页面,顶部有固定的分区,但是他们不工作! 他们都有滚动的问题。

我遇到了一些页面似乎工作,但如果固定的分工更高,线路将会丢失。 我相信我知道他们为什么似乎工作。

考虑一下完全正常(没有花哨的格式)页面上的文本如何滚动。 当您向上滚动或者您看到下一行时,您是否看到了底线?底部的一条已经从视口顶部滚动了?

回答 – 你看到滚动的底线成为顶线。

似乎工作的固定菜单页面确实没有。 滚动它们,底线从视口滚动,但由于下一行是可见的,看起来固定分割是可行的 – 但我们知道更好,不是吗?

如果固定分数高于一行文本的高度,则失败,线路丢失。

我见过的唯一真正能够正常工作的网页是在雅虎这样的网站上,我没有时间也没有倾向于深入了解页面上的很多CSS,HTML和JavaScript,到事情的中心。

所以 – 去那个页面,看看你是否可以修改(“检查”的元素,并修改了CSS规则),修复滚动问题。

如果可以的话,回来和世界分享你的发现。

我的页面是一个很好的地方,看看能够修复顶部的一个分区,把它放在中心(和主分区),并将其限制在最大宽度。 它可能会帮助你们中的一些人,但是我很抱歉,我没有修复滚动问题

玩固定师的高度 – 使其足够短,以便只有一行显示,然后与滚动播放。 然后使它足够大,两行,然后三个和滚动播放。 你会看到的问题。

这是一个应该工作的页面 ,但它不是 – 读最后一个评论 – 他们以不同的方式描述问题,但它是同样的问题

我只是在Chrome中再次testing了这个页面,看起来工作起来相当令人满意。 用FF存在这个问题。 还没有尝试过IE浏览器。

所以 – FF有什么不同?

这是cNet上的一个页面,它和chrome和ff一起工作,所以他们在做什么?

使用Chrome进行更多的testing表明,它在滚动时无法完全显示底线。 当你的滚动只是底部的一部分是可见的 – 所以,仍然需要修复。