【问题标题】:On a web page, how can i have a scroll bar just for a certain section?在网页上,我如何才能为某个部分设置滚动条?
【发布时间】:2014-02-05 20:05:19
【问题描述】:

在得到this question 的回复后,我有一个看起来像这样的页面。

 <div style="white-space: nowrap;">
    <span style="display: inline-block; width: 280px">...</span>
    <span style="display: inline-block; width: 280px">...</span>
    <span style="display: inline-block; width: 280px">...</span>
    <span style="display: inline-block; width: 280px">...</span>
 </div>

如果有很多跨度,此页面将不会换行,它将继续在页面上水平移动并给我一个水平滚动条。在每个跨度内我都有一个 html 表,但我不确定这对问题很重要。

这很好用,但是当其中一个跨度在垂直方向上很长而其他跨度很短时,我遇到了问题,因为您必须垂直向下滚动才能真正看到您有水平滚动条。我试图找出解决此问题的方法,因此无论特定跨度部分的垂直长度如何,水平滚动条始终在页面上可见。

例如,如果您看一下 trello(请参见下面的屏幕截图)。如果您有一个非常长的垂直部分,它会在该部分添加一个垂直滚动条,因此不需要向下滚动整个页面。

在我的例子中,每个跨度内都是一个 html 表。为该表(而不是整个页面)实现垂直滚动条的推荐方法是什么?

【问题讨论】:

  • overflow: scroll 在父节点上?需要定义一个高度/最大高度
  • @DavidNguyen - 谢谢大卫,但显然这不是屏幕截图所做的,因为垂直滚动条只适用于那个特定的“列”,这似乎比在页面上硬编码一个 maxheight 更优雅
  • 嗯,这正是正在发生的事情 - 该列有溢出滚动。最大高度将应用于跨度的包装而不是页面正文。
  • 当你说父母时,你是在谈论 div 还是 span?我以为你的意思是 div?

标签: html css horizontal-scrolling vertical-scrolling


【解决方案1】:

内部元素需要max-heightoverflow-y,外部元素需要设置尺寸:

HTML

<div class="outer">
    <div class="inner">foo</div>
    <div class="inner">bar</div>
    <div class="inner">whatever</div>
</div>

CSS

.outer {
    border: 2px solid red;
    float:left;
    top:0;
    bottom:0;
    position:absolute;
}
.inner {
    max-height:100%;
    overflow-y:auto;
    border: 2px solid blue;
    width:30%;
    margin-right:2%;
    float:left;
}

Here's a working fiddle

【讨论】:

  • 这是朝着正确方向迈出的一步,但我对这种方法的担忧是我必须对最大高度进行硬编码,而我真正想要的是“当前屏幕高度”的最大高度不会导致出现垂直滚动条。此外,理想情况下,仍然只希望该部分像上面的屏幕截图一样滚动
  • 因为其他部分永远不会有超过 1 页的项目,或者您希望其他部分导致整个页面的滚动条?
  • 逻辑仍然有效,但您需要一些 JavaScript 来获取“当前屏幕高度”。只需使用$(window).height() (jQuery) 之类的东西获得那个高度,然后用那个值更新样式,如$('div.some_class_name_relevant_to_this_div').css('max-height', ( $(window).height() - 10) +'px'); - 10 只是给你一些缓冲;根据您的需要进行调整。
  • @ganders - 我基本上希望它像 trello 一样工作,如果列(或在我的情况下为表)比页面长,则该部分的垂直滚动条(就像屏幕截图一样)更多)。所以如果 3 列大于屏幕的大小,那么应该有 3 个垂直滚动条
  • @Ed Cottrell - 请参阅我对 ganders 的评论。希望这能更清楚地说明我的要求
【解决方案2】:
body, html {height: 100%}

.what_wraps_your_span {overflow-y: scroll; max-height: 100%;}

【讨论】:

  • 你是什么意思:what_wraps_your_span。您是在谈论我的问题中的 div 还是 span 本身?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-10
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多