HTML中表格布局的示例分析

這篇文章主要為大家展示了HTML中表格布局的示例分析,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶大家一起來研究并學(xué)習(xí)一下“HTML中表格布局的示例分析”這篇文章吧。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、光山網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、光山網(wǎng)絡(luò)營銷、光山企業(yè)策劃、光山品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供光山建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:bm7419.com

html是什么

html的全稱為超文本標(biāo)記語言,它是一種標(biāo)記語言,包含了一系列標(biāo)簽.通過這些標(biāo)簽可以將網(wǎng)絡(luò)上的文檔格式統(tǒng)一,使分散的Internet資源連接為一個邏輯整體,html文本是由html命令組成的描述性文本,html命令可以說明文字,圖形、動畫、聲音、表格、鏈接等,主要和css+js配合使用并構(gòu)建優(yōu)雅的前端網(wǎng)頁。

什么時候會用到表格

現(xiàn)在,表格<table>一般不再用于網(wǎng)頁整體的布局。不過,在面對某些特定的設(shè)計(jì),如表單輸入、數(shù)據(jù)呈現(xiàn)時,表格則可能是最恰當(dāng)?shù)倪x擇。

關(guān)于表格的直觀印象,就是由多個單元格(cell)整齊排列而成的元素,可以明確看出行(row)和列(column)。這可以聯(lián)想到Excel,由Excel在數(shù)據(jù)處理和統(tǒng)計(jì)上的地位,就可以理解網(wǎng)頁中表格的意義。

簡單來說,能直觀感受到多個元素是以行和列的概念排列時,用表格會讓你輕松很多。如caniuse.com中應(yīng)用表格的例子:
HTML中表格布局的示例分析

表格布局計(jì)算

使用表格很簡單,但有時候表格最終為每一個格子呈現(xiàn)的狀態(tài),可能不是你想要的。比如說某些格子出現(xiàn)了換行,然后整個表格就因?yàn)閾Q行看起來十分不美觀。尤其是用于數(shù)據(jù)呈現(xiàn)的表格,寬度分配是一個很重要的話題,你可能需要為每一列格子可能呈現(xiàn)的數(shù)據(jù)情況,對表格的總寬度做精打細(xì)算。

這是因?yàn)?,表格在布局上有自己的特性,它會遵循一定的原理,通過計(jì)算,確定出它的實(shí)際布局。接下來,本文以實(shí)際的表格測試示例,探討表格是如何計(jì)算自己的布局的。
初始聲明

本文只針對應(yīng)用表格最常見的方法,而不會列出所有的情況。不同瀏覽器對表格的部分概念的解析有差異,但布局計(jì)算是基本一致的(如果有差異,會單獨(dú)提及)。

接下來用的測試表格都會以這樣的外觀呈現(xiàn)(內(nèi)容取自零之軌跡):
HTML中表格布局的示例分析

同時,表格都會設(shè)置border-collapse:collapse;和border-spacing:0;。這也是應(yīng)用表格的最常用做法,Normalize.css把這部分用作了初始化定義。
兩種算法

定義在<table>元素上的css屬性table-layout,將決定表格在布局計(jì)算時應(yīng)用的算法。它有兩種值,auto和fixed。在通常情況下,都使用默認(rèn)值auto。

這兩種算法的差異在于表格的寬度布局是否與表格中的數(shù)據(jù)內(nèi)容有關(guān)。本文會分別討論在這兩種取值時,表格的布局計(jì)算原理。
自動表格布局-auto

自動表格布局的特點(diǎn)是,表格的寬度布局與表格中的所有數(shù)據(jù)內(nèi)容有關(guān),它需要在獲取所有表格內(nèi)容后才能確定最終的寬度布局,然后再一起顯示出來。

如此看來,要點(diǎn)就是“內(nèi)容相關(guān)”了。如果表格定義了固定寬度(這里是500px),而所有的單元格都不定義寬度(只討論css定義寬度),會如何呢?來看結(jié)果:
HTML中表格布局的示例分析

上面這個表格中,空白的部分是寫了&nbsp;空格。經(jīng)過比較,可以發(fā)現(xiàn)以下幾點(diǎn):

第2列和第3列寬度相同。
   第1列的寬度和后面任意一列的寬度比似乎是2:1。
   加上邊框和內(nèi)邊距,所有列的寬度總合,等于表格定義的寬度。

每個單元格都沒有定義寬度,所以寬度布局完全由具體的內(nèi)容數(shù)據(jù)(文本信息)決定的。如何解釋這樣的結(jié)果呢?可以先直觀地推測這樣的邏輯:

第1步,從每一列中選取文字內(nèi)容最多(理解為不換行的情況下,文本所占據(jù)的寬度最寬)的,作為“代表”。
   第2步,比較各列的“代表”的寬度,然后按照它們的寬度比例關(guān)系,為它們分配表格的總寬度,包括邊框和內(nèi)邊距。

參照上面的邏輯,再來反觀一下前面的表格,是不是挺有一些道理?注意,前面說寬度比“似乎”是2:1,這個會是?來看看去掉內(nèi)邊距的版本:
HTML中表格布局的示例分析

用前端調(diào)試工具具體看一下上面的單元格的寬度,你會發(fā)現(xiàn)這個表格和之前不同,比例已經(jīng)非常接近2:1(是的,還有的這一小點(diǎn)是因?yàn)檫吙?,但是沒有邊框就沒法區(qū)分列了)。

可見,在分析寬度比例關(guān)系的時候,是會把內(nèi)容寬度和內(nèi)邊距,以及邊框都考慮在內(nèi)的。這也說明,不是衡量文字的數(shù)目,而是衡量文字在不換行狀態(tài)所能占據(jù)的寬度(這里的2:1來源于中文漢字是等寬的)。使用內(nèi)邊距自然只是為了做出更美觀的表格 :) 。

有寬度定義的時候,又會怎樣呢?下面是一個部分單元格有寬度定義的表格:
HTML中表格布局的示例分析

它的對應(yīng)html代碼是:

<table class="exhibit_table">  
    <tr>  
        <th>一二</th>  
        <th style="width:200px;"> </th>  
        <th> </th>  
    </tr>  
    <tr>  
        <td style="width:5px;"> </td>  
        <td></td>  
        <td> </td>  
    </tr>  
    <tr>  
        <td> </td>  
        <td style="width:70px;"> </td>  
        <td>一二三四</td>  
    </tr>  
</table>

上面這個表格可以發(fā)現(xiàn)以下幾點(diǎn):

寬度定為5px的單元格,實(shí)際呈現(xiàn)寬度是13px,這正好是單個漢字的寬度,同一列的有漢字的單元格則以最小單元格寬度的形式排列文字(所以,換行了)。
   寬度定為200px的單元格,實(shí)際呈現(xiàn)寬度是200px,盡管同列還有一個寬度70px的定義。
   沒有確切寬度定義的第3列,最后得到了表格在分配完第1列和第2列后全部的剩余寬度。

對此的推斷是,存在寬度定義和不存在寬度定義的列都有的情況時:

如果單元格定義寬度小于其內(nèi)容的最小排列寬度(和不換行排列方式相反,盡可能多行排列在單元格內(nèi)時,單元格所需的寬度),則該單元格所在的列,都會以最小排列方式呈現(xiàn)內(nèi)容。
   如果同一列中,單元格的內(nèi)容寬度(不換行形式,后文這個詞都是這個意思)小于該列中最大的寬度定義,則該列的實(shí)際寬度等于該寬度定義。
   不存在寬度定義的列,會先由表格分配寬度給有寬度定義的列之后,再分配給它們(同樣,它們之間的比例取決于內(nèi)容寬度)。

最前邊的沒有寬度定義的可以看做情況1,這里有的列有寬度定義,有的又沒有,可以看做情況2。下面是情況3,即所有的列都有寬度定義時:
HTML中表格布局的示例分析

對應(yīng)html代碼:

<table class="exhibit_table exhibit_table_with_no_padding">  
    <tr>  
        <th style="width:50px;"> </th>  
        <th style="width:50px;"> </th>  
        <th style="width:100px;"> </th>  
    </tr>  
    <tr>  
        <td> </td>  
        <td> </td>  
        <td> </td>  
    </tr>  
    <tr>  
        <td> </td>  
        <td> </td>  
        <td> </td>  
    </tr>  
</table>

上面的表格中,去掉了內(nèi)邊距,因此可以清晰地由寬度定義值,得到這3列的寬度比例是2:1:1。這里還有一個條件,就是單元格內(nèi)的內(nèi)容寬度不超過寬度定義值。經(jīng)過測試,IE7及以下在內(nèi)容超過寬度定義值和其他瀏覽器表現(xiàn)不同。

從這個表格例子可以知道,如果所有的列都有寬度定義,而這些寬度定義的值的和小于表格的寬度,則表格會在分配完它們寬度定義值所對應(yīng)的寬度后,繼續(xù)把剩余寬度,按照它們的寬度比例,也分配給它們。

以上即是對自動表格布局,且表格本身是定義了固定寬度時,3種情況的分析。如果表格本身不定義寬度,還會有更多情況,而且會和表格的包含塊(containing block,詳情)有關(guān),如果以后有合適機(jī)會,再做討論(所謂文章篇幅有限...)。
固定表格布局-fixed

固定表格布局的特點(diǎn)是,表格的寬度布局和表格中的數(shù)據(jù)內(nèi)容無關(guān),只需要接收到表格第一行的信息,就可以確定最終的寬度布局,并開始顯示。

固定表格布局是“內(nèi)容無關(guān)”的,而且它強(qiáng)調(diào)“第一行”。請看下面這個表格示例:
HTML中表格布局的示例分析

對應(yīng)html代碼:

<table class="exhibit_table exhibit_table_fixed">  
    <tr>  
        <th style="width:50px;"></th>  
        <th>一二</th>  
        <th>一二三四</th>  
    </tr>  
    <tr>  
        <td>艾絲蒂爾·布萊特</td>  
        <td width="1000px;"> </td>  
        <td> </td>  
    </tr>  
    <tr>  
        <td style="width:5px;"> </td>  
        <td> </td>  
        <td> </td>  
    </tr>  
</table>

固定表格布局的邏輯要簡單很多,表述如下:

只取第一行的信息,無視第一行之后的所有單元格的內(nèi)容,及寬度定義
   在第一行中,如果單元格有寬度定義,則先分配它們所需的寬度,然后剩余的寬度平均分配給沒有寬度定義的單元格
   第一行的單元格的寬度分配將決定表格的寬度布局,第一行之后的內(nèi)容不會再改變布局。

還需要注意的時候,使用固定表格布局,則一定要給表格元素定義寬度,如果它的寬度沒有定義(也就是auto默認(rèn)值),瀏覽器會改用自動表格布局。

以上就是關(guān)于“HTML中表格布局的示例分析”的內(nèi)容,如果改文章對你有所幫助并覺得寫得不錯,勞請分享給你的好友一起學(xué)習(xí)新知識,若想了解更多相關(guān)知識內(nèi)容,請多多關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站標(biāo)題:HTML中表格布局的示例分析
轉(zhuǎn)載注明:http://bm7419.com/article12/iihjgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、外貿(mào)建站、網(wǎng)站設(shè)計(jì)、用戶體驗(yàn)微信公眾號、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司