【问题标题】:Table's scrollbar pushing text to left?表格的滚动条将文本向左推?
【发布时间】:2019-04-04 05:49:35
【问题描述】:

我不明白为什么我的浏览器(最新的 Chrome)不断在表格单元格和滚动条之间添加空间(我用红色突出显示):

当我将表格 HTML 放入 JSFiddle 时,它​​确实没有有这个额外的空间 (https://jsfiddle.net/m0c3twda/1/)。

.table-container{
    margin-left:  auto;
    margin-right:  auto;
    width: 80vw;  /* set the width of the table to 80% of view width */
}

#image-list {
    overflow-y: scroll;
    overflow-x: visible;
    height: 100px;
    display:  block;
    width:  100%;
    margin-top: 20px;
    margin-left:  auto;
    margin-right: auto;
}

#image-list tr{
    display: table-row;
    padding:  0px;
}

#image-list td{
    padding-left:  3px;
    padding-right:  3px;
}

#image-list tr td:first-child{
    text-align: left;
}

#image-list tr td:nth-child(2){
    text-align: center;
}

#image-list tr td:nth-child(3){
    text-align: right;
}
<div class='table-container'>
        <table id='image-list'>
            <tr class="row">
                <td><a class="image-link" href="/index/Chrysanthemum%20-%20Copy.jpg"> Chrysanthemum - Copy.jpg </a></td>
                <td><a class="image-link" href="/index/Chrysanthemum.jpg"> Chrysanthemum.jpg </a></td>
                <td><a class="image-link" href="/index/Desert%20-%20Copy.jpg"> Desert - Copy.jpg </a></td>
            </tr>
            <tr class="row">
                <td><a class="image-link" href="/index/Desert.jpg"> Desert.jpg </a></td>
                <td><a class="image-link" href="/index/Hydrangeas%20-%20Copy.jpg"> Hydrangeas - Copy.jpg </a></td>
                <td><a class="image-link" href="/index/Hydrangeas.jpg"> Hydrangeas.jpg </a></td>
            </tr>

            ...

            <tr class="row">
                <td><a class="image-link" href="/index/test%20%282%29.jpg"> test (2).jpg </a></td>
                <td><a class="image-link" href="/index/test%20%283%29.jpg"> test (3).jpg </a></td>
                <td><a class="image-link" href="/index/test%20%284%29.jpg"> test (4).jpg </a></td>
            </tr>
            <tr class="row">
                <td><a class="image-link" href="/index/Tulips.jpg"> Tulips.jpg </a></td>
            </tr>
      </table>
</div>

https://jsfiddle.net/m0c3twda/1/ -- 注意: JSFiddle 中的行比较多,为了简单起见,我只是在这里发布了一些。

我也试过 html {overflow-y: scroll} 和 suggested here 但同样的事情发生了。

出于某种原因,我怀疑它在 .table-container{} css 中,除非我完全删除它,它仍然会在第三列和滚动条之间添加空间...

没有 Javascript/jQuery 等,全是 HTML + CSS(虽然是通过 Flask 生成的)。

我可能忽略或不考虑什么?

【问题讨论】:

  • class="row" 是否在 标签上引用 Bootstrap
  • 如果你拉伸 JSFiddle,它最终会有那个空白。看起来这就是文本结束的地方,这就是 tbody 的宽度
  • @JakeG - 不,我没有使用 Bootstrap。我最初为 CSS 设置了该类,但从未使用过它。我从tr 中删除了class="row",并从a 标签中删除了class="image-link",看看会发生什么,我得到了相同的行为。

标签: html css html-table


【解决方案1】:

所以这里有一些事情需要重新考虑; See updated fiddle 添加了一些视觉辅助。

对于初学者,没有理由更改display,它是一张桌子,让它成为一张桌子。通过将其更改为block,嵌套的 tr 会丢失它们应该在上下文中的内容,并且 chrome 将在您的行周围应用&lt;tbody&gt;,最后的单个&lt;td&gt; 总是会导致布局问题,因为它基本上是如果在测量/排列/绘画时缺少 colspan 以充当具有列的有效行,则标记损坏。

我们还让容器处理overflow,并让border-collapse 将间距的缩小作为display: table 的一个属性来处理,而不是像之前提到的那样将td 定位为display: block 的子级。

无论如何,希望这会有所帮助。干杯!

【讨论】:

  • 是的!感谢您的回答和解释!我需要阅读更多关于border-collapse 和表格的信息。在#image-list 中,删除display 是否与删除display: table 执行相同的操作?
  • 别想太多。让默认值完成它们的工作,例如 &lt;table&gt; 元素上的 display: table 是多余的,因为它已经是一个表格,并且浏览器已经为您应用了该 css 属性。熟悉css box model 也会让生活更轻松:)
  • 哦,我只是想确保这样做是多余的:P ...我一直在学习 HTML/CSS,很多建议都非常...奇怪。我没有添加block 显示只是因为...我发誓我一定在一些兔子洞解决方案中看到了我遇到的另一个问题,所以我正在努力走向成功,一次一个拼凑! :D(感谢您的链接,非常感谢!)
  • 别担心,我们都去过那里。
猜你喜欢
相关资源
最近更新 更多
热门标签