【问题标题】:Scrollable div in table cell表格单元格中的可滚动 div
【发布时间】:2013-07-29 00:11:59
【问题描述】:

我正在尝试创建一个表格布局,顶部有一个标题,左侧有一些内容,右侧有一个可滚动部分。我所做的工作在 Safari 和 Chrome 中,但由于某种原因它在 Firefox 中不起作用,右侧单元格中的可滚动 div 不会滚动,而是将表格推得更大......

我听说这些天你不应该使用表格,而是使用所有 div,但是如果没有表格,你将如何制作带有这样的标题区域的 2 列布局?

http://jsfiddle.net/zS8vy/3/

这是我的一些 CSS:

html, body {
    height: 100%;
}

table {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
}

table tr td.rightScroll {
    width: 200px;
    height: 100%;
}

table tr td.rightScroll div {
    width: 100%;
    height: 100%;
    overflow-y: scroll;
}

编辑:好的,我发现了问题,我没有在trtbody 元素上设置height: 100%。现在一切都可以正常滚动了,但是内容会因标题的大小而偏离,例如,如果您将正确的内容滚动到底部,您会看到它被截断了......

【问题讨论】:

  • 你在ie中为我工作。你用的是哪个版本的IE?
  • 对不起,它似乎在 IE 中工作,它的问题是 Firefox...
  • 你也可以使用 div 布局而不是 table。

标签: css html tablelayout


【解决方案1】:

我创建了一个小提琴,请检查它有点不同,但它可以在所有浏览器中工作

http://jsfiddle.net/zS8vy/7/

 body, td, div, p, a {
    font-family: Verdana, Arial;
}

html, body {
    height: 100%;
    overflow: hidden;
}

table {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
    border-collapse: collapse;
}

table tr td.header {
    background-color: #222;
    color: #BBB;
    padding: 5px;
    text-align: center;
}

table tr td.content {
    text-align: center;
    vertical-align: middle;
    background-color: #333;
    color: #AAA;
    position:relative;
}

table tr td.rightScroll {
    width: 200px;
    height: 100%;

    border-left: 1px solid black;
    background-color: #999;
   display:table-cell;


}

table tr td.rightScroll div {
 width:200px;
    height:calc(100% - 28px);
position:absolute;
    top:28px;

    right:0;
    overflow-y: scroll;
}

【讨论】:

  • 它可以工作,但现在内容在顶部的标题上方......你如何将它向下移动而不在底部切断?
  • 让我尝试创建一个小提琴
  • 有趣的创意解决方案,但我们必须达到这样的程度才能在表格单元格中获得可滚动的内容,这绝对(并且相对)疯狂。
【解决方案2】:

对于表tr td.rightScroll div先改overflow-y:scroll;溢出-y:auto;

table tr td.rightScroll div {
    width: 100%;
    height: 80%; //height should be fixed say 80% / 200px to enable content scrolling
    overflow-y:auto;
}

【讨论】:

  • overflow-y改成auto刚刚去掉了滚动条,内容还是把表格推大了……
  • 您正在使用高度:100%;对于所有使所有内容都通过表格垂直扩展的部分,您是否正在寻找固定的?流畅的布局,好吗?
  • 固定布局,唯一应该滚动的部分是右侧的项目列表...
  • 这个答案是正确的,但是高度需要以像素为单位,而不是百分比...jsfiddle.net/zS8vy/4
  • 问题是我事先不知道它的高度是多少,需要100%的屏幕减去表头单元格的大小...
【解决方案3】:
table tr td.rightScroll {
    width: 200px;
    height: auto; //change height to Auto
    border-left: 1px solid black;
    background-color: #999;
    padding: 5px;
}

table tr td.rightScroll {
    vertical-align: top;  //Align scrollable div to top inside <td>
}

table tr td.rightScroll div {
    width: 100%;
    height: 300px; //Give fixed height to enable scroll to <DIV>
    overflow-y:auto;
}

【讨论】:

  • 嗨,问题是我不知道给 div 的大小,它应该是 100% 的屏幕减去标题的大小...
  • @jjv360 请阅读这篇文章可能对您理解有所帮助-link
猜你喜欢
  • 2011-05-30
  • 2023-03-06
  • 2015-12-28
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
相关资源
最近更新 更多