原生table表格的使用


近期公司讓我修改一些之前的table標簽寫的頁面,感覺對table相關的標簽不是太熟悉,於是專門整理一下:

 

 1、如果給td標簽設置百分比寬度,比如有10列內容,我們卻設置了每個單元格是30%的寬度,會是這樣的效果,(單元格會緊着前面的達標寬度,后面的自適應)

 

 

 那么如果給單元格設置固定寬度呢?(目前我在table外層套了個div,寬度為600px,table的寬度為100%)

我先在給每個單元格設置寬度為60px;

 

 

 效果是每個單元格的寬度是平均分的

如果給單元格設置30px;(單元格依然是平均分的,設置的小寬度並沒有起作用)

 

 

 然后,將table標簽的寬度設置為300px或則50%(外層元素為600px);可見td的寬度還是平均分的,無論設置50px還是10px,效果都是平均分的;

 

 從此可以得出結論,在td元素上設置固定寬度(px之類)的寬度是不生效的,設置百分比寬度會緊着達標。

那么我們經常會遇到這樣的需求,要求自定義表格寬度,該怎么辦呢,我們可以在單元格中都套一個div元素,

然后給這個div元素設置固定寬度,就可以把對應列的單元格撐開了,然后剩余的單元格還會按照剩余的寬度自適應寬度

 

 代碼如下:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>table</title>
</head>
<style>
    td{
        vertical-align: middle;
    }
    th{
        vertical-align: middle;
    }
    .itd{
        width:30px;
        background: pink;
    }
</style>
<body>
    <div style="text-align:center;font-size:100px;font-weight:bold;">
        其它內容
    </div>

    <div style="width:600px;margin:50px auto;border:1px solid red;">
        

        <table border="1" style="width:100%;">
        <th align="center"><div class="itd">標題1</div></th>
        <th align="center"><div class="itd">標題2</div></th>
        <th align="center"><div class="itd">標題3</div></th>
        <th align="center"><div class="itd">標題4</div></th>
        <th align="center"><div class="itd">標題5</div></th>
        <th align="center"><div class="itd">標題6</div></th>
        <th align="center"><div class="itd">標題7</div></th>
        <th align="center"><div class="itd">標題8</div></th>
        <th align="center"><div class="itd">標題9</div></th>
        <th align="center"><div class="itd">標題1哈啊啊阿</0</th>
        <tr>
            <td align="left"><div class="itd" style="width:100px;">單元格</div></td>
            <td align="center"><div class="itd" >單元格</div></td>
            <td align="center"><div class="itd">單元格</div></td>
            <td align="center"><div class="itd" style="width:100px;">單元格</div></td>
            <td align="center"><div class="itd">單元格</div></td>
            <td align="center"><div class="itd">單元格</div></td>
            <td align="center"><div class="itd">單元格</div></td>
            <td align="center"><div class="itd">單元格</div></td>
            <td align="center"><div class="itd">單元格</div></td>
            <td align="center"><div class="itd">單元格</div></td>
        </tr>
        
        
    </table>


    </div>
</body>
</html>

 當然,如果我們設置的單元格的寬度,超過了table的寬度,那么內容就會從右邊溢出,

 

 這個沒有辦法,這個需要我們設計布局,不能讓單元格的總寬度超出table的寬度!!

再來說一下,合並單元格colspan,和rowspan屬性,這是在td或th標簽上加的

下面來實驗一下:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>table</title>
</head>
<style>
    td{
        vertical-align: middle;
    }
    th{
        vertical-align: middle;
    }
    .itd{
        width:30px;
        background: pink;
    }
</style>
<body>
    <div style="text-align:center;font-size:100px;font-weight:bold;">
        其它內容
    </div>

    <div style="width:600px;margin:50px auto;border:1px solid red;">
        

        <table border="1" style="width:100%;">
        <th align="center" colspan="2"><div class="itd">標題1</div></th>
        <th align="center"><div class="itd">標題3</div></th>
        <th align="center" rowspan="2"><div class="itd">標題4</div></th>
        <th align="center"><div class="itd">標題5</div></th>
        <th align="center"><div class="itd">標題6</div></th>
        <th align="center"><div class="itd">標題7</div></th>
        <th align="center"><div class="itd">標題8</div></th>
        <th align="center"><div class="itd">標題9</div></th>
        <th align="center"><div class="itd">標題1哈啊啊阿</0</th>
        <tr>
            <td align="left"><div class="itd" style="width:100px;">單元格</div></td>
            <td align="center"><div class="itd" >單元格</div></td>
            <td align="center"><div class="itd">單元格</div></td>
            <td align="center"><div class="itd" style="width:100px;">單元格</div></td>
            <td align="center"><div class="itd">單元格</div></td>
            <td align="center"><div class="itd">單元格</div></td>
            <td align="center"><div class="itd">單元格</div></td>
            <td align="center"><div class="itd">單元格</div></td>
            <td align="center"><div class="itd">單元格</div></td>
        </tr>
        
        
    </table>


    </div>
</body>
</html>

效果

 

 以上的操作幾乎就能滿足日常開發了

下面來簡單總結一下表格的布局操作

1、表格中單元格的寬度是自動平均分配寬度的,如果想調整其中的某一列的寬度,在td中套一個div元素,給這個div設置寬度,將td撐開(設置td的寬度無效

2、單元格的總寬度不能超出table的寬度,否則內容會向右溢出,所以布局時一定要設計好。

3、table的border屬性有兩個值,1或0,設置1,table和單元格都會出現邊框,設置為0,table和單元格都沒有邊框,如果想設置table的邊框,我們可以給table標簽單獨加css樣式,

  想給td加邊框,可以單獨給td加css樣式。

4、控制th和td中的元素上下對齊,注意是元素上下對齊,可以給th或td加vertical-align:top/middle/bottom;

5、控制th和td中的元素左右對齊,注意也是元素左右對齊,可以給th或td的元素上加align屬性,值為left/center/right;

6、合並單元格,用rowspan=“2”或colspan="數值",一定要注意,若果有合並單元格存在,一定要注意單元格的個數,否則會多出單元格

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM