html - 短页页脚,无多余标记或 Javascript

标签 html css

我一直在努力找出在不使用多余的、无语义的标记的情况下处理短页面页​​脚的最佳方法。我有兴趣对此非常迂腐。那么,让我们讨论一下:

最简单的选择是允许正文的背景色延伸到页脚之外。但是,如果你的页脚是不同的颜色,这看起来会很糟糕。 Simple Demo

Sticky footers需要添加一个没有语义意义的“推”元素。呸。

Javascript ?荒谬。

某种 faux columns ?没有背景图片。

bodyhtmlbackground-color 设置为您希望 footer 显示的颜色,并用全宽包装器 div ( Demo )“覆盖它”。如果我不想要这种效果,我就不会拥有那些包装器 div。它们不添加任何语义。

嗯。

我一直在试验新的 CSS3 flexbox,并且拼凑而成 this .

html{height:100%;}
body{display:box; box-orient:vertical; height:100%;}
header{height:50px; background:salmon;}
section{height:50px; /*height:2000px;*/}
footer{width:100%; min-height:100px; box-flex: 1; background:lightblue;}

它完全按照我的意愿工作。当内容太短导致滚动条时,页脚会填充剩余空间,当内容较多时,它会收缩到min-height(不太理想)。它在 WebKit 中有效。 Firefox 对 display: box 的处理非常奇怪。由于某些原因,您无法将 display: -moz-box 的元素居中。 Opera 和 IE 目前都不支持 flexbox。此外,它可以优雅地降级,这是非常需要的。

我陷入了僵局。我可以弄脏我的标记,在一些现代浏览器中接受一些优雅的退化(通过包括 only display: -webkit-box, -webkit-box-flex 等),或者根据 CSS 的限制更改我的设计,但我不想做出任何这些妥协。帮助我。

最佳答案

如果您愿意在您的 CSS 中使用伪元素,您可以这样做:

footer:after { 
  background: lightblue; /*same color as footer*/
  content: "";   
  margin-top: 100px; /*height of footer. (prevents overlapping footer content)*/
  position: fixed;
  width: 100%;
  height: 100%;
}

标记没有变化,它应该适用于大多数浏览器。

关于html - 短页页脚,无多余标记或 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9529747/

相关文章:

Javascript 目标链接状态

html - CSS:旁边带有标签的样式单选按钮?

css - 如何阻止内容流入正确的 div

javascript - HTML5 模板中未显示希伯来语字符

html - 上边距在 div 中不起作用

html - CSS 菜单图标悬停重复

css - flexbox固定宽度和固定行数

html - 如何在坚持使用网格的同时创建像 FB 这样的 3 列布局

javascript - 文本溢出 : ellipsis and flex

JavaScript(警报消息)