【问题标题】:Position fixed with variable height位置固定,高度可变
【发布时间】:2013-10-30 17:23:10
【问题描述】:

我正在寻找一种方法来确保可滚动的固定元素的高度适应所有空白直到页脚。

请查看以下fiddle,这是我正在处理的布局。

在这个问题上卡了 2 天,是时候继续前进了。

最好在 Firefox 中看到小提琴,侧边栏滚动条由于某种原因无法在 chrome 中滚动,但这是一个不同的问题。

<header></header>
<div id="platformContainer">

    <section id="platformContent">
        <div id="platformBody">        
             <ul class="mainList">
                 ...                 
            </ul>
        </div>
    </section>

  <section id="toolBarContainer">
    <div id="toolBarContent">
        <ul id="toolBarList">
            ...
        </ul>
    </div>
</section>

<footer></footer>    

【问题讨论】:

  • 我认为您可能需要 javascript 来执行此操作
  • 我不确定我是否正确理解了您的问题。在#toolBarList 上设置height: 100% 而不是height: 200px 没有效果?
  • @HugoGiraudel 理想情况下我可以这样做,但它需要窗口高度,如果你一直向下滚动列表项溢出到页脚。我需要它只到页脚。
  • @9edge 我已经使用了一些 javascript 摆弄,但似乎仍然无法得到它。只要它简洁且性能优化,我想我可以处理一点 javascript,但当然 CSS 总是可取的。
  • 这对粘性 CSS 标题很有帮助:medium.com/@DivyanshBatham/…

标签: css height


【解决方案1】:

假设您想要 toolBarList 容器 100% 的高度 - 这就是您已经拥有的。侧边栏 100% 的高度。然而,里面的列表仅设置为 200px:

#platformContainer #toolBarContainer #toolBarContent ul#toolBarList{
    height: 200px;
    ...
}

将其更改为height:100%; 使其填充文档的整个高度。现在的问题是考虑页眉和页脚。然而,这是一个常见问题,我自己在这里回答了这个问题:https://stackoverflow.com/a/14892331/1317805 和许多其他人一样。您需要确保页眉和页脚没有被内容区域隐藏或覆盖。

我认为您可能需要 javascript 来执行此操作 - 9edge

一点也不!

另外,使用section标签时请注意:

不应将元素的使用视为需要以特定方式在视觉上设置样式的大纲内容。如果是这种情况,最好建议作者只使用语义中性的 div。

您的#platformContent#toolBarContainer 样式可能会产生意想不到的结果。

http://www.w3.org/WAI/GL/wiki/Using_HTML5_section_elements

事实上,这些部分的样式可以完全替换为:

#platformBody, #toolBarContent {
    position:relative;
    height:100%;
    top: 70px;
    width: 100%;   
}

【讨论】:

  • 谢谢,我将更改为 div,但负边距底部并不能解决问题。我的侧边栏位置:固定,不应该随着主要内容滚动。
  • 在 Chrome 中,您的侧边栏不会随着主要内容滚动。见jsfiddle.net/27U5n/1
  • 我知道我在我的问题中提到了 chrome。你刚刚删除了我在小提琴中的页脚,如果你把 clear:left 放在后面你会看到问题。
  • 我没有删除页脚,我只是没有投入额外的工作来使其显示。在我的回答中,我将您链接到我写的另一个答案:stackoverflow.com/a/14892331/1317805 - 这提供了一个示例,说明如何通过页眉和页脚拥有 100% 的高度内容。
  • 谢谢,我在这里检查了你的例子jsfiddle.net/GFcBU/2。该示例中的可变内容元素具有位置:相对。如果您放大直到可以滚动,您将看到该元素随着滚动而移动。我的侧边栏不应该移动。
猜你喜欢
  • 1970-01-01
  • 2016-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 2014-03-19
相关资源
最近更新 更多