【问题标题】:Make table dialog content scrollable使表格对话框内容可滚动
【发布时间】:2016-07-07 16:49:40
【问题描述】:

我有一个这样设置的对话框:

<div style="position:fixed; display:block; width:600px; top:0; left:50%;margin-left:-275px;">
  <table style="width:100%;" cellpadding="0" cellspacing="0">
    <tbody>
      <tr>
        <td>
          <div class="modal-header">
            <span class="close">×</span>
            <h2>Modal Header</h2>
          </div>
        </td>
      </tr>
      <tr>
        <td style="background-color:gray;">
          <table>
            <tbody>
              <tr>
                <td>
                  <div class="modal-body">
                    <p>variable length really long stuff</p>
                </td>
              </tr>
            </tbody>
          </table>
        </td>
      </tr>
      <tr>
        <td>
          <div class="modal-footer">
            <h3>Modal Footer</h3>
          </div>
        </td>
      </tr>
    </tbody>
  </table>
</div>

现在,对话框的内容对于页面来说太长了,而且由于位置是固定的,用户永远无法向下滚动到对话框的底部。我希望仅当内容的长度超过视口区域时内表才可滚动 - 但我总是希望页眉和页脚可见。

Here is a code sample.我怎样才能做到这一点?

【问题讨论】:

  • 您希望模态框始终保持 100% 高度吗?页眉和页脚的高度是固定的吗?
  • @Pangloss 模态框最多只能与其中的内容一样高,但如果内容不能放在一页中,则应该是可滚动的。是的,页眉和页脚是固定高度,但模态内容会根据服务器而变化。

标签: html css dialog html-table


【解决方案1】:

如果您可以使用vh 单位,您可以强制modal-body 滚动:

.modal-body {
   padding: 2px 16px;
   overflow:auto;
   max-height: calc(100vh - 144px); /* 144px represents the combined height of the modal header and footer */
}

如果您不想使用vh 单位,那么您可能需要在模态出现时以编程方式切换body 上的溢出。您可能还想在更改溢出时手动设置 scrollTop 位置,以免页面跳来跳去。

【讨论】:

  • 嗨!这个答案很好用,但我会等待,看看其他人是否有任何想法 - 让 calcvh 批准使用会很痛苦。
  • 我可以理解vh 单位,这就是我指出这一点的原因。 calc 得到相当广泛的支持,但我猜你需要 IE9 或更低版本,因为你发表了评论。如果您想通过优雅的回退来使用它,您可以很容易地使用 JavaScript 来计算适当的最大高度,并在打开模式或调整浏览器大小/方向时设置它。
猜你喜欢
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多