两个表垂直对齐,如何同步宽度/间距? [英] Two tables vertically aligned, how to synchronise the widths/spacing?

查看:99
本文介绍了两个表垂直对齐,如何同步宽度/间距?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我可以有一个可滚动的表,标题行固定在顶部我已经分离的头到一个单独的div中的自己的表。下面的div具有表数据。表的内容各不相同,因此我希望能够使顶部表与下面行的间距和宽度同步,以使标题正好对齐。如何做到这一点?

  [header 1 | header 2 | header3] 
[cell1 | cell2 | cell3]

以便:

  [header 1 |标题2 | header 3] 
[cell1 | cell2 | cell3]


解决方案

尝试此



http://jsfiddle.net/gZTsr/6/ p>

HTML:

 < div id =tableContainerclass = tableContainer> 
< table border =0cellpadding =0cellspacing =0width =100%class =scrollTable>
< thead class =fixedHeader>
< tr class =alternateRow>
< th>标题1< / th>
< th>标题2< / th>
< th>标题3< / th>
< / tr>
< / thead>
< tbody class =scrollContent>
< tr class =normalRow>
< td>单元格内容1 da widim dali she se sinkne kato mu nabiem kancheto s 200000 simvola otgore< / td>
< td>单元格内容2< / td>
< td>单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =normalRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>并重复1< / td>
< td>并重复2< / td>
< td>并重复3< / td>
< / tr>
< tr class =normalRow>
< td>单元格内容1< / td>
< td>单元格内容2< / td>
< td>单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =normalRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>并重复1< / td>
< td>并重复2< / td>
< td>并重复3< / td>
< / tr>
< tr class =normalRow>
< td>单元格内容1< / td>
< td>单元格内容2< / td>
< td>单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =normalRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>并重复1< / td>
< td>并重复2< / td>
< td>并重复3< / td>
< / tr>
< tr class =normalRow>
< td>单元格内容1< / td>
< td>单元格内容2< / td>
< td>单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =normalRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>并重复1< / td>
< td>并重复2< / td>
< td>并重复3< / td>
< / tr>
< tr class =normalRow>
< td>单元格内容1< / td>
< td>单元格内容2< / td>
< td>单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =normalRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>并重复1< / td>
< td>并重复2< / td>
< td>并重复3< / td>
< / tr>
< tr class =normalRow>
< td>单元格内容1< / td>
< td>单元格内容2< / td>
< td>单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =normalRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>并重复1< / td>
< td>并重复2< / td>
< td>并重复3< / td>
< / tr>
< tr class =normalRow>
< td>单元格内容1< / td>
< td>单元格内容2< / td>
< td>单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =normalRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>并重复1< / td>
< td>并重复2< / td>
< td>并重复3< / td>
< / tr>
< tr class =normalRow>
< td>单元格内容1< / td>
< td>单元格内容2< / td>
< td>单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =normalRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>并重复1< / td>
< td>并重复2< / td>
< td>并重复3< / td>
< / tr>
< tr class =normalRow>
< td>单元格内容1< / td>
< td>单元格内容2< / td>
< td>单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =normalRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>并重复1< / td>
< td>并重复2< / td>
< td>并重复3< / td>
< / tr>
< tr class =normalRow>
< td>单元格内容1< / td>
< td>单元格内容2< / td>
< td>单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =normalRow>
< td>更多单元格内容1< / td>
< td>甚至更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>并重复1< / td>
< td>并重复2< / td>
< td>并重复3< / td>
< / tr>
< tr class =normalRow>
< td>单元格内容1< / td>
< td>单元格内容2< / td>
< td>单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =normalRow>
< td>更多单元格内容1< / td>
< td>更多单元格内容2< / td>
< td>更多单元格内容3< / td>
< / tr>
< tr class =alternateRow>
< td>单元格结尾内容1< / td>
< td>单元格内容结束2< / td>
< td>单元格内容结束3< / td>
< / tr>
< / tbody>
< / table>
< / div>

CSS:

 code> body {
background:#FFF;
color:#000;
font:normal normal 12px Verdana,Geneva,Arial,Helvetica,sans-serif;
margin:10px;
padding:0
}

div.tableContainer {
clear:both;
border:1px solid#963;
height:285px; $ b $b overflow:auto;
width:756px
}

/ *重置溢出值为所有非IE浏览器隐藏。 * /
html> body div.tableContainer {
overflow:hidden;
width:756px
}

/ *定义表的宽度。 IE浏览器* /
div.tableContainer表{
float:left;
width:740px
}

/ *定义表的宽度。将16px添加到滚动条的宽度。 * /
/ *所有其他非IE浏览器。 * /
html> body div.tableContainer表{
width:756px
}

/ *将表头设置到固定位置。 Winie 6.x only * /
/ *在WinIE 6.x中,position属性设置为relative的任何元素都是* /
/ *的一个子元素,它有一个overflow属性集,相对值转换为固定。 * /
/ *例如:父元素DIV和tableContainer的类有一个overflow属性设置为auto * /
thead.fixedHeader tr {
position:relative
}

/ *将THEAD元素设置为具有块级属性。所有其他非IE浏览器* /
/ *这使得溢出可以在TBODY元素上工作。所有其他非IE,非Mozilla浏览器* /
html> body thead.fixedHeader tr {
display:block
}

/ *使TH元素pretty * /
thead.fixedHeader th {
background:#C96;
border-left:1px solid#EB8;
border-right:1px solid#B74;
border-top:1px solid#EB8;
font-weight:normal;
padding:4px 3px;
text-align:left
}

/ *使A元素漂亮。使得可以点击的标题* /
thead.fixedHeader a,thead.fixedHeader a:link,thead.fixedHeader a:visited {
color:#FFF;
display:block;
text-decoration:none;
width:100%
}

/ *使A元素漂亮。使得漂亮的可点击标题* /
/ *警告:交换背景的悬停可能会导致问题在WinIE 6.x * /
thead.fixedHeader a:hover {
color:#FFF;
display:block;
text-decoration:underline;
width:100%
}

/ *定义要滚动的表内容* /
/ *设置TBODY元素以具有块级属性。所有其他非IE浏览器* /
/ *这使得溢出可以在TBODY元素上工作。所有其他非IE,非Mozilla浏览器* /
/ *引起的副作用是子TD不再接受width:auto * /
html> body tbody.scrollContent {
display:块;
height:262px; $ b $b overflow:auto;
width:100%
}

/ *使TD元素漂亮。提供用于条带化表的交替类* /
/ * http://www.alistapart.com/articles/zebratables/ * /
tbody.scrollContent td,tbody.scrollContent tr.normalRow td {
background:#FFF;
border-bottom:none;
border-left:none;
border-right:1px solid #CCC;
border-top:1px solid #DDD;
padding:2px 3px 3px 4px
}

tbody.scrollContent tr.alternateRow td {
background:#EEE;
border-bottom:none;
border-left:none;
border-right:1px solid #CCC;
border-top:1px solid #DDD;
padding:2px 3px 3px 4px
}

/ *定义TH元素的宽度:分别为1st,2nd和3rd。 * /
/ *添加16px到最后TH滚动条填充。所有其他非IE浏览器。 * /
/ * http://www.w3.org/TR/REC-CSS2/selector.html#adjacent-selectors * /
html> body thead.fixedHeader th {
width :200px
}

html> body thead.fixedHeader th + th {
width:240px
}

html> body thead。 fixedHeader th + th + th {
width:316px
}

/ *定义TD元素的宽度:分别为1st,2nd和3rd。 * /
/ *所有其他非IE浏览器。 * /
/ * http://www.w3.org/TR/REC-CSS2/selector.html#adjacent-selectors * /
html> body tbody.scrollContent td {
width :200px
}

html> body tbody.scrollContent td + td {
width:240px
}

html> body tbody。 scrollContent td + td + td {
width:300px
}
- >

这只是ilustration。你可以css所有的单元格,如果你想。


So that I can have a scrollable table with the heading row fixed at the top I have seperated the headers into their own table in a seperate div. The div below has the table data. The contents of the table varies and so I wish to be able to synchronise the top table with the spacings and widths of the rows below so that the header lines up exactly. How can I do this?

[header 1|header 2|header3]
[cell1       | cell2    |        cell3]

so that:

[header 1    | header 2|     header 3]
[cell1       | cell2   |        cell3]

解决方案

Try this

http://jsfiddle.net/gZTsr/6/

HTML:

    <div id="tableContainer" class="tableContainer">
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="scrollTable">
<thead class="fixedHeader">
    <tr class="alternateRow">
        <th>Header 1</th>
        <th>Header 2</th>
        <th>Header 3</th>
    </tr>
</thead>
<tbody class="scrollContent">
    <tr class="normalRow">
        <td>Cell Content 1 da widim dali she se sinkne kato mu nabiem kancheto s 200000 simvola otgore</td>
        <td>Cell Content 2</td>
        <td>Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>More Cell Content 1</td>
        <td>More Cell Content 2</td>
        <td>More Cell Content 3</td>
    </tr>
    <tr class="normalRow">
        <td>Even More Cell Content 1</td>
        <td>Even More Cell Content 2</td>
        <td>Even More Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>And Repeat 1</td>
        <td>And Repeat 2</td>
        <td>And Repeat 3</td>
    </tr>
    <tr class="normalRow">
        <td>Cell Content 1</td>
        <td>Cell Content 2</td>
        <td>Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>More Cell Content 1</td>
        <td>More Cell Content 2</td>
        <td>More Cell Content 3</td>
    </tr>
    <tr class="normalRow">
        <td>Even More Cell Content 1</td>
        <td>Even More Cell Content 2</td>
        <td>Even More Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>And Repeat 1</td>
        <td>And Repeat 2</td>
        <td>And Repeat 3</td>
    </tr>
    <tr class="normalRow">
        <td>Cell Content 1</td>
        <td>Cell Content 2</td>
        <td>Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>More Cell Content 1</td>
        <td>More Cell Content 2</td>
        <td>More Cell Content 3</td>
    </tr>
    <tr class="normalRow">
        <td>Even More Cell Content 1</td>
        <td>Even More Cell Content 2</td>
        <td>Even More Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>And Repeat 1</td>
        <td>And Repeat 2</td>
        <td>And Repeat 3</td>
    </tr>
    <tr class="normalRow">
        <td>Cell Content 1</td>
        <td>Cell Content 2</td>
        <td>Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>More Cell Content 1</td>
        <td>More Cell Content 2</td>
        <td>More Cell Content 3</td>
    </tr>
    <tr class="normalRow">
        <td>Even More Cell Content 1</td>
        <td>Even More Cell Content 2</td>
        <td>Even More Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>And Repeat 1</td>
        <td>And Repeat 2</td>
        <td>And Repeat 3</td>
    </tr>
    <tr class="normalRow">
        <td>Cell Content 1</td>
        <td>Cell Content 2</td>
        <td>Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>More Cell Content 1</td>
        <td>More Cell Content 2</td>
        <td>More Cell Content 3</td>
    </tr>
    <tr class="normalRow">
        <td>Even More Cell Content 1</td>
        <td>Even More Cell Content 2</td>
        <td>Even More Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>And Repeat 1</td>
        <td>And Repeat 2</td>
        <td>And Repeat 3</td>
    </tr>
    <tr class="normalRow">
        <td>Cell Content 1</td>
        <td>Cell Content 2</td>
        <td>Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>More Cell Content 1</td>
        <td>More Cell Content 2</td>
        <td>More Cell Content 3</td>
    </tr>
    <tr class="normalRow">
        <td>Even More Cell Content 1</td>
        <td>Even More Cell Content 2</td>
        <td>Even More Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>And Repeat 1</td>
        <td>And Repeat 2</td>
        <td>And Repeat 3</td>
    </tr>
    <tr class="normalRow">
        <td>Cell Content 1</td>
        <td>Cell Content 2</td>
        <td>Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>More Cell Content 1</td>
        <td>More Cell Content 2</td>
        <td>More Cell Content 3</td>
    </tr>
    <tr class="normalRow">
        <td>Even More Cell Content 1</td>
        <td>Even More Cell Content 2</td>
        <td>Even More Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>And Repeat 1</td>
        <td>And Repeat 2</td>
        <td>And Repeat 3</td>
    </tr>
    <tr class="normalRow">
        <td>Cell Content 1</td>
        <td>Cell Content 2</td>
        <td>Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>More Cell Content 1</td>
        <td>More Cell Content 2</td>
        <td>More Cell Content 3</td>
    </tr>
    <tr class="normalRow">
        <td>Even More Cell Content 1</td>
        <td>Even More Cell Content 2</td>
        <td>Even More Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>And Repeat 1</td>
        <td>And Repeat 2</td>
        <td>And Repeat 3</td>
    </tr>
    <tr class="normalRow">
        <td>Cell Content 1</td>
        <td>Cell Content 2</td>
        <td>Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>More Cell Content 1</td>
        <td>More Cell Content 2</td>
        <td>More Cell Content 3</td>
    </tr>
    <tr class="normalRow">
        <td>Even More Cell Content 1</td>
        <td>Even More Cell Content 2</td>
        <td>Even More Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>And Repeat 1</td>
        <td>And Repeat 2</td>
        <td>And Repeat 3</td>
    </tr>
    <tr class="normalRow">
        <td>Cell Content 1</td>
        <td>Cell Content 2</td>
        <td>Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>More Cell Content 1</td>
        <td>More Cell Content 2</td>
        <td>More Cell Content 3</td>
    </tr>
    <tr class="normalRow">
        <td>Even More Cell Content 1</td>
        <td>Even More Cell Content 2</td>
        <td>Even More Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>And Repeat 1</td>
        <td>And Repeat 2</td>
        <td>And Repeat 3</td>
    </tr>
    <tr class="normalRow">
        <td>Cell Content 1</td>
        <td>Cell Content 2</td>
        <td>Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>More Cell Content 1</td>
        <td>More Cell Content 2</td>
        <td>More Cell Content 3</td>
    </tr>
    <tr class="normalRow">
        <td>Even More Cell Content 1</td>
        <td>Even More Cell Content 2</td>
        <td>Even More Cell Content 3</td>
    </tr>
    <tr class="alternateRow">
        <td>End of Cell Content 1</td>
        <td>End of Cell Content 2</td>
        <td>End of Cell Content 3</td>
    </tr>
</tbody>
</table>
</div>

CSS:

    body {
    background: #FFF;
    color: #000;
    font: normal normal 12px Verdana, Geneva, Arial, Helvetica, sans-serif;
    margin: 10px;
    padding: 0
}

div.tableContainer {
    clear: both;
    border: 1px solid #963;
    height: 285px;
    overflow: auto;
    width: 756px
}

/* Reset overflow value to hidden for all non-IE browsers. */
html>body div.tableContainer {
    overflow: hidden;
    width: 756px
}

/* define width of table. IE browsers only                 */
div.tableContainer table {
    float: left;
    width: 740px
}

/* define width of table. Add 16px to width for scrollbar.           */
/* All other non-IE browsers.                                        */
html>body div.tableContainer table {
    width: 756px
}

/* set table header to a fixed position. WinIE 6.x only                                       */
/* In WinIE 6.x, any element with a position property set to relative and is a child of       */
/* an element that has an overflow property set, the relative value translates into fixed.    */
/* Ex: parent element DIV with a class of tableContainer has an overflow property set to auto */
thead.fixedHeader tr {
    position: relative
}

/* set THEAD element to have block level attributes. All other non-IE browsers            */
/* this enables overflow to work on TBODY element. All other non-IE, non-Mozilla browsers */
html>body thead.fixedHeader tr {
    display: block
}

/* make the TH elements pretty */
thead.fixedHeader th {
    background: #C96;
    border-left: 1px solid #EB8;
    border-right: 1px solid #B74;
    border-top: 1px solid #EB8;
    font-weight: normal;
    padding: 4px 3px;
    text-align: left
}

/* make the A elements pretty. makes for nice clickable headers                */
thead.fixedHeader a, thead.fixedHeader a:link, thead.fixedHeader a:visited {
    color: #FFF;
    display: block;
    text-decoration: none;
    width: 100%
}

/* make the A elements pretty. makes for nice clickable headers                */
/* WARNING: swapping the background on hover may cause problems in WinIE 6.x   */
thead.fixedHeader a:hover {
    color: #FFF;
    display: block;
    text-decoration: underline;
    width: 100%
}

/* define the table content to be scrollable                                              */
/* set TBODY element to have block level attributes. All other non-IE browsers            */
/* this enables overflow to work on TBODY element. All other non-IE, non-Mozilla browsers */
/* induced side effect is that child TDs no longer accept width: auto                     */
html>body tbody.scrollContent {
    display: block;
    height: 262px;
    overflow: auto;
    width: 100%
}

/* make TD elements pretty. Provide alternating classes for striping the table */
/* http://www.alistapart.com/articles/zebratables/                             */
tbody.scrollContent td, tbody.scrollContent tr.normalRow td {
    background: #FFF;
    border-bottom: none;
    border-left: none;
    border-right: 1px solid #CCC;
    border-top: 1px solid #DDD;
    padding: 2px 3px 3px 4px
}

tbody.scrollContent tr.alternateRow td {
    background: #EEE;
    border-bottom: none;
    border-left: none;
    border-right: 1px solid #CCC;
    border-top: 1px solid #DDD;
    padding: 2px 3px 3px 4px
}

/* define width of TH elements: 1st, 2nd, and 3rd respectively.          */
/* Add 16px to last TH for scrollbar padding. All other non-IE browsers. */
/* http://www.w3.org/TR/REC-CSS2/selector.html#adjacent-selectors        */
html>body thead.fixedHeader th {
    width: 200px
}

html>body thead.fixedHeader th + th {
    width: 240px
}

html>body thead.fixedHeader th + th + th {
    width: 316px
}

/* define width of TD elements: 1st, 2nd, and 3rd respectively.          */
/* All other non-IE browsers.                                            */
/* http://www.w3.org/TR/REC-CSS2/selector.html#adjacent-selectors        */
html>body tbody.scrollContent td {
    width: 200px
}

html>body tbody.scrollContent td + td {
    width: 240px
}

html>body tbody.scrollContent td + td + td {
    width: 300px
}
-->

This is just ilustration. You can css all the cells if you want.

这篇关于两个表垂直对齐,如何同步宽度/间距?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆