【问题标题】:Overlapping dynamic fixed header重叠的动态固定标头
【发布时间】:2013-08-31 19:46:09
【问题描述】:

我的固定标题与我的内容重叠。 很像这里 (Position fixed content overlapping problem)

但我的标题是动态的,所以有时高度不总是 50 像素,有时是 52、100 ...

【问题讨论】:

  • 我们需要一些编码..
  • <div style="postion: fixed; width: 100%; top: 0px;">Nav herer</div> <div>Content here</div>
  • 我认为这个问题需要一个“javascript”标签。

标签: html css web


【解决方案1】:

尽量把它放在你的盒子里。

当你创建一个固定元素时,它需要一个准确的位置:

例子:

#header{ 
    height: 95px;
    width: 640px;
    position: fixed;
    top: 30px;
    right: 30px;
}

因此,您的浏览器会这样读取:我将在屏幕右上角放置一个固定元素:距屏幕顶部 30 像素,距屏幕右侧 30 像素。

原因那些固定的元素是一个在另一个之上,因为他没有定义top/bottomleft/right位置正确。添加更多文本,您将看到是否可以在固定元素上滚动(不能......)。

将所有内容放在一个 div 中,然后 ID'it #bigBody。给#bigBody 一个准确的宽度和高度,比如说1000 宽度和600 高度。 现在添加这些:

#header {
    height: 50px;
    width: 600px;
    position: fixed;
    top: 30px;
    right: 30px;
}

#footer {
    background: #fff;
    bottom: 0;
    right: 0;
    height: 30px;
    width: 600px;
    position: fixed;
}

min-width 在这里无关紧要...只有在您设计需要多个设备访问(如 iPhone、平板电脑等)的大型网站时才使用此功能...如果您只是使用代码并坚持基础知识。

【讨论】:

  • 只有第一个元素是固定的,第二个不是
  • 是一样的... 为固定元素定义一个准确的位置。比如应该放在哪里TOP或BOTTOM,现在从哪里来???右或左? #header{ 高度:50px;宽度:600px;位置:固定;顶部:30px;右:30px;另一个元素需要一个“位置:绝对”属性。此属性必须是“位置:相对”属性的子属性才能起作用。
  • 好吧,我的标题上有position: fixed; top: 0px; width: 100%; left: 0px;,主要内容上有position: abolute,我的主要内容的一部分仍然与标题重叠。我也尝试过position: relative 的内容相同的结果。
  • 您的代码错误。将所有内容(页眉+内容+页脚)放在一个 div 中,并将其标识为#bigBody 或任何您想要的。然后 #bigBody 将有 position: relative;你的标题现在可以正常工作了。基本上,当您设置绝对属性时,浏览器会查找代码并搜索该元素的父元素(如果它具有相对属性)。
【解决方案2】:

您可以通过 JavaScript 做到这一点,同时更新标题的大小和其他小部件的边距。有关示例,请参阅 my fiddle(使用 CoffeeScript,在 Firefox 和 Chrome 上测试),或使用 jQuery 的 this other fiddle。基本上,它会同时为多个元素更改 CSS。

header { height: value + "px"; }
.contents { margin-top: anotherValue + "px"; }

如果大小更改不是由 JavaScript/CoffeeScript 完成的,则必须放置一个事件侦听器来更新 .contents CSS。

【讨论】:

  • 好吧,我已经这样做了$("#mainContent").css("margin-top", $("#navbar").height() + 30);,但是后备会很棒
  • 据我所知,margin-topheight 没有后备方案。如果您的意思是优雅降级,以至于 jQuery 版本还不够,我建议您删除 display: fixed; 以获得这样的降级后备。只有在 IE 中,您才能获得 onresize 事件来处理元素(除了窗口对象),因此您应该选择为可能影响标题高度的每个更改添加一个触发器到更新函数,或者使用 @987654330 @ 并定期检查/更新该高度。我强烈建议您避免使用计时器。
  • 除非窗口调整,否则标题不会调整大小。这个问题虽然解决了,但是。我想到了一个非 javasctript 后备
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-24
  • 1970-01-01
  • 2018-06-17
  • 2016-08-11
  • 1970-01-01
相关资源
最近更新 更多