在html中定位固定标题

Posted

技术标签:

【中文标题】在html中定位固定标题【英文标题】:position fixed header in html 【发布时间】:2012-06-14 01:44:35 【问题描述】:

我有一个位置固定的标题(动态高度)。

我需要将容器 div 放在标题的正下方。由于页眉高度是动态的,我不能使用固定值作为上边距。

如何做到这一点?

这是我的 CSS:

#header-wrap 
    position: fixed;
    height: auto;
    width: 100%;
    z-index: 100

#container 
    /*Need to write css to start this div below the fixed header without mentioning top margin/paading*/

...和 ​​html

<div id="header-wrap">
  <div id="header">
    <div id="menu">
      <ul>
      <li><a href="#" class="active">test 0</a></li>
      <li><a href="#">Give Me <br />test</a></li>
      <li><a href="#">My <br />test 2</a></li>
      <li><a href="#">test 4</a></li> 
      </ul>
    </div>
    <div class="clear">
    </div>
  </div>
</div><!-- End of header -->

<div id="container">
</div>

【问题讨论】:

固定标题不是布局的一部分。它是漂浮的。你需要给内容一个margin-top,这样它就好像标题在那里一样。 阅读此css-tricks.com/… CSS-Only Scrollable Table with fixed headers的可能重复 【参考方案1】:

你的#container 应该在#header-wrap 之外,然后为#header-wrap 指定一个固定的高度,之后,为#container 指定margin-top 等于#header-wrap 的高度。像这样的:

#header-wrap 
    position: fixed;
    height: 200px;
    top: 0;
    width: 100%;
    z-index: 100;

#container 
    margin-top: 200px;

希望这是您需要的: http://jsfiddle.net/KTgrS/

【讨论】:

是的,它在外面。但我无法修复页边距顶部,因为标题中的内容因页面而异 你知道css位置是做什么的吗?他想要一个相对于显示器的固定元素 避免要求 javascript 测量和调整页边距的一种方法是复制页眉中的内容。将一份副本放在“可见性:隐藏”样式的 div 中,该 div 仍然是页面的一部分,另一份作为“位置:固定”。 这是真正的答案,James :) 谢谢。然而,在某些情况下,它可能很难复制,而且它也可能不会以相同的方式调整大小,所以还是有点风险 当问题指定动态高度时,如何将其视为有效答案?这个答案假设一个固定的高度。【参考方案2】:

好吧!当我现在看到我的问题时,我意识到由于标题的动态高度,我不想提及固定边距值。

这是我在此类场景中一直使用的。

使用 jQuery 计算标题高度并将其应用为上边距值。

var divHeight = $('#header-wrap').height(); 
$('#container').css('margin-top', divHeight+'px');

Demo

【讨论】:

【参考方案3】:
body
  margin:0;
  padding:0 0 0 0;

div#header
  position:absolute;
  top:0;
  left:0;
  width:100%;
  height:25;

@media screen
 body>div#header
   position: fixed;
 

* html body
  overflow:hidden;
 
* html div#content
  height:100%;
  overflow:auto;

【讨论】:

【参考方案4】:

我假设您的标题是固定的,因为您希望它保持在页面顶部,即使用户向下滚动,但您不希望它覆盖容器。但是,设置position: fixed 会从页面的线性布局中删除元素,因此您需要将“下一个”元素的上边距设置为与标题的高度相同,或者(如果出于任何原因您不想那样做),放置一个占位符元素,它在页面流中占用空间,但会出现在标题显示的下方。

【讨论】:

【参考方案5】:

position :fixed 与其他布局不同。 将fixed position 设置为header 后,请记住,您必须为content div 设置margin-top

【讨论】:

【参考方案6】:

将#container div top设置为

#container 


 top: 0;




【讨论】:

以上是关于在html中定位固定标题的主要内容,如果未能解决你的问题,请参考以下文章

html中如何点击导航栏就直接定位内容中的小标题

文字滚动的代码怎么定位到图片的固定位置

HTML+CSS:css定位详解之相对定位绝对定位和固定定位

IE 上固定定位的 iframe 的问题

HTML 和 CSS 在图像上定位文本

19 层模型中的固定定位