列元素所用屬性之謎
來源:易賢網(wǎng) 閱讀:719 次 日期:2015-01-29 15:51:28
溫馨提示:易賢網(wǎng)小編為您整理了“列元素所用屬性之謎”,方便廣大網(wǎng)友查閱!

在table表格元素中,有一個(gè)col元素(它還有一個(gè)孿生胞兄colgroup元素),在 W3C 標(biāo)準(zhǔn)中,這個(gè)元素被稱為列元素,用于定義表格中的某些列中的表現(xiàn)形式,在現(xiàn)行及常見的教程中,認(rèn)為col元素可以使用常見的全局屬性,以及align、valign、width等屬性(乃至HTML 4.1 及 5.0 規(guī)范文檔中,也同意該元素可以使用全局屬性),很多DEMO也用它來舉例說明如何讓表格中的某列居中對(duì)齊、右對(duì)齊或改變某列的文字顏色,而事實(shí)上在大家常年的實(shí)踐中,已經(jīng)證明了一個(gè)很恐怖的事情…align也好valign也罷,甚至連全局屬性中的color屬性都完全不起作用,這到底是發(fā)生了什么事。

照例先上結(jié)論:

在 CSS 2 中,列元素就僅能使用border、background、width及visibility這四個(gè)屬性,其它屬性(如對(duì)齊及字色都無法生效)。

IE6、IE7及IE8(Q)遵循常見教程,可以使用各種對(duì)齊和文字相關(guān)設(shè)置。

IE9開始及現(xiàn)在所有常用非IE瀏覽器均支持:nth-child(n)選擇器,可以用該選擇器實(shí)現(xiàn)列選擇,并支持所有全局 CSS 屬性。

IE8(S)無解(因?yàn)樗恢С稚鲜鲞x擇器),除第一條所描述的 4 個(gè) CSS 屬性之外,無法統(tǒng)一改變列的對(duì)齊及字色。

而col及colgroup元素,除了對(duì)IE6、7、8進(jìn)行兼容之外,已經(jīng)沒用了。

為什么,這究竟是為什么……

從比較簡單而明顯的角度說,所有元素的屬性在未定義的情況下,都是“繼承”,也就是與其父元素屬性相同。而表格的 HTML 書寫方式,是以行為基礎(chǔ)的,單元格是行的子元素,但不是列的,所以它繼承不到列的屬性。

從更根本的角度說,是 CSS 的工作模式所決定的。頁面的一切表現(xiàn)均交由 CSS 進(jìn)行計(jì)算和渲染,而 CSS 的基本工作方式遵循下面的步驟:

解析樣式表和文檔

對(duì)于文檔中的每個(gè)元素:

決定應(yīng)用哪個(gè) CSS 規(guī)則。

使用這些規(guī)則做出 CSS 級(jí)聯(lián)。

如果級(jí)聯(lián)的結(jié)果是關(guān)鍵字“繼承”(或繼承的屬性沒有規(guī)定值),則進(jìn)行繼承

執(zhí)行計(jì)算(把’em’變成’px’等等)。在 CSS 2.1 中,getComputedStyle()DOM方法負(fù)責(zé)返回這些值。

此時(shí),每個(gè)元素的所有屬性都會(huì)有一個(gè)值。

排列文檔版式

繪制文檔

在這樣的工作順序下,因?yàn)榱性厥莇isplay:table-column,而單元格元素是display:table-cell,他們之間的具體關(guān)系要到第三步才能確認(rèn),因?yàn)槟阈枰?jì)算某一個(gè)單元格橫跨幾列或幾行,才能確定某一個(gè)單元格到底是第幾列。而在那之前,也就是第二步的時(shí)候,每個(gè)元素的屬性值都已經(jīng)計(jì)算出來了!但你還不知道哪個(gè)單元是第幾列,所以你沒辦法知道該列的值。

然后我做了一個(gè)很無聊的DEMO,使用上面說到的 CSS 3 選擇器,選擇所有偶數(shù)列的單元格,變成藍(lán)色;而讓所有第三列的單元格變成黃色。然后分別對(duì) n 行 n 列的單元格進(jìn)行合并操作(也就是第一行的第一個(gè)單元格占據(jù)3個(gè)單元格的,第二行的第二個(gè)單元格占據(jù)3個(gè)單元格,以此類推)。結(jié)果如下:

名單

列元素所用屬性之謎

因?yàn)閷?duì)單元格進(jìn)行了列合并,而那個(gè)選擇器的本質(zhì)又是按照行而非列選擇的,結(jié)果就變成上面那樣了(沒能在視覺上垂直渲染某一列)。

話雖這么說,但在脫離了表格布局那么多年的今天,在表格終于能夠回歸它本來的應(yīng)用目的的今天,這種奇葩布局的表格應(yīng)該也是寥寥無幾了。

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)頁制作
易賢網(wǎng)手機(jī)網(wǎng)站地址:列元素所用屬性之謎
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報(bào)名

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