html - 将可滚动表格列与CSS中的标题对齐

标签 html css

JsFiddle 网址:http://jsfiddle.net/gfy4pwrr/1

<table cellspacing="0" cellpadding="0" border="0" width="325" >
  <tr>
    <td>
       <table cellspacing="0" cellpadding="1" border="1" width="300" >
         <tr>
            <th>Full Name</th>
            <th>Status</th>
            <th>Last reported</th>
         </tr>
       </table>
    </td>
  </tr>
  <tr>
    <td>
       <div class ='cont' style="width:325px; height:48px; overflow:auto;">
         <table class='data' cellspacing="0" cellpadding="1" border="1" width="300"  >
           <tr>
             <td>col 1 data 1</td>
             <td>col 2 data 1</td>
             <td>col 3 data 1</td>
           </tr>
           <tr>
             <td>col 1 data 2</td>
             <td>col 2 data 2</td>
             <td>col 3 data 2</td>
           </tr>
           <tr>
             <td>col 1 data 3</td>
             <td>col 2 data 3</td>
             <td>col 3 data 3</td>
           </tr>
         </table>  
       </div>
    </td>
  </tr>
</table>

列与标题不对齐。

我希望用于数据的表格与标题对齐。

第二个表的 td width=100px 不工作。

最佳答案

我会摆脱嵌套表格并根据 w3c 规范使用表格元素的语义。诀窍是使用正确的元素,但操纵浏览器显示它们的方式。 <table> , <thead><tbody>可以显示为 block 元素,而每一行都可以是一个表格(保留 <td><th> 默认显示为表格单元格)。

我已经在 JSFiddle 中展示了它.但它基本上归结为一个简单的表结构:

<table>
    <thead>
        <tr>
            <th>Full Name</th>
            <th>Status</th>
            <th>Last reported</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>col 1 data 1</td>
            <td>col 2 data 1</td>
            <td>col 3 data 1</td>
        </tr>
    </tbody>
</table>

并在 <tbody> 上设置溢出的 css 显示属性:

table, tbody, thead {
    display: block;
}
tbody, thead {
    overflow-y: scroll;
}
tbody {
    height: 100px;
}
tr {
    display: table;
    ...
}

回到列宽的问题。除了在每个表中的每个单元格上设置相同的宽度 ( <tr> ) 之外,没有其他方法可以解决这个问题。在 fiddle 中,我将其设置为 33.33%:

td , th {
    width: 33.33%;
    ...
}

对于 Windows,有必要在 <thead> 中显示滚动条否则它的大小与 <tbody> 不同.要隐藏它,有一个小技巧:

thead {
    margin-right: -300px;
    padding-right: 300px;
} 

关于html - 将可滚动表格列与CSS中的标题对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30079298/

相关文章:

html - 如何将来自外部网站的元素居中

css - 自定义 Bootstrap 4 css

javascript - 如果总计无效,则将字段文本和边框设置为红色

php - 跨越许多页面的表单

javascript - 在 jQuery 中添加增量属性?

html - CSS 未正确对齐

html - 具有 CSS 背景图像的响应式元素

html - Internet Explorer 问题

html - CSS "Background-image: url(...)"在我的网站上不起作用

javascript - 如何正确使用媒体查询(css)?