西西河

主题:【原创】css 控制 table全屏宽,长则滚动,短则自扩 -- 铁手

共:💬1 🌺8
分页树展主题 · 全看首页 上页
/ 1
下页 末页
  • 家园 【原创】css 控制 table全屏宽,长则滚动,短则自扩

    表格化的数据在网页中显示有两个问题比较常见。一是如果列比较少,内容比较短,则整个表格会挤缩在一起,留白太多。再就是如果列比较多,那么整个表格在既定空间里放不下,最好是能够提供滚动,这样,表格里的内容在不会挤成一个个竖条。

    经过一段时间琢磨和尝试,用以下 css 可以实现上面的需求,做个笔记记录分享。

    table {
     display: block;
     overflow-x: auto;
     /* 和下面 tbody 配合来给表格提供滚动条*/
     width: 99%;
     margin: 0.5rem auto;
    }
    tbody {
     white-space: nowrap;
     /* 万一列太多,内容太多,还是一直延伸*/
    }
    table > tbody > tr > th,
    table > tbody > tr > td {
     width: 1%;
     /* !!!怪异。为让各列自动调整宽度
     必须设定第一行第一列宽度为小值 */
    }
    

    基本思路是:

    table block 来定宽显示并居中,表格内内容多少无关。

    table overflow 来给 tbody 超宽时提供滚动条。

    为此,需要设定 tbody nowrap。

    长内容时,出现滚动条,没问题。但是,短内容时,虽然 table 宽度如上所设定,但是 tbody 的宽度是各列相加,却达不到 table 的宽度,导致各列显得被挤压在一起。奇怪的是,如果设定第一列的宽度为很小的%值,则各列会平分总宽度,窄列拓宽,均匀分布到整个表格宽度。还奇怪的是,这个宽度值还不能用 px 来设定。

分页树展主题 · 全看首页 上页
/ 1
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河