简洁版本
运行下面的代码片段(跳过代码;如果可以的话我会折叠它):
table.listview {
background-color: #fcfcfc;
color: #061616;
white-space: nowrap;
border-collapse: separate;
border-spacing: 0;
border: 1px solid black;
margin: 0;
width: 100%;
}
.listview caption {
text-align: left;
font-family: Georgia, "Times New Roman", serif;
color: DarkGreen;
background: transparent;
padding: 0.375em 0.25em 0.5em 0;
font-variant: small-caps;
}
.listview thead {
background-color: ButtonFace;
}
tr:hover {
background: #E5F3FF;
}
.listview th {
background-color: ButtonFace; /*requird to make sticky work*/
color: black;
font-weight: normal;
border-bottom: 1px solid #d5d5d5;
border-right: 1px solid #dedfe7;
resize: horizontal;
overflow: hidden; /* required to make resize work */
text-align: left;
padding-left: 0.5em;
position: sticky;
top: 0; /* required to make sticky work ( https://stackoverflow.com/a/43707215) */
}
.listview th:hover {
background: #dde9f6;
background: linear-gradient(180deg, #e8f4ff 0%, #e8f4ff 36%, #c0e9ff 36%, #bbe4fd 100%);
border-right: 1px solid #6bb8e6;
border-bottom: 1px solid #99c6e3;
}
.listview td {
padding-left: 0.3em;
text-overflow: ellipsis;
white-space: nowrap;
}
.listview td:hover {
overflow: visible;
white-space: unset;
}
<TABLE class="listview">
<CAPTION>Unit Tests</CAPTION>
<THEAD>
<TR>
<TH>Class</TH>
<TH>Method</TH>
<TH>Test result</TH>
<TH>Error</TH>
</TR>
</THEAD>
<TBODY>
<TR>
<TD>highMountain.ToolkitTests</TD>
<TD>testGetSwervingBearings</TD>
<TD>Success</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testgetMilfordTrunnions</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testupdateMilfordTrunnionsTotals</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testlockMilfordTrunnionForMachining</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testfetchHydrocopticMarselvanes</TD>
<TD>Success</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testGetLunawaineShaft</TD>
<TD>Success</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testresumeMachining</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testsavePanametricFanPositions</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testloadPanametricFanPositions</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testgetTurboEncabulatorStatistics</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testgetTurboEncabulatorBaseRunTime</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testgetTurboEncabulatorDuration</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testpauseSinusoidalDepleneration</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testpassSemiboloid</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>teststartSemiboloidSlots</TD>
<TD>Failed</TD>
<TD>Optional[com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'TurboEncabulator'.]</TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>teststopSemiboloidSlots</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testaddSemiboloidSlots</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testGetActiveTremmyPipe</TD>
<TD>Success</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testGetTremmyPipe</TD>
<TD>Failed</TD>
<TD>Optional[java.lang.Exception: Hibernate Session connection does not wrap type: java.sql.Connection]</TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testaddTremmyPipe</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testgetTremmyPipeHasHydrocopticVanesAddedThisPatametricFan</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
</TBODY>
</TABLE>
请注意这是多么可怕:
- 列表视图比屏幕宽
- 您必须水平滚动才能看到所有列
- 即使表头有调整大小的夹具
- 他们不工作
我想弄清楚如何让它更好地工作(即像 ListView 一样)
长版
我正在尝试设置 HTML 表格的样式,使其表现得像列表视图:
- 列表视图标题保持可见(
position: sticky
)当你向下滚动时:complete
- 单元格中的文本现在不应换行(
white-space: nowrap
): complete
- 溢出文本应替换为省略号(
text-overflow: ellipsis
): complete?
- 将鼠标悬停在截止文本上应该会显示它(
td:hover { overflow: visible; white-space: unset;}
): complete?
- 列表视图是
width: 100%
wide: fail
- 列的大小是可调整的(
resize: horizontal; overflow: hidden;
): fails
除了我无法工作的重要部分:可调整大小的较窄的列和截断长文本并将其替换为省略号。
换句话说,我希望它的外观和行为如下:
研究工作
- 如何实现文本溢出:具有灵活列的 HTML 表中的省略号 https://stackoverflow.com/questions/53673075/how-to-achieve-text-overflow-ellipsis-in-a-html-table-with-flexible-columns
- 如何调整 html 表格列的大小? https://stackoverflow.com/questions/41674548/how-to-make-html-table-columns-resizable
- CSS 文本溢出:省略号;不工作? https://stackoverflow.com/questions/17779293/css-text-overflow-ellipsis-not-working
- 如果文本长于表格单元格宽度,则将文本截断到最后一个单词 https://stackoverflow.com/questions/46652612/cut-off-text-to-the-last-word-if-longer-than-table-cell-width
- 如何在 HTML 表格中使用省略号? https://stackoverflow.com/questions/71916426/how-can-i-make-ellipsis-work-in-an-html-table
- HTML 表格截断长文本并在悬停/单击时显示全文 https://stackoverflow.com/questions/59286359/html-table-cut-off-long-text-and-show-full-text-on-hover-click
- 表列文本溢出省略号(宽度以 % 为单位) https://stackoverflow.com/questions/11116739/table-column-text-overflow-ellipsis-width-in
- CSS 文本省略号和 100% 宽度 https://stackoverflow.com/questions/27314149/css-text-ellipsis-and-100-percent-width
- 表格单元格中的 CSS 文本溢出? https://stackoverflow.com/questions/9789723/css-text-overflow-in-a-table-cell
- 隐藏某些文本字符串并用省略号替换 - 悬停时显示 https://stackoverflow.com/questions/32079039/hide-certain-string-of-text-and-replace-with-ellipsis-show-on-hover
- 如何允许宽度为 100% 的 CSS 表格列溢出表格? https://stackoverflow.com/questions/47445113/how-can-i-allow-a-css-table-column-with-width-100-to-overflow-table
- CSS隐藏具有不同宽度列的表格上的溢出文本 https://stackoverflow.com/questions/17604139/css-hide-overflow-text-on-a-table-with-different-width-columns
- 宽度 100% 元素中的文本溢出省略号实现 https://stackoverflow.com/questions/62218066/text-overflow-ellipsis-implementation-in-width-100-element
让可调整大小的列发挥作用的关键是设置table-layout: fixed https://developer.mozilla.org/en-US/docs/Web/CSS/table-layout这使用第一行的宽度来设置表格列的宽度。然后,为了使截断正常工作,添加overflow: hidden
to the td
s。使文本在悬停时可读是困难的部分,我选择使用 JavaScript 来设置title
每个属性td
与元素.innerText
这给出了您在图像中说明的效果,并且您不需要.listview td:hover
风格声明。
document.querySelectorAll('td').forEach(td => td.title = td.innerText)
table.listview {
background-color: #fcfcfc;
color: #061616;
white-space: nowrap;
border-collapse: separate;
border-spacing: 0;
border: 1px solid black;
margin: 0;
width: 100%;
table-layout: fixed;
}
.listview caption {
text-align: left;
font-family: Georgia, "Times New Roman", serif;
color: DarkGreen;
background: transparent;
padding: 0.375em 0.25em 0.5em 0;
font-variant: small-caps;
}
.listview thead {
background-color: ButtonFace;
}
tr:hover {
background: #E5F3FF;
}
.listview th {
background-color: ButtonFace;
/*requird to make sticky work*/
color: black;
font-weight: normal;
border-bottom: 1px solid #d5d5d5;
border-right: 1px solid #dedfe7;
resize: horizontal;
overflow: hidden;
/* required to make resize work */
text-align: left;
padding-left: 0.5em;
position: sticky;
top: 0;
/* required to make sticky work ( https://stackoverflow.com/a/43707215) */
}
.listview th:hover {
background: #dde9f6;
background: linear-gradient(180deg, #e8f4ff 0%, #e8f4ff 36%, #c0e9ff 36%, #bbe4fd 100%);
border-right: 1px solid #6bb8e6;
border-bottom: 1px solid #99c6e3;
}
.listview td {
padding-left: 0.3em;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.listview td:hover {}
<TABLE class="listview">
<CAPTION>Unit Tests</CAPTION>
<THEAD>
<TR>
<TH>Class</TH>
<TH>Method</TH>
<TH>Test result</TH>
<TH>Error</TH>
</TR>
</THEAD>
<TBODY>
<TR>
<TD>highMountain.ToolkitTests</TD>
<TD>testGetSwervingBearings</TD>
<TD>Success</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testgetMilfordTrunnions</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testupdateMilfordTrunnionsTotals</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testlockMilfordTrunnionForMachining</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testfetchHydrocopticMarselvanes</TD>
<TD>Success</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testGetLunawaineShaft</TD>
<TD>Success</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testresumeMachining</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testsavePanametricFanPositions</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testloadPanametricFanPositions</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testgetTurboEncabulatorStatistics</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testgetTurboEncabulatorBaseRunTime</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testgetTurboEncabulatorDuration</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testpauseSinusoidalDepleneration</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testpassSemiboloid</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>teststartSemiboloidSlots</TD>
<TD>Failed</TD>
<TD>Optional[com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'TurboEncabulator'.]</TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>teststopSemiboloidSlots</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testaddSemiboloidSlots</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testGetActiveTremmyPipe</TD>
<TD>Success</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testGetTremmyPipe</TD>
<TD>Failed</TD>
<TD>Optional[java.lang.Exception: Hibernate Session connection does not wrap type: java.sql.Connection]</TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testaddTremmyPipe</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
<TR>
<TD>contoso.grobber.frobberGrob</TD>
<TD>testgetTremmyPipeHasHydrocopticVanesAddedThisPatametricFan</TD>
<TD>No checks performed</TD>
<TD></TD>
</TR>
</TBODY>
</TABLE>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)