具有固定列宽和最大高度的 CSS 表格

     2023-03-06     28

关键词:

【中文标题】具有固定列宽和最大高度的 CSS 表格【英文标题】:CSS table with fixed column widths and max height 【发布时间】:2019-07-31 18:16:25 【问题描述】:

我正在尝试创建一个具有固定列宽和固定最大高度的表格,它会滚动到最大高度之外。

阅读后,我会使用 table-layout:fixed 并指定列宽来完成第一个任务。我会在桌子上设置 max-height、overflow:auto 和 display:block 来完成第二个。

但是,这些似乎并没有协同工作。列大约是预期宽度的一半。

我的尝试: https://jsfiddle.net/d3y5g9fq/

<table>
<colgroup>
  <col style="width: 30%">
  <col style="width: 50%">
  <col style="width: 20%">
</colgroup>
<thead>
  <tr>
    <th>Col A</th>
    <th>Col B</th>
    <th>Col C</th>
  </tr>
</thead>
<tbody>
  <tr><td>1</td><td>2</td><td>3</td></tr>
</tbody>
</table>
table 
  table-layout: fixed;
  display: block;
  max-height: 100px;
  overflow: auto;

【问题讨论】:

【参考方案1】:

如果您将列宽从百分比更改为视口宽度 (vw),它应该可以按预期工作,但并不完全符合预期。视口大小应该根据整个视口的大小来调整它的大小,但是如果您将其包装在 div 中,width 为 70%,那么在这种情况下它将像百分比而不是 vw .

vw 与 100% 的父 width 一起使用:

table 
  table-layout: fixed;
  display: block;
  max-height: 100px;
  overflow: auto;


p 
  background-color: blue;
  width: 100%;


table, td, th 
  text-align: center;
  border: 1px solid black;
<p>Hi! </p>
<table>
<colgroup>
  <col style="width: 30vw">
  <col style="width: 50vw">
  <col style="width: 20vw">
</colgroup>
<tbody>
  <tr>
    <th>Col A</th>
    <th>Col B</th>
    <th>Col C</th>
  </tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
</tbody>
</table>

vw 与70% 的父width 一起使用:

table 
  table-layout: fixed;
  display: block;
  max-height: 100px;
  overflow: auto;


p 
  background-color: blue;
  width: 100%;


table, td, th 
  text-align: center;
  border: 1px solid black;
<p>Hi! </p>
<div style="width: 70%">
<table>
<colgroup>
  <col style="width: 30vw">
  <col style="width: 50vw">
  <col style="width: 20vw">
</colgroup>
<tbody>
  <tr>
    <th>Col A</th>
    <th>Col B</th>
    <th>Col C</th>
  </tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
</tbody>
</table>
<div>

不完全是你所期望的......为什么?在极少数情况下,vwvh 无法按预期工作。我自己从来没有完全弄清楚为什么,但我猜它出于某种原因将视口误解为单个元素。

如果你想在语法上正确,你也可以使用em而不是vw,这样会得到完全相同的结果:

em 与 100% 的父 width 一起使用:

table 
  table-layout: fixed;
  display: block;
  max-height: 100px;
  overflow: auto;


p 
  background-color: blue;
  width: 100%;


table, td, th 
  text-align: center;
  border: 1px solid black;
<p>Hi! </p>
<table>
<colgroup>
  <col style="width: 30em">
  <col style="width: 50em">
  <col style="width: 20em">
</colgroup>
<tbody>
  <tr>
    <th>Col A</th>
    <th>Col B</th>
    <th>Col C</th>
  </tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
</tbody>
</table>

em 与70% 的父width 一起使用:

table 
  table-layout: fixed;
  display: block;
  max-height: 100px;
  overflow: auto;


p 
  background-color: blue;
  width: 100%;


table, td, th 
  text-align: center;
  border: 1px solid black;
<p>Hi! </p>
<div style="width: 70%">
<table>
<colgroup>
  <col style="width: 30em">
  <col style="width: 50em">
  <col style="width: 20em">
</colgroup>
<tbody>
  <tr>
    <th>Col A</th>
    <th>Col B</th>
    <th>Col C</th>
  </tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>1</td><td>2</td><td>3</td></tr>
</tbody>
</table>
<div>

【讨论】:

哇!我认为 vw 是从整个页面大小(“视口宽度”)计算出来的。我想我错了......为什么即使我将表格包装在宽度为 70% 的 div 中,这仍然有效? 我已经编辑了我的答案以进一步扩展它。如果你想在语法上正确,你可以使用em 而不是vw。在某些情况下,视口大小无法按预期工作,因此不要让这种“破碎”的情况改变您对vwvh 的理解。 99% 的时间,它是使用整个页面大小计算的。

CSS - tr上的固定高度和桌子上的固定高度?

...le?【发布时间】:2016-05-0120:00:54【问题描述】:我需要有具有固定高度行的表格,并且该表格本身必须具有固定高度。例如,所有行的高度为8像素,表格的高度为400像素。如果行数少于表格的总高度,那么表格的剩余部分应该... 查看详情

css网格可变列宽和换行

...续我已经设法让列显示和换行,但只有如果我为列定义了固定宽度https://stackblitz.com/edit/angular4-dxkvmt如 查看详情

怎样使word表格的宽度高度固定不变

...定高度”,输入或调整高度值,将“行高值是”调整为“固定值”。3、单击“列”选项卡,勾选“指定宽度”,输入或调整宽度值,单击“确定”按钮。参考技术A1、选中整个表格。右键-“表格属性”2、在表格属性对话框,... 查看详情

怎么设置dialog的宽和高度

参考技术A方法一:选择表,然后右键单击并选择表格属性,你会看到列和行属性,表,其中有可以精确设置宽度设置。方法二:拖动鼠标来调整的时间列宽,按住ALT键,就可以精确地调整列宽 查看详情

word中如何固定表格的宽和高

要固定表格的宽和高,可以执行如下操作步骤:1.选取整个表格,单击鼠标右键,在随即弹出的快捷菜单中执行“表格属性”命令,打开“表格属性”对话框。2.打开“表格”选项卡,在“尺寸”选项区域中,选中“指定宽度... 查看详情

HTML 表格 - 固定和多变量列宽

...度的50%)。一些列包含固定大小的按钮,因此这些列应该具有固定大小,例如100像素。有些列中有文本,所以我希望这些列具有可变的列宽。例如:Column1:20%of(tablew 查看详情

如何制作具有固定列宽的 chrome 尊重表

】如何制作具有固定列宽的chrome尊重表【英文标题】:Howtomakechromerespecttableswithfixedcolumnwidth【发布时间】:2014-04-1700:08:24【问题描述】:我有一个基本的自制“表格”插件,它支持水平和垂直滚动,在渲染时要固定列宽。所以我... 查看详情

如何将 html 列宽固定为其内容的最大宽度?

】如何将html列宽固定为其内容的最大宽度?【英文标题】:Howtofixanhtmlcolumnwidthtothemaxwidthofitscontent?【发布时间】:2011-11-0801:45:54【问题描述】:我正在尝试为输入表单格式化表格,如下所示。表格看起来有点像这样:Name:Timeofday... 查看详情

自动布局:具有可变高度和两个标签的表格单元格

】自动布局:具有可变高度和两个标签的表格单元格【英文标题】:Autolayout:tablecellwithvariableheightandtwolabels【发布时间】:2015-05-1716:23:30【问题描述】:我遇到了一些高级自动布局主题,需要您的帮助。我有一个简单的自定义表... 查看详情

固定行跨度和表格布局时的表格列宽

】固定行跨度和表格布局时的表格列宽【英文标题】:Tablecolumnwidthwhenhavingrowspanandtable-layoutfixe【发布时间】:2018-01-2501:42:48【问题描述】:我一直在固定我的html表格的第二列的宽度。下面是我的桌子的打印屏幕:下面是CSS代码... 查看详情

如何获得固定的表格列宽

】如何获得固定的表格列宽【英文标题】:Howtogetfixedtablecolumnswidth【发布时间】:2012-01-0216:44:28【问题描述】:如何将单个表格列固定为特定宽度,以便无论该列中有多少文本,列的宽度都保持不变?&lt;col&gt;标签只适用... 查看详情

如何在 CSS 中制作具有相同列宽的表格?

】如何在CSS中制作具有相同列宽的表格?【英文标题】:HowtomakeatablewithequalcolumnwidthsinCSS?【发布时间】:2014-02-2501:35:41【问题描述】:我有一个包含如下表格的文档:<table><tr><td>Word</td><td>Definition</td>&l... 查看详情

css表格固定列宽

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv=" 查看详情

具有固定标题、滚动条和动态高度的 HTML 表格

】具有固定标题、滚动条和动态高度的HTML表格【英文标题】:HTMLtablewithfixedheader,scrollbaranddynamicheight【发布时间】:2017-10-0319:34:29【问题描述】:我有一个问题已经回答了很多次,但我的要求是定制的,我想要一个HTMl表格,带... 查看详情

具有固定高度的表格单元格中的自动布局多行标签

】具有固定高度的表格单元格中的自动布局多行标签【英文标题】:Autolayoutmultilinelabelinatablecellwithfixheight【发布时间】:2014-08-1410:31:32【问题描述】:我有一个固定高度单元格的表格视图。在单元格中有3个标签;名称、地址和... 查看详情

基于内部图像宽度的灵活列宽(固定高度)

】基于内部图像宽度的灵活列宽(固定高度)【英文标题】:Flexiblecolumnwidthbasedonimagewidthinside(withfixedheight)【发布时间】:2022-01-2003:49:17【问题描述】:我使用Elementor创建了一个10列的容器。如何根据列宽固定图像高度内的图像... 查看详情

嵌套 HTML 表格的匹配表格高度

...一个例子;实际表有更多的行和列。我想使用表格,因为列宽和行高的自然重排以适应表格数据,而不必担心容器大小( 查看详情

具有全宽和可变高度的 UIImageView

】具有全宽和可变高度的UIImageView【英文标题】:UIImageViewwithfullwidthandvariableheight【发布时间】:2018-10-2406:11:28【问题描述】:我正在开发一个我想要UIImageview的应用程序,例如instagram提要。我将主视图的前导和尾随空间设置为零... 查看详情