拿什么來拯救你我的table
來源:易賢網(wǎng) 閱讀:865 次 日期:2016-06-23 09:25:30
溫馨提示:易賢網(wǎng)小編為您整理了“拿什么來拯救你我的table”,方便廣大網(wǎng)友查閱!

table曾經(jīng)在網(wǎng)頁開發(fā)中占據(jù)著舉重若輕的地位——布局,即使到了web2.0我們依舊可以看到其布局的身影。然而技術(shù)是不斷進步的div+css組合方式終究敲開了老式布局的大門刮起了新的一輪布局浪潮。之后而來的就是新仇舊恨,許許多多無論是對table有意見亦或沒意見的人也開始了對table筆誅口伐——臃腫的代碼、無語義標(biāo)簽、繁雜的書寫方式等等。記住,table被創(chuàng)造之初并非是用于布局,而是顯示數(shù)據(jù)。舍棄table布局,并非舍棄table本身。拿什么來拯救你,我的table。

何為table:

table者h(yuǎn)tml表格也,數(shù)據(jù)之載體。

下面是一個比較標(biāo)準(zhǔn)的table代碼寫法:

代碼如下:

<table border=0 cellspacing=0 cellpadding=0 width=100%>

<tr>

<th>month</th>

<th>date</th>

</tr>

<tr>

<td>aug</td>

<td>18</td>

</tr>

</table>

簡單的html表格由table元素以及一個或多個tr、th或td元素組成。tr元素定義表格行,th元素定義表頭的單元格,td元素定義表格單元格。border屬性規(guī)定表格邊框的寬度,cellpadding規(guī)定單元邊沿與其內(nèi)容之間的空白,cellspacing規(guī)定單元格之間的空白,這三個屬性我們一般手動設(shè)置為0避免瀏覽器差異。width屬性規(guī)定表格的寬度,因為table寬度是隨內(nèi)部元素的寬度撐起多少而變化,而常用情況下我們希望table是同外部容器等寬,所以常常默認(rèn)設(shè)置100%寬度使之撐滿容器。

不得不說的table-layout:fixed屬性

table-layout: auto(默認(rèn))|fixed。

參數(shù):

auto:默認(rèn)的自動算法。布局將基于各單元格的內(nèi)容。表格在每一單元格讀取計算之后才會顯示出來,速度很慢。

fixed:固定布局的算法。在這算法中,水平布局是僅僅基于表格的寬度,表格邊框的寬度,單元格間距,列的寬度,而和表格內(nèi)容無關(guān)。 解析速度快。

fixed布局模型的工作步驟:

1.width屬性值不是auto的所有列元素會根據(jù)width值設(shè)置該列的寬度。

2.表首行中位于該列的單元格width,根據(jù)該單元格寬度設(shè)置此列的寬度。如果這個單元格跨多列,則寬度在這些列上平均分配。

3.在以上兩步之后,如果列的寬度仍為auto,會自動確定其大小,使其寬度盡可能相等。此時,表的寬度設(shè)置為表的width值或列寬度之和(取其中較大者)。如果表度度大于其列寬總和,將二者之差除以列數(shù),再把得到的這個寬度增加到每一列上。

這種方法的速度很快,因為所有列寬都由表的第一行定義。首行后所有行中的單元格都根據(jù)首行所定義的列寬確定大小。后面這些行中的單元格不會改變列寬。這意味著為這些單元格指定的width值都會被忽略。

一般在做復(fù)雜表格html的時候,有時候你會發(fā)現(xiàn),無論怎么調(diào)整第一行每列的width,列寬還是會發(fā)生出乎于你意料之外的變動(例如一長串英文文本,并且中間無空格分隔的情況你要這列限定寬度,使得過長文字強制換行且不撐破表格,而往往結(jié)果是怎么也調(diào)整不到合適的寬度),這個時候在萬般無奈之下,你可以使用table-layout:fixed。

table疑難雜癥之換行

用table顯示數(shù)據(jù)有時候會有一個頭疼的地方,即不換行顯示某段文字,尤其在表頭th中用到地方最多。其實你所頭疼的并非換行,而是其背后的瀏覽器兼容加性使得換行的困難程度大大增。這里,你可以查看攻略強制換行與強制不換行這篇文章得到啟示,文中詳細(xì)討論了在不同情況下攻略換行的方法。

總體來說在table中換行個人比較推薦的方式為:先為table設(shè)定table-layout:fixed,基本上設(shè)定完這個屬性后基本的換行問題都能夠解決而不會出現(xiàn)table中td,th因為里面各個內(nèi)容的多寡發(fā)生搶奪其他td,th寬度的情形發(fā)生。這時如果你依舊有強制換行問題,那么在此td中內(nèi)部加一層div,再利用word-wrap:break-word; word-break:break-all;這倆個css方法可以解決換行的問題。

常見而又生疏的幾個table標(biāo)簽

thead、tfoot以及tbody

這三個標(biāo)簽是所謂xhtml的產(chǎn)物,主要是使您有能力對表格中的行進行分組。當(dāng)您創(chuàng)建某個表格時,您也許希望擁有一個標(biāo)題行,一些帶有數(shù)據(jù)的行,以及位于底部的一個總計行。這種劃分使瀏覽器有能力支持獨立于表格標(biāo)題和頁腳的表格正文滾動。當(dāng)長的表格被打印時,表格的表頭和頁腳可被打印在包含表格數(shù)據(jù)的每張頁面上。個人認(rèn)為其主要用途適用于超長表格的顯示優(yōu)化。

thead標(biāo)簽表示html表頭

表格的頭部thead,可以使用單獨的樣式定義表頭,并且在打印時可以在分頁的上部打印表頭。

thead標(biāo)簽表示html頁腳

表格的頁腳tfoot,可以使用單獨的樣式定義頁腳(腳注或表注),并且在打印時可以在分頁的下部打印頁腳。

tbody標(biāo)簽表示html表體

瀏覽器顯示表格時,通常是完全下載表格后,再全部顯示,所以當(dāng)表格很長時,可以使用tbody分段顯示。

注釋:如果您使用 thead、tfoot以及tbody元素,您就必須使用全部的元素。它們的出現(xiàn)次序是:thead、tfoot、tbody,這樣瀏覽器就可以在收到所有數(shù)據(jù)前就可呈現(xiàn)表頭和頁腳了。您必須在table元素內(nèi)部使用這些標(biāo)簽,且thead內(nèi)部必須擁有tr標(biāo)簽。所以書寫更為標(biāo)準(zhǔn)的table方式即如下代碼:

代碼如下:

<table border=0 cellspacing=0 cellpadding=0 width=100%>

<thead>

<tr>

<th>month</th>

<th>date</th>

</tr>

</thead>

<tfoot>

<tr>

<th>month lists</th>

<th>date lists</th>

</tr>

</tfoot>

<tbody>

<tr>

<td>aug</td>

<td>18</td>

</tr>

</tbody>

</table>

個人認(rèn)為這個東西挺雞肋,取之無用,棄之可惜。小項目可以增加些語義化,但因為曾經(jīng)遇到過有多個不同表頭在同一表格顯示的窘境,限制了日后的開發(fā),所以正式項目從可擴展的角度來說情慎用這些標(biāo)簽。

col和colgroup

這倆標(biāo)簽也是xhtml的產(chǎn)物,功能強大,兼容奇差。

col標(biāo)簽為表格中一個或多個列定義屬性值。

colgroup標(biāo)簽用于對表格中的列進行組合,以便對其進行格式化。

它們的作用主要就是來控制單元格的寬度了,這樣省去單獨定義每個單元格的麻煩,過去我們往往是在第一行中的th或者td上定義寬度來規(guī)定每列的寬度,而col不但可以定義寬度還能同時定義其他的屬性,例如可以通過col來控制幾列寬度的總和,還可以控制這列的背景色。但理想是豐滿的,現(xiàn)實是骨干的,正如前面所說,功能越大不代表其兼容性也越強,據(jù)現(xiàn)有的測試下來,col和colgroup能發(fā)揮作用還能保證兼容的應(yīng)用就只有倆:width和background。對于width,個人寧愿使用常規(guī)方式,第一行設(shè)置寬度,保證列寬。對于bacground,一般實際中表格大面積使用不同背景的情況也很少見。故個人認(rèn)為:能不用盡量不用。

何處用table

個人認(rèn)為,在一個放置數(shù)據(jù)非常密集且又非常序列化的一個容器里,用table準(zhǔn)沒錯。最常見的例子就是我們常見的購物訂單結(jié)算頁面,上面列有你訂單詳情:商品名稱、單價、購買數(shù)量、金額小計、運費等等,最后最下方還會有一個最終訂單金額的結(jié)果,table在這里可謂是如魚得水,達到了數(shù)據(jù)之載體的神效。

以上是對常見的table知識點進行了一次梳理,對常用到得幾個地方進行了分析整理。期待看到這篇文章的你能夠以正確的態(tài)度看待table,使用table。希望本文可以稍稍的挽救你吧,我的table。謝謝。

更多信息請查看網(wǎng)頁制作
易賢網(wǎng)手機網(wǎng)站地址:拿什么來拯救你我的table
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報警專用圖標(biāo)