【问题标题】:Making HTML content expand to fill the window使 HTML 内容扩展以填充窗口
【发布时间】:2009-02-15 16:42:24
【问题描述】:

我有一个 HTML 页面垂直划分为

  • 标题
  • 身体
  • 页脚

身体依次被水平分成

  • 左侧的大 DIV 被滚动条包围,显示图表的一部分
  • 右边的表格

页眉和页脚是固定高度的。正文应垂直扩展以填充未被页眉和页脚占据的窗口部分。

同样,表单是固定宽度的,滚动窗格应水平扩展以填充窗口宽度。

图表非常大(最多 10x10 屏幕),所以我无法显示全部。相反,我想尽可能多地显示(使用整个窗口),以便用户需要尽可能少地滚动。

我也不能使用javascript,因为有些用户一定是偏执狂,必须禁用它。

我考虑过的一些选项:

  • 滚动窗格单元格的宽度和高度设置为 100%,其他所有设置为 1% 的表格
    不起作用。表格(以及页面)扩展为包含整个图表,即使在滚动窗格 DIV 上具有绝对定位。
  • 绝对定位将窗格从页面底部偏移页脚高度
    有效但不准确:页脚高度取决于当前字体大小和文本是否换行。这意味着我必须留出很大的余量以确保它们不会重叠。
  • 将图表放在 IFRAME 中
    我发现禁用脚本的最佳解决方案,但限制了我在脚本启用时可以执行的操作。

我注意到当脚本被禁用时,Google 地图使用固定大小的地图区域。如果谷歌放弃了这个问题,是否意味着它不可行?

【问题讨论】:

    标签: html css noscript


    【解决方案1】:

    使用 height: 100% CSS 属性应该可以让它工作。

    看看Dave Woods 100% Height Layout Using CSS 是否适合你。

    【讨论】:

    • 这部分内容很有用——我不知道你可以在 元素的样式上设置宽度和高度——我将所有内容都包装在具有绝对定位的顶级 DIV 中。现在我只需要一种方式来说“给页眉/页脚/表格它们的最小空间,并将所有其余部分交给滚动窗格”。
    【解决方案2】:

    这是position: absolute; CSS 属性的一个鲜为人知的方面,它将为您提供您正在寻找的布局。您可以在所有 4 个方向(上、右、下和左)上绝对定位元素。这意味着一个盒子可以像浏览器一样流畅,并且始终与您指定的容器边缘保持相同的距离。

    div {
        position: absolute;
    }
    #main {
        top: 8em; // 8em
        left: 0; 
        bottom: 8em; // 8em
        right: 300px;
        overflow: auto;
    }
    #header {
        top: 0;
        left: 0;
        right: 0;
        height: 8em;
    }
    #sidebar {
        top: 8em;
        right: 0;
        bottom: 8em;
        width: 300px;
        overflow: auto;
    }
    #footer {
        bottom: 0;
        left: 0;
        right: 0;
        height: 8em;
    }
    

    例如,查看http://www.sanchothefat.com/dev/layouts/cssframes.html,然后查看源代码并拆开 CSS,看看它是如何在更复杂的示例中完成的。

    如果您采用这种方法,您必须绝对定位所有主容器<div>s。如果需要考虑字体大小,请使用 em。

    PS。 IE6 搞砸了(震惊!)但是我提供的示例有一个 IE6 后备。不过固定高度就可以了。

    【讨论】:

    • 我觉得这和我的选项#2一样
    • 是的,很抱歉我一开始没有完全理解,编辑我的答案以更好地适应
    • 我认为这是您的最佳选择,因为您声明您的页眉和页脚是固定高度的。否则,如果您不想使用 javascript,则必须为图表使用固定高度区域。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 2015-02-10
    • 2012-06-28
    • 1970-01-01
    相关资源
    最近更新 更多