【问题标题】:HTML CSS Layout with bg image in lower divHTML CSS 布局与下部 div 中的 bg 图像
【发布时间】:2012-05-18 07:06:07
【问题描述】:

如何让 div 'lower' 用它的背景图像填充屏幕的下部?

Div 'upper' 根据内容增长。

红线标记视口。

这里我举了一个例子:Splendid

但我希望它没有桌子!!

【问题讨论】:

  • 此时您的代码是什么样的?
  • 只是 div 上层和 div 下层在一个包装器 div...
  • 我理解正确吗:您不希望上图中有滚动条吗?
  • ...如果上面的div有足够的内容,你根本看不到底部的吗?
  • 是的,如果没有“足够”的内容,您会看到较低的 div 用它的 bg 图像填充屏幕底部的 div 'lower'。

标签: html css layout footer


【解决方案1】:

警告:这个答案并没有解决原来的问题,我误解了他的问题。作者想要实现的目标可能仅使用 CSS 是不可能的,因为我们结合了粘性页脚、始终可见的页脚头(如任务栏)以及主要内容和页脚的动态高度。

我将 sn-p 留给任何可能寻找粘性页脚的人。

小提琴: Dynamic Content with Sticky Footer

我用一个计时器来说明不断用内容填充“上”容器。

基本上你有以下 HTML:

<div class="wrapper">
    <div class="upper">
        <span></span>
    <div class="push">
    </div>        
    </div>

    <div class="lower">
        Footer content goes there.
    </div>
</div>​

当然还有 CSS:

.upper{
    min-height: 100%;
    height: auto !important;
    width: 100%;
    height: 100px;
    background: blue;
    margin: 0 auto -100px; /* The negative value of the footer height. */
    color: white;
}
.lower, .push {
    height: 100px; /* Footer and Push need to have equal height */
    background: red;
    color: white;
}​

代码说明:

这基本上就是所谓的 Sticky Footer 概念,您可以在此基础上进行更多研究。你有你的主要内容,你有你的页脚,我们使用 push 容器 的一个小技巧来真正地推动页脚,这样它就不会与你的任何内容重叠。

额外的CSS只是为了演示,希望你能把它清理干净,按照你需要的方式实现它。

【讨论】:

  • 页脚(下部)也应该增长。它应该填充下部屏幕的剩余部分。您的解决方案有一个固定的页脚高度...
  • 我得出的结论是,您想要实现的目标是不可能用纯 CSS 完成的。我不确定,但我希望你能找到答案。作为讨论的一部分,我将把 sn-p 留在这里。你已经有一个我读过的 jQuery 解决方案,应该很好。
  • 是的,它会是脚本。谢谢!
【解决方案2】:

这不是准确您所要求的,但您可以废弃底部的 div,并将大背景图像添加到 body。应用background-position: center bottom; 使图像紧贴屏幕底部。如果图像具有清晰的背景,这将特别有效。

body {
    background: url('largeImage.png') no-repeat center bottom;
}

【讨论】:

  • 你看到我的链接splendidmusic.nl了吗?这是我想做的,但不是无表......
  • 什么会阻止顶部 div 与背景图像重叠?
  • @madb,这就是“不是精确地你所要求的”部分。 :)
【解决方案3】:

嗯,只是将 div 的高度设置为'lower'?如果您希望内容灵活,甚至可以使用最小高度。

【讨论】:

  • 不,因为那样的话,问题中的图片,会有滚动条。
  • @JakeParis op 对滚动条一言不发
  • 检查问题下的cmets
  • 另外,如果只是给底部div一个特定的高度,我认为这个问题不会在这里。
  • 嗯,很难想象他想要达到什么目的
【解决方案4】:

您可以使用Javascript从浏览器的窗口高度中减去upper div的高度,如果结果大于0,则将lower div设置为该高度?

为了获取窗口大小,我建议使用这个函数。我相信它是跨平台的,虽然我最近没有测试过。

function getDocHeight() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
}

【讨论】:

  • 谢谢,我自己也有一个 jQuery 解决方案。但我正在寻找一个 CSS 解决方案。听起来很简单,但比你想象的要难:-)
  • 我认为如果“下” div 导致出现滚动条是一个问题,在“上”本身不够高的情况下,无法做到这一点?如果这不是一个真正的问题,我有一个纯 CSS 解决方案给你。
  • 是的,'这是个问题' :-) 也许你必须使用脚本来完成这项工作。 (没有桌子)感谢您的回复
  • 我几乎可以说是。不久前,我花了很长时间寻找类似问题的解决方案,最终我只是屈服并使用了 Javascript。非常欢迎你。祝你好运!
猜你喜欢
  • 2012-04-16
  • 1970-01-01
  • 2018-11-26
  • 2023-03-04
  • 1970-01-01
  • 2012-07-20
  • 2016-06-27
  • 1970-01-01
  • 2012-05-02
相关资源
最近更新 更多