【问题标题】:CSS display table doesn't respect fixed heightCSS显示表不尊重固定高度
【发布时间】:2014-10-05 09:39:25
【问题描述】:

我有这个必要的 CSS 布局,不能更改,所以它保持中间居中。

Div display:table(高度定义)在 display:table-cell 内有一个 div,两个 vertical-align:middle;(我用它来垂直居中内容)。问题是当内容溢出定义的高度时,它只是溢出表格,使其变大。

我需要设置类似overflow:hidden 之类的东西,这似乎不适用于表格...我只需要隐藏溢出的内容或者更好,将滚动条添加到表格中。有什么办法吗?

CSS

html,body {
  height: 100%;
}
.table {
  float:left;
  margin: 10px;
  display:table;
  height:500px;
  vertical-align:middle;
  background:#ccc;
}
.table-cell {
  vertical-align:middle;
  display:table-cell;
}

HTML

<div class="table">
  <div class="table-cell">
    some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>
  </div>
</div>
<div class="table">
  <div class="table-cell">
    some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>
  </div>
</div>

Codepen:http://codepen.io/anon/pen/lytea

【问题讨论】:

标签: html css


【解决方案1】:

最简单的方法是使用最大高度为 100% 的内联块级元素包装您的内容, 并且,您需要在 table-cell 元素上设置 height: inherit

html,body {
  height: 100%;
}
.table {
  float:left;
  margin: 10px;
  display:table;
  height:500px;
  vertical-align:middle;
  background:#ccc;
}
.table-cell {
  height: inherit;
  vertical-align:middle;
  display:table-cell;
}
.wrapper {
  border: 1px dotted blue;
  display: inline-block;
  max-height: 100%;
  overflow: auto;
}
<div class="table">
  <div class="table-cell">
    <div class="wrapper">
    some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>
</div>
    </div>
</div>
<div class="table">
  <div class="table-cell">
    <div class="wrapper">
    some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>some tall content
    <br>
      </div>
  </div>
</div>

【讨论】:

  • 但它希望他的内容垂直居中对齐。
  • 是的,这几乎是想要的效果,但是它破坏了垂直对齐,这是使用表格的主要目的。
【解决方案2】:

你需要像这样在.table-cell 中使用text-overflow: ellipsis;

white-space: nowrap;
overflow: auto;
text-overflow: ellipsis;

请试试上面的css

附:要获得text-overflow: ellipsis;,它需要white-spaceoverflow 属性。

overflow 可以是autoscrollhidden

【讨论】:

  • 要么我犯了一些错误,要么它不起作用。你可以用例子发布 jsfiddle 或 codepen 吗?正如你在这里看到的codepen.io/anon/pen/aFCGf 第二个表仍然是超过定义的 500px
  • 第二张桌子是右边那个,对吗?
  • 当然,我把它算作代码中的第二个——右边的那个;)
  • 那太好了,我相信单元格高度是500px..请将高度更改为height:200px;,您会看到两个单元格高度都已更改为200px,并且都有滚动条。跨度>
  • 但高度可能会有所不同,因此我认为将其更改为 200 像素没有意义。顺便说一句,当我将其更改为 200px 时,它仍然会溢出(Chrome 最新版本)
猜你喜欢
  • 2013-04-03
  • 2018-08-10
  • 1970-01-01
  • 2017-09-21
  • 2014-11-11
  • 1970-01-01
  • 1970-01-01
  • 2016-05-01
  • 2014-05-02
相关资源
最近更新 更多