如何使 CSS 表格适合屏幕宽度?

Posted

技术标签:

【中文标题】如何使 CSS 表格适合屏幕宽度?【英文标题】:How can I make a CSS table fit the screen width? 【发布时间】:2011-05-13 08:01:09 【问题描述】:

当前表格太宽,导致浏览器添加水平滚动条。

【问题讨论】:

@define 表格的宽度然后你不会得到水平条。 @all: 好吧,我是不是错过了什么? OP 说表格 “太宽,导致浏览器添加水平滚动条。” 并且有三个“使用 100% 的宽度”答案。如果桌子已经太宽,那不会有任何区别。它不适用于 CSS (jsbin.com/emivi4),也不适用于 width 属性 (jsbin.com/emivi4/2)。 @T J 克劳德;水平条可能是因为绝对宽度大于浏览器宽度;将其设置为 100% 将确保它与浏览器具有相同的宽度。否决所有答案并不适合“我错过了什么吗?” @TJ,他可能给出了比屏幕宽度更大的宽度,这显示了右侧的水平条...如果您为 table 提供 2000 px 宽度。在 1000px 监视器上,我们可能会看到水平滚动条, @TJ,你为什么把他们都投下来,他们是对的,如果你 100%width 你不会碰到水平滚动条。 【参考方案1】:

CSS:

table  
    table-layout:fixed;

使用 cmets 的 CSS 更新:

td  
    overflow: hidden; 
    text-overflow: ellipsis; 
    word-wrap: break-word;

对于手机,我保留了表格宽度,但为表格分配了一个额外的 CSS 类以启用水平滚动(表格将不再越过移动屏幕):

@media only screen and (max-width: 480px) 
    /* horizontal scrollbar for tables if mobile screen */
    .tablemobile 
        overflow-x: auto;
        display: block;
    

足够了。

【讨论】:

td 溢出:隐藏;文本溢出:省略号; + td word-wrap: break-word; 是的,但我怎样才能保持列宽的比例?使用fixed,一切都是一样的宽度.. 谢谢!!第三个不错!所以这真的适用于移动设备吗?【参考方案2】:

如果表格内容 太宽(如this example),除了更改内容以使浏览器能够以更窄的格式显示之外,您无能为力.与之前的答案相反,如果内容太宽,将宽度设置为 100% 绝对没有效果(如该链接和 this one 所示)。浏览器已经尽可能地尝试将表格保持在左右边距内,如果不能,则只使用水平滚动条。

您可以通过一些方法更改内容以使表格更窄:

减少列数(也许将一张巨表拆分为多个独立的表)。 如果您在任何内容(或旧的nowrap 属性、 nobr 元素等)上使用 CSS white-space: nowrap,请查看是否可以不使用它们,以便浏览器可以选择包装该内容以减小宽度。 如果您使用非常宽的边距、填充、边框等,请尝试减小它们的大小(但我相信您已经想到了这一点)。

如果表格太宽,但您没有找到合适的理由(内容不是那么宽等),您必须提供有关如何设置表格样式的更多信息,周围的元素等。同样,默认情况下,浏览器会尽可能避免滚动条。

【讨论】:

【参考方案3】:
table  width: 100%; 

由于正文中使用了所有边距和填充,因此不会产生您期望的确切结果。所以如果脚本没问题,那就使用 Jquery。

$("#tableid").width($(window).width());

如果没有,使用这个sn-p

<style>
    body  margin:0;padding:0; 
</style>
<table  border="1">
    <tr>
        <td>Just a Test
        </td>
    </tr>
</table>

您会注意到宽度完全覆盖了页面。

主要的事情是太无效了marginpadding,就像我在正文中展示的那样,那么你就准备好了。

【讨论】:

对不起,T.J.我认为你有很多胆量说 jQuery != javascript。你甚至知道 jQuery 是"a JavaScript Library"。此外..我说IF scripts are OKAY已经完美地表达了自己 @Starx:你误读了我的评论。我的意思不是说 jQuery 不使用 JavaScript,而是认为任何进行 Web 开发的人都会自动使用 jQuery 的假设是无效的。很多人不这样做,他们要么不使用库,要么使用Prototype、YUI、Closure 或any of several others。毫无疑问,jQuery 是一个很棒的 JavaScript 库;将它(或脚本)引入关于 html/CSS 的问题是没有用的。 @T.J.克劳德和?您是否找到任何使用 HTML 或 CSS 的解决方案?如果没有,那么唯一的方法就是使用 JavaScript! @Nyuszika7H:是什么让您认为 OP 的问题没有 HTML/CSS 解决方案? @Nyuszika7H,实际上我已经发布了一个可以作为解决方案的 sn-p.. 但这取决于它之后的其他嵌套元素,表格的宽度是否为 100% ,但这只是正确使用边距和填充。【参考方案4】:

将表格放入容器元素中,该元素具有

溢出:滚动; 最大宽度:95vw;

或使表格适合屏幕并溢出:滚动所有表格单元格。

【讨论】:

【参考方案5】:

您应该使用 vhvw,而不是使用 % 单位(另一个元素的宽度/高度)。 你的代码是:

your table 
  width: 100vw;
  height: 100vh;

但是,如果文档小于100vh100vw,则需要将大小设置为文档的大小。

(table).style.width = window.innerWidth;
(table).style.height = window.innerHeight;

【讨论】:

【参考方案6】:

在视口宽度相关单位中设置font-size,例如:

table font-size: 0.9vw;

当页面太窄时,这会导致字体不可读,但有时这是可以接受的。

【讨论】:

【参考方案7】:

您遇到的问题已经有了很好的解决方案。每个人都忘记了 CSS 属性font-size:最后但并非最不重要的解决方案。可以将字体大小减小 2 到 3 个像素。用户可能仍然可以看到它,并且您可以在一定程度上减小表格的宽度。这对我有用。我的表格有 5 列,其中 4 列完美显示,但第五列超出了视口。为了解决这个问题,我减小了字体大小,并将所有五列都放在屏幕上。

table th td 
  font-size: 14px;

供您参考,如果您的表格有太多列并且您无法减少,请缩小字体大小。它将摆脱水平滚动。有两个优点:您的移动 web 样式将保持不变(没有水平滚动也很好),当用户看到小尺寸时,大多数用户会将表格放大到他们舒适的水平。

【讨论】:

以上是关于如何使 CSS 表格适合屏幕宽度?的主要内容,如果未能解决你的问题,请参考以下文章

表格不适合屏幕宽度

如何使列的宽度适合其在 HTML 表格中的内容?

如何用CSS使图片自适应显示宽度

如何使用 SASS/CSS 使 HTML 表格占满宽度

如何使标签页的宽度适合 TabControl 的宽度

如何使图像占据屏幕的整个宽度? (html,css)