Html的表格知多少

前端07班 王


對于table的使用我們會有種先入為主的厭惡。覺得頁面中不應(yīng)該出現(xiàn)表格!其實這只是針對使用HTML表格 來定義網(wǎng)頁的布局,表格在方便的排列數(shù)據(jù)信息行和列方面還是非常完美。
下面我們就一起來學(xué)習(xí)一下table吧:
對于表格,我們現(xiàn)在已經(jīng)不推薦使用它的一些自帶屬性,因為現(xiàn)在我們都在強(qiáng)調(diào)要保證結(jié)構(gòu)與樣式的分離,所以將想要定義的樣式都放到css文件中吧。
table的10個相關(guān)標(biāo)簽<table> 定義表格<caption> 定義表格標(biāo)題<col> 為表格的列定義屬性<colgroup> 定義表格列的分組<thead> 定義表格的表頭<th>定義表格的表頭<tr> 定義表格的行<tfoot> 定義表格的表注(底部)<tbody> 定義表格主體<td> 定義一個單元格

基本的表格結(jié)構(gòu):標(biāo)題、頭部、主體和底部

對于表格我們最熟悉的就是table , tr , th , td , thead ,tbody ,tfoot 這幾個標(biāo)簽了,對于col , colground 這兩個標(biāo)簽很多人都忽視了,也許有的人根本就不知道,但其實這兩個標(biāo)簽作用很大。下面我們就一起來看看這兩個標(biāo)簽的用法吧。<colgroup>此標(biāo)簽用于對表格中的列進(jìn)行組合使用 span屬性可以指定 colgroup定義的表格列數(shù),該屬性的缺省值為 1。所有主流瀏覽器都支持 colgroup 標(biāo)簽,colgroup 標(biāo)簽只能在 table 元素中使用,colgroup中定義的style顏色屬性是會被td中重新定義的顏色覆蓋。這時style樣式不再是高優(yōu)先級了。
通過測試發(fā)現(xiàn)colgroup中除的background-color,width這兩個常用的屬性設(shè)置值是起作用的,其他一些屬性如:color , font-size , font-weight ,給這些屬性設(shè)置值是不起作用的。所以我們要很好地把這兩個屬性利用起來。
下面我們來結(jié)合圖片、代碼及文字說明來看看 這個標(biāo)簽的使用:
(一)、如圖示,下面表格的每一列的背景色與寬度是不一樣的

下面看具體的html代碼:

<table class="colgroup_data">
<tbody>
<tr>
<th>排名</th>
<th>公司</th>
<th>營收(百萬美元)</th>
<th>利潤(億美元)</th>
</tr>
<tr>
<td>1</td>
<td>肯德基</td>
<td>323,139.0</td>
<td>15,284.0</td>
</tr>
</tbody>
</table>

我們看到上面定義了4個colgroup標(biāo)簽,他們分別對應(yīng)下面的每一列,里面分別定義了一個類名,下面看一下css樣式的定義:

.colgroup_data .one_col { background:#f2eada; text-align: center; }
.colgroup_data .two_col { background:#C7E291; text-align: center; font-weight:700; }
.colgroup_data .three_col { background: #fff287; text-align: center; }
.colgroup_data .four_col { color: #0051e6!important; background: #FFBFBF; text-align: center; }

四種樣式分別定義了四種背景色。當(dāng)然我們也可以為每列定義寬度,上面的代碼中我們看到第四行,我們給color添加了imgportant,以增加他的優(yōu)先級,但實際上我們在頁面中看到的卻不是設(shè)定的顏色,而是td單元格中定義的屬性。(二)、結(jié)合js進(jìn)行隔行變色,這樣不僅列的顏色可以不一樣,行的顏色也可以不一樣,這樣我們就可以制作出一個單元格背景色多變的多樣化表格

下面看具體的html代碼:
<table class="colgroup_span">
<tbody>
<tr>
<th>排名</th>
<th>公司</th>
<th>營收(百萬美元)</th>
<th>利潤(億美元)</th>
</tr>
<tr>
<td>1</td>
<td>肯德基</td>
<td>323,139.0</td>
<td>15,284.0</td>
</tr>
<tr>
<td>1</td>
<td>肯德基</td>
<td>323,139.0</td>
<td>15,284.0</td>
</tr>
<tr>
<td>1</td>
<td>肯德基</td>
<td>323,139.0</td>
<td>15,284.0</td>
</tr>
</tbody>
</table>

我們看到上面一段代碼只定義了兩個colgroup標(biāo)簽,第一個colgroup標(biāo)簽對應(yīng)第一列,第二個colgroup標(biāo)簽對應(yīng)第二、三二列,這是因為在第二個colgroup標(biāo)簽里面定義了span屬性,值為2。當(dāng)span屬性不寫值時,它會被默認(rèn)為1。上面我們定義了兩個colgroup標(biāo)簽,總共對應(yīng)了下面的三列,但是表格有四列,則剩下的就是沒有定義的,它會繼承表格默認(rèn)的樣式。下面我們來看上面表格中的css樣式定義:

.colgroup_span .one_col { background:#f2eada; text-align: center; }
.colgroup_span .two_col { background:#fff287; text-align: center; }

分別定義了第一列為很淺紅,第二列、第三列為淡黃色,剩下的則是沒有定義的,默認(rèn)為白色。但我們現(xiàn)在看到的表格的顏色不是純粹的上面定義的兩列的顏色,這是因為我們添加了一段js,給表格的偶數(shù)行添加了青色背景。這時我們會發(fā)現(xiàn)我們列定義的背景顏色被行定義的樣式覆蓋了,這不是因為js添加的行的樣式寫大下面,優(yōu)先級比較高的原因,而是因為colgroup中定義的屬性值會被td單元格中定義的屬性值覆蓋,除非td單元格不定義樣式,則會以colgroup標(biāo)簽中的樣式為準(zhǔn)。
我們上面寫到雖然給colgroup定義了顏色屬性,但卻沒有達(dá)到預(yù)期的效果。通過多次測試,發(fā)現(xiàn)colgroup標(biāo)簽只有background-color、width這兩個屬性是起作用的。其他的屬性,如:font-size、font-weight、color等屬性,給他們設(shè)值是不起作用的,td單元格依舊以他們自己的默認(rèn)屬性值為標(biāo)準(zhǔn),如果td單元格沒有設(shè)置樣式,它們則會繼承td單元格父級的樣式,也不會用colgroup標(biāo)簽中設(shè)置的屬性值。(注:通過測試發(fā)現(xiàn)大IE6及IE7下面colgroup中設(shè)置的一系列屬性值是有作用的,但鑒于瀏覽器的兼容性,所以除了background-color、width這兩個屬性可以使用外,其他屬性不建議使用)如果哪位高手知道colgroup中在不同瀏覽器下均可使用的屬性歡迎補(bǔ)充。
此元素是塊元素,它不需要關(guān)閉標(biāo)簽。
col元素可嵌套于 colgroup元素內(nèi)。這時嵌套的 col 屬性將覆蓋 colgroup屬性。col和 colgroup元素可用于類似的目的。如果我們在 colgroup中嵌套了col元素,則應(yīng)該避免在 colgroup中再使用 span標(biāo)簽屬性。因為嵌套的 col中的 span屬性將覆蓋 colgroup中的標(biāo)簽屬性。如果兩個都定義span標(biāo)簽屬性也容易引起代碼的混亂意想不到的結(jié)果。
下面我們來看幾種col標(biāo)簽的使用情況:
(一)、col標(biāo)簽控制列的寬度及背景色

具體html代碼:

<table class="colgroup_col">
<col align="right" />
<col />
<col />
<col />
<tbody>
<tr>
<th>排名</th>
<th>公司</th>
<th>營收(百萬美元)</th>
<th>利潤(億美元)</th>
</tr>
<tr>
<td>1</td>
<td>肯德基</td>
<td>323,139.0</td>
<td>15,284.0</td>
</tr>
</tbody>
</table>

這段代碼是不是很熟悉,就是上面的學(xué)習(xí)colgroup標(biāo)簽時的代碼,只是這里將colgroup標(biāo)簽換成了col標(biāo)簽,然后根據(jù)里面定義的類名對這個表格的每個列的背景及寬度進(jìn)行定義。
css樣式代碼:

.colgroup_col .one_col { background:#f2eada; text-align: center; }
.colgroup_col .two_col { width:250px; background:#C7E291; text-align: center; }
.colgroup_col .three_col { background:#fff287; text-align: center; }
.colgroup_col .four_col { color: #ffd400; background: #FFBFBF; text-align: center; }

上面四行css樣式分別定義 了每一列的背景及寬度。這里發(fā)現(xiàn)一個有趣的現(xiàn)象,正常我們寫了什么結(jié)構(gòu),在頁面下查看源碼的時候,也應(yīng)該看到什么樣的結(jié)構(gòu)

通常情況下我們會認(rèn)為我們應(yīng)該看到如上圖一樣的表格結(jié)構(gòu),但通過在不同瀏覽器下測試發(fā)現(xiàn)(目前只測試了火狐與chrome兩個瀏覽器),在相同內(nèi)核瀏覽器下隨著瀏覽器版本的升級,它們對col與colgroup標(biāo)簽有了不同的解析,我們看一下下面的截圖:

瀏覽器經(jīng)過解析給col標(biāo)簽自動添加了父級標(biāo)簽colgroup,通過看上面兩張圖的比較,我們可以對colgroup和col有更好地理解了,col與colgroup都是定義列的標(biāo)簽元素,但colgroup標(biāo)簽還可以定義列的組,它可以單獨(dú)使用,也可以結(jié)合col標(biāo)簽一起使用。通過上面在高版本瀏覽器下的測試的例子,說明瀏覽器對col標(biāo)簽的解析更深入貼切了,所以個人建意以后使用col標(biāo)簽的時候,配合colgroup標(biāo)簽一起使用,這樣才更符合標(biāo)簽的語義話。
(二)、col標(biāo)簽結(jié)合colgroup標(biāo)簽的使用

具體html代碼:

<table class="colgroup_col">
<col />
<col />
<col />
<tbody>
<tr>
<th>排名</th>
<th>公司</th>
<th>營收(百萬美元)</th>
<th>利潤(億美元)</th>
</tr>
<tr>
<td>1</td>
<td>沃爾瑪</td>
<td>351,139.0</td>
<td>11,284.0</td>
</tr>
</tbody>
</table>

通過上面代碼我們知道,第一列為一組,剩下的三列為一組,第二組又分為三列,而第二組中的第一個col標(biāo)簽又定義了二、三兩列的樣式,第二個標(biāo)簽則定義了第三列的樣式。


具體html代碼:

<table class="col_span">
<col span="2" />
<col />
<tbody>
<tr>
<th>排名</th>
<th>公司</th>
<th>營收(百萬美元)</th>
<th>利潤(億美元)</th>
</tr>
<tr>
<td>1</td>
<td>沃爾瑪</td>
<td>351,139.0</td>
<td>11,284.0</td>
</tr>
</tbody>
</table>

從上面的代碼我們可以看出col可以和clogroup標(biāo)簽一樣使用span屬性來控制的列數(shù)
通過上面圖片、代碼及文字的說明我們可以很清楚地知道col及colgroup標(biāo)簽的區(qū)別及使用方法了。理解不到位的地方,歡迎大家指出與補(bǔ)充:)
表格強(qiáng)制換行(非亞洲語言文本)我們經(jīng)常會遇到表格的數(shù)據(jù)太多而,將頁面撐破的情況,這時就需要對表格進(jìn)行控制了。下面我們一起來看如何解決表格強(qiáng)制換行的問題。
表格強(qiáng)制換行,有一個必須的條件就是經(jīng)要表格定義寬度。一定是表格本身的寬度,而不是td單元格的寬度。
我們依舊圖片、代碼及文字說明相結(jié)合來學(xué)習(xí)這個問題的解決方法:

我們將單詞之間的空格去掉了,變成一個單詞,我們可以看到一個單詞之間斷開換行了。下面我們 來研究一下代碼。
具體html代碼:

<table class="wordWrap_table">
<tbody>
<tr>
<td class="wrap_td">Innovationhasnolimits.Theonlylimitisyourimagination!!!!!!!!!!!!!!!!!!!</td>
</tr>
</tbody>
</table>

我們?yōu)楸砀裉砑恿艘粋€類名,為td也添加了一個類名
具體css代碼:

.wordWrap_table{ width:200px; table-layout:fixed; word-wrap:break-word; }
.wrap_td{ padding:10px; font-size:16px; border:1px solid #ddd; }

首先為表格定義寬度,然后table-layout:fixed;它指示表格不要試圖自己計算表格寬度,而是按照HTML中定義的寬度來顯示。當(dāng)table- layout:fixed和word-wrap:break-word同時指定時,針對連續(xù)符號的斷字才會正確發(fā)生。缺少table-layout:fixed,斷字不會發(fā)生,表格仍被撐大。缺少word-wrap:break-word,則表格不會被撐大,但斷字不會發(fā)生,超過顯示區(qū)域的內(nèi)容將被hide。固定表格布局與自動表格布局相比,允許瀏覽器更快地對表格進(jìn)行布局。在固定表格布局中,水平布局僅取決于表格寬度、列寬度、表格邊框?qū)挾取卧耖g距,而與單元格的內(nèi)容無關(guān)。看到一些例子,里面添加了word-break:break-all;這個控制屬性,雖然這樣也能強(qiáng)制換行,但在不同瀏覽器下會有一些小小的差別。

這種情況是大火狐,Opera瀏覽器下出現(xiàn)的情況

IE6 、IE7、IE8、Chrome等瀏覽器下出現(xiàn)的情況,通過比較我們發(fā)現(xiàn)一個細(xì)微的差別。就是第一行一個是單詞換行了,另一個是單詞斷了換行word-break:break-all; 的解釋:如table寬200px,它的內(nèi)容就會到200px自動換行,如果該行末端有個英文單詞很長(congratulation),它會把單詞截斷,變成該行末端為conra(congratulation的前端部分),下一行為tulation(conguatulation)的后端部分了長,但這個理論通過上面兩張圖片的比較,知道火狐與Opera是不適用的,如果是對各個主流瀏覽器要求比較高的情況下,建議不要加word-break:break-all;。通過上面的表格強(qiáng)制換行的情況,對div中出現(xiàn)的強(qiáng)制換行我們也作一個相應(yīng)的擴(kuò)充郵箱地址換行我們建站時經(jīng)常會遇到大側(cè)邊欄添加郵箱地址的情況,但經(jīng)常會遇到郵箱地址太長的情況,以前的解決方法就是大郵箱地址長度確定的情況下,改變字體大小,或者 添加強(qiáng)制換行符,但其實這些可擴(kuò)展性不強(qiáng),遇到不同長度郵箱地址的時候不能隨機(jī)應(yīng)變。下面我們就來看一個例子

具體html代碼:

<ul class="aside_contact">
<li><span>Email:</span><a href="#">hair@rubbermachinesupplier.com</a></li>
<li><span>Address:</span>Menlo Park</li>
</ul>

具體css代碼:

.aside_contact{ width:180px; padding:10px; }
.aside_contact li{ padding:5px 0; overflow:hidden;}
.aside_contact li span{ float:left; width:50px;}
.aside_contact li a{ float:left; width:110px; word-wrap:break-word;}

強(qiáng)制換行都是在寬度定的情況結(jié)合table-layout及word-wrap才達(dá)到完美的強(qiáng)制換行的效果的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,739評論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,634評論 3 419
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,653評論 0 377
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,063評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,835評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,235評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,315評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,459評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,000評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,819評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,004評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,560評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,257評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,676評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,937評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,717評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,003評論 2 374

推薦閱讀更多精彩內(nèi)容

  • HTML標(biāo)簽解釋大全 一、HTML標(biāo)記 標(biāo)簽:!DOCTYPE 說明:指定了 HTML 文檔遵循的文檔類型定義(D...
    米塔塔閱讀 3,294評論 1 41
  • Bootstrap是什么? 一套易用、優(yōu)雅、靈活、可擴(kuò)展的前端工具集--BootStrap。GitHub上介紹 的...
    凜0_0閱讀 10,906評論 3 184
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,776評論 1 92
  • 轉(zhuǎn)載請聲明 原文鏈接地址 關(guān)注公眾號獲取更多資訊 第一部分 HTML 第一章 職業(yè)規(guī)劃和前景 職業(yè)方向規(guī)劃定位...
    前端進(jìn)階之旅閱讀 16,584評論 32 459
  • HTML需要掌握標(biāo)簽 標(biāo)簽(空格分隔): H5+CSS [TOC] 常用標(biāo)簽 img 注意點(diǎn) 和H系列標(biāo)簽/p標(biāo)簽...
    袁俊亮技術(shù)博客閱讀 2,058評論 1 8