CSS display屬性的table表格布局

項(xiàng)目改造中遇到DIV+CSS實(shí)現(xiàn)的table,新需求需要在表格使用單元格合并,網(wǎng)上調(diào)查返現(xiàn)CSS display:table實(shí)現(xiàn)的table表格,沒有單元格的屬性和樣式,經(jīng)過一番思考,曲折現(xiàn)實(shí)了單元格的合并,即采用正行嵌套一個(gè)單獨(dú)的display:table的DIV,然后在嵌套的表格DIV內(nèi)部通過控制行列數(shù)和行列的高度,實(shí)現(xiàn)單元格合并。個(gè)人建議全新實(shí)現(xiàn)使用<table> HTML標(biāo)簽即可
一、CSS display屬性的表格布局相關(guān)屬性的解釋:
table 此元素會(huì)作為塊級(jí)表格來顯示(類似 <table>),表格前后帶有換行符。
table-row-group 此元素會(huì)作為一個(gè)或多個(gè)行的分組來顯示(類似 <tbody>)。
table-header-group 此元素會(huì)作為一個(gè)或多個(gè)行的分組來顯示(類似 <thead>)。
table-footer-group 此元素會(huì)作為一個(gè)或多個(gè)行的分組來顯示(類似 <tfoot>)。
table-row 此元素會(huì)作為一個(gè)表格行顯示(類似 <tr>)。
table-column-group 此元素會(huì)作為一個(gè)或多個(gè)列的分組來顯示(類似 <colgroup>)。
table-column 此元素會(huì)作為一個(gè)單元格列顯示(類似 <col>)
table-cell 此元素會(huì)作為一個(gè)表格單元格顯示(類似 <td> 和 <th>)
table-caption 此元素會(huì)作為一個(gè)表格標(biāo)題顯示(類似 <caption>)
二、示例代碼
1、普通表格
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>display普通表格</title>
- <style type="text/css">
- .table, .table * {margin: 0 auto; padding: 0;font-size: 14px;font-family: Arial, 宋體, Helvetica, sans-serif;}
- .table {display: table; width: 80%; border-collapse: collapse;}
- .table-tr {display: table-row; height: 30px;}
- .table-th {display: table-cell;font-weight: bold;height: 100%;border: 1px solid gray;text-align: center;vertical-align: middle;background-color:#E5E5E5;}
- .table-td {display: table-cell; height: 100%;border: 1px solid gray; text-align: center;vertical-align: middle;}
- </style>
- </head>
- <body>
- <div class="table">
- <div class="table-tr">
- <div class="table-th">省份/直轄市</div>
- <div class="table-th">GDP(億元)</div>
- <div class="table-th">增長(zhǎng)率</div>
- </div>
- <div class="table-tr">
- <div class="table-td">廣東</div>
- <div class="table-td">72812</div>
- <div class="table-td">8.0%</div>
- </div>
- <div class="table-tr">
- <div class="table-td">河南</div>
- <div class="table-td">37010</div>
- <div class="table-td">8.3%</div>
- </div>
- <div class="table-tr">
- <div class="table-td">江蘇</div>
- <div class="table-td">70116</div>
- <div class="table-td">8.5%</div>
- </div>
- </div>
- </body>
- </html>
運(yùn)行效果
2、列合并實(shí)現(xiàn)表格
實(shí)現(xiàn)思路:基于display:table的表格實(shí)現(xiàn),沒有<table>的rowspan和colspan單元格合并的實(shí)現(xiàn),所以曲折實(shí)現(xiàn),將表格每行單獨(dú)嵌套一個(gè)獨(dú)立的表格,這樣在嵌套的獨(dú)立表格內(nèi)部,單元格合并就能通過控制嵌套表格的行數(shù)和列數(shù)以及單元格的寬高來實(shí)現(xiàn)
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>基于display列合并表格</title>
- <style type="text/css">
- .table, .table * {margin: 0 auto; padding: 0;font-size: 14px;font-family: Arial, 宋體, Helvetica, sans-serif;}
- .table {display: table; width: 80%; border-collapse: collapse;}
- .table-tr {display: table-row; height: 30px;}
- .table-th {display: table-cell;font-weight: bold;height: 100%;border: 1px solid gray;text-align: center;vertical-align: middle;background-color:#E5E5E5;}
- .table-td {display: table-cell; height: 100%;}
- .sub-table {width: 100%;height: 100%;display: table;}
- .sub-table-tr {display: table-row; height: 100%;}
- .sub-table-td {display: table-cell; height: 100%;border: 1px solid gray; text-align: center;vertical-align: middle;}
- </style>
- </head>
- <body>
- <div class="table">
- <div class="table-tr">
- <div class="table-td">
- <div class="sub-table">
- <div class="sub-table-tr">
- <div class="table-th" style="width: 40%;">省份/直轄市</div>
- <div class="table-th" style="width: 30%;">GDP(億元)</div>
- <div class="table-th" style="width: 30%;">增長(zhǎng)率</div>
- </div>
- </div>
- </div>
- </div>
- <div class="table-tr">
- <div class="table-td">
- <div class="sub-table">
- <div class="sub-table-tr">
- <div class="sub-table-td" style="width: 40%;">廣東</div>
- <div class="sub-table-td" style="width: 30%;">72812</div>
- <div class="sub-table-td" style="width: 30%;">8.0%</div>
- </div>
- </div>
- </div>
- </div>
- <div class="table-tr">
- <div class="table-td">
- <div class="sub-table">
- <div class="sub-table-tr">
- <div class="sub-table-td" style="width: 40%;">河南</div>
- <div class="sub-table-td" style="width: 30%;">37010</div>
- <div class="sub-table-td" style="width: 30%;">8.3%</div>
- </div>
- </div>
- </div>
- </div>
- <div class="table-tr">
- <div class="table-td">
- <div class="sub-table">
- <div class="sub-table-tr">
- <div class="sub-table-td" style="width: 40%;">江蘇</div>
- <div class="sub-table-td" style="width: 30%;">70116</div>
- <div class="sub-table-td" style="width: 30%;">8.5%</div>
- </div>
- </div>
- </div>
- </div>
- <div class="table-tr">
- <div class="table-td">
- <div class="sub-table">
- <div class="sub-table-tr">
- <div class="sub-table-td" style="width: 70%;">各?。陛犑蠫DP平均增長(zhǎng)率</div>
- <div class="sub-table-td" style="width: 30%;">8.26%</div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </body>
- </html>
運(yùn)行效果
3、行合并表格
行合并的實(shí)現(xiàn)思路:與列合并的實(shí)現(xiàn)思路類似,將有單元格合并的列單獨(dú)嵌套一個(gè)display為table的DIV,高度=單行高*單元格合并數(shù)目的倍數(shù),同行的其他列同樣均單獨(dú)嵌套DIV,實(shí)例代碼如下
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>基于display的行合并表格</title>
- <style type="text/css">
- .table, .table * {margin: 0 auto; padding: 0;font-size: 14px;font-family: Arial, 宋體, Helvetica, sans-serif;}
- .table {display: table; width: 80%; border-collapse: collapse;}
- .table-tr {display: table-row; height: 30px;}
- .table-th {display: table-cell;font-weight: bold;height: 100%;border: 1px solid gray;text-align: center;vertical-align: middle;background-color:#E5E5E5;}
- .table-td {display: table-cell; height: 100%;}
- .sub-table {width: 100%;height: 100%;display: table;}
- .sub-table-tr {display: table-row; height: 100%;}
- .sub-table-td {display: table-cell; height: 100%;border: 1px solid gray; text-align: center;vertical-align: middle;}
- </style>
- </head>
- <body>
- <div class="table">
- <div class="table-tr">
- <div class="table-td">
- <div class="sub-table">
- <div class="sub-table-tr">
- <div class="table-th" style="width: 40%;">省份/直轄市</div>
- <div class="table-th" style="width: 30%;">GDP(億元)</div>
- <div class="table-th" style="width: 30%;">增長(zhǎng)率</div>
- </div>
- </div>
- </div>
- </div>
- <div class="table-tr">
- <div class="table-td">
- <div class="sub-table">
- <div class="sub-table-tr">
- <div class="sub-table-td" style="width: 40%;">廣東</div>
- <div class="sub-table-td" style="width: 30%;">72812</div>
- <div class="sub-table-td" style="width: 30%;">8.0%</div>
- </div>
- </div>
- </div>
- </div>
- <div class="table-tr" style="height:60px;">
- <div class="table-td">
- <div class="sub-table">
- <div class="sub-table-tr">
- <div class="sub-table-td" style="width: 40%; border: none;">
- <div class="sub-table">
- <div class="sub-table-tr" style="height:50%;">
- <div class="sub-table-td" style="width: 100%; height:50%;">
- 河南
- </div>
- </div>
- <div class="sub-table-tr" style="height:50%;">
- <div class="sub-table-td" style="width: 100%; height:50%;">
- 江蘇
- </div>
- </div>
- </div>
- </div>
- <div class="sub-table-td" style="width: 30%;border: none;">
- <div class="sub-table">
- <div class="sub-table-tr" style="height:50%;">
- <div class="sub-table-td" style="width: 100%; height:50%;">
- 37010
- </div>
- </div>
- <div class="sub-table-tr" style="height:50%;">
- <div class="sub-table-td" style="width: 100%; height:50%;">
- 70116
- </div>
- </div>
- </div>
- </div>
- <div class="sub-table-td" style="width: 30%;border: none;">
- <div class="sub-table">
- <div class="sub-table-tr">
- <div class="sub-table-td" style="width: 100%;">
- 8.4%
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="table-tr">
- <div class="table-td">
- <div class="sub-table">
- <div class="sub-table-tr">
- <div class="sub-table-td" style="width: 70%;">各?。陛犑蠫DP平均增長(zhǎng)率</div>
- <div class="sub-table-td" style="width: 30%;">8.26%</div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </body>
- </html>
運(yùn)行效果:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助
原文:http://www.cnblogs.com/haoqipeng/p/5309491.html
相關(guān)文章
基于display:table的CSS布局讓HTML元素和像table一樣
display:table的CSS聲明能夠讓一個(gè)HTML元素和它的子節(jié)點(diǎn)像table元素一樣。使用基于表格的CSS布局,使我們能夠輕松定義一個(gè)單元格的邊界、背景等樣式,而不會(huì)產(chǎn)生因?yàn)槭褂昧?/div> 2012-12-07關(guān)于CSS中的display:table-cell使用技巧的幾種應(yīng)用
display:table-cell屬性指讓標(biāo)簽元素以表格單元格的形式呈現(xiàn),類似于td標(biāo)簽。目前IE8+以及其他現(xiàn)代瀏覽器都是支持此屬性的,但是IE6/7只能對(duì)你說sorry了,本文將詳細(xì)介紹,2012-12-07css display table 自適應(yīng)高度、寬度問題的解決
這篇文章主要介紹了css display table 自適應(yīng)高度、寬度問題的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著2021-05-07最新評(píng)論