直入正題,現在有這麼一個表格:
請實現移到交易內容區域時,高亮當前行背景的效果。
1、建立一分標准的HTML文檔結構
談到標准HTML結構,有人可能會說,嗯,用div標簽,裡面再多套些li,最後用css來個float也就能排成這樣的結構了。其實真正標准的結構並不是說一定要用div來布局,而是要盡量使用語義化的HTML標簽。在HTML標簽的定義中div與span其實是兩個沒有語義的標簽,table則有數據表的語義。
所以這裡我們來建一張符合XHTML 1.0 Strict標准的文檔結構試試。以下為該表結構的HTML代碼:
其中需要注意的是:
你需要使用<thead />、<tbody />、<tfoot />等標簽,分別對應的含義是表頭區域,表主體內容,表底部區域。
表頭區域的單元格你應該使用<th />而非<td />
<tfoot />標簽塊應該在<thead />與<tbody />之間,否則無法通過W3C標簽驗證
再給它們加上樣式:
.tableList {
border:2px #666 solid;
}
.tableList td, .tableList th {
border:1px #666 solid;
padding:5px 25px;
}
.tableList tfoot td {
text-align:right;
}
.fastpayIcon {
background:transparent url(http://img.alipay.com/pimg/icon_fastpay16.gif) no-repeat scroll 5px 5px;
}
2、實現表格行滑過高亮背景效果 現在我們要實現表格行滑過高亮效果,怎麼辦?是的,用JS來幾個onmouseover和onmouseout就搞定了。不過,如果要符合WEB標准的話,其實我們更應該使用CSS的hover偽類來實現。我們在<style />部分再加上這條CSS規則試試: 這樣大部分標准浏覽器都能夠實現這種效果了,接下來再考慮兼容性問題,為IE6寫上一段JS來實現這個效果吧 <!--[endif]--> 這裡要注意的是: 使用IE條件注釋<!–[if lt IE 7]>來確保這段JS只會在IE7以下版本的IE浏覽器中運行,因為對於大部分浏覽器來說這段JS代碼是畫蛇添足的。 3、代碼兼容性測試 接下來我們來在各個浏覽器中測試下這段代碼的兼容性。測試各個版本IE兼容性建議使用IETester,然後是FF2/FF3。 測試發現,在IE6和IE7中第一個有背景圖片的單元格無法實現該效果,IE8和FF則沒有此問題。經過分析原因在於 該段CSS定義等價於: 因為其中定義了background-color: transparent;雖然定義了透明,但是調試中發現IE對於td的background-color支持有BUG,當設置為transparent時,其實實現的是#fff的效果。解決方法就是刪掉對td的background-color定義,或者將屬性值設置為 inherit,這樣td就會從它的父元素tr中繼承這一屬性,從而實現效果。
.tableList tbody tr {
background:#fff;
}
.tableList tbody tr:hover {
background:#eee;
}.fastpayIcon {
background:transparent url(http://img.alipay.com/pimg/icon_fastpay16.gif) no-repeat scroll 5px 5px;
}
.fastpayIcon{
background-attachment: scroll;
background-color: transparent;
background-image: url(http://img.alipay.com/pimg/icon_fastpay16.gif);
background-repeat: no-repeat;
background-position: 5px 5px;
}