table表格寬帶研究(附帶:table表格爲何設置td寬度無效)

狀況1:下面代碼定義了表格寬帶爲爲600px,未設置td寬帶,3個td內容爲1,2,3,能夠看到3個內容平分table的寬度。html

也就是每一個td都是200px(請注意:若是用chrome調試寬度,會有必定的偏差,由於600px還包括邊框,所以實際寬度多是198px,這裏進行了簡化,下同)。chrome

 <table style="width:600px; background-color:red" >
            <tr>
                <td>1</td>
                <td>2</td>
                <td>3</td>
            </tr>        

        </table>

 

 

接下來,修改第一個td的內容,將1修改成11,則結果變成以下:spa

由於:第一個單元格的「11」是2個字符寬帶,第二個單元格「2」是一個字符寬帶,第三個單元格「3」是一個字符寬帶。3d

共計是4個字符寬帶,所以,比例爲 2:1:1. 因此 第一個單元格是:600*2/4=300px. 第2和第3都是 600*1/4=150px寬度調試

 

若是第一個內容過長,默認會稱高表的高度,而不是延長表的高度(能夠經過在td裏放置div來延長寬度,見本文最後),htm

以下圖,表格已經定義爲600px,第一個td內容已經大於600pxblog

此時,表格並不會讓寬大於600px,td會經過換行來顯示td內容。其他各單元格仍然按內容的比例同分table寬度。table

下圖顯示,單元格1和單元格2均分表格剩餘寬度。class

 

總之,一個結論:若是不設置td寬帶,各單元格會根據各個內容長度的比例來均分table的寬度方法

 

 

狀況2:

定義的表格寬帶爲600,可是第一和第三的寬度之和已經大於600px了。

此時,系統會先計算第二個實際的寬度,假設第二個是40px,而後第一和第三再按比例均分剩餘寬度。

 

 <table style="width:600px; background-color:blue" >
            <tr>
                <td width="400px"> 1

                </td> 
                <td  >
                   222222
                </td>
                <td width="400px">3</td>
            </tr>        

        </table>

 

 

狀況3:若是td寬度不足,則不足會自動補齊。下圖中,第一個100px,第三個200px,第二個td天然是:600-100-200=300px

<table style="width:600px; background-color:blue" >
            <tr>
                <td width="100px"> 1

                </td> 
                <td  >
                   222222
                </td>
                <td width="200px">3</td>
            </tr>        

        </table>

 

 

狀況4:百分比和數字同時使用,百分比優先級高

 

  <table style="width:600px; background-color:blue" >
            <tr>
                <td width="200px"> 1

                </td> 
                <td width="50%"  >
                   2
                </td>
                <td width="200px">3</td>
            </tr>        

        </table>

 

上面代碼計算td2寬帶有兩種方法:(1)由於td1是200,td3是200px,td2則是600-200-200=200,在計算50%,則td2的寬帶應該是 100px

(2)td2的50%是table的一半,因此,td2的寬帶是300. 而後td1和td3按比例1:1均分剩餘的300,那麼哪一個計算是正確的呢?

運行一下,效果以下,第二個方法是正確的。

 

  

狀況5:

   <table style="width:600px; background-color:blue" >
            <tr>
                <td width="100px"> 
                    <div style="width:400px"> 
                      1
                    </div>
                </td> 
                <td  >
                     2
                </td>
                <td>3</td>
            </tr>        

        </table>

 

雖然td定義的是100px,可是裏面的div設置爲400px,也就是說,若是td內容是純文本,超過100px會在td裏換行

可是,若是td裏div設置了寬度,則會撐寬td的默認值。

結論:td定義的寬帶是默認寬度,實際寬度由內容決定

相關文章
相關標籤/搜索