簡單的斑馬紋表格,如果頁面上有大量的表格數據時,隔行變色的斑馬紋會幫助我們快速閱讀,有利於用戶體驗。我們今天不討論在動態語言中的方法,只討論CSS,JavaScript,MooTools 是如何實現的,並有三種可行性方案。
<table id="playlist" cellspacing="0"> <tbody> <tr> <td>1</td> <td>Lost In The Plot</td> <td>The Dears</td> </tr> <tr> <td>2</td> <td>Poison</td> <td>The Constantines</td> </tr> <tr> <td>3</td> <td>Plea From A Cat Named Virtute</td> <td>The Weakerthans</td> </tr> <tr> <td>4</td> <td>Melissa Louise</td> <td>Chixdiggit!</td> </tr> <tr> <td>5</td> <td>Living Room</td> <td>Tegan And Sara</td> </tr> <tr> <td>6</td> <td>Speed</td> <td>Bran Van 3000</td> </tr> <tr> <td>7</td> <td>Fast Money Blessing</td> <td>King Cobb Steelie</td> </tr> <tr> <td>8</td> <td>Sore</td> <td>Buck 65</td> </tr> <tr> <td>9</td> <td>Love Travel</td> <td>Danko Jones</td> </tr> <tr> <td>10</td> <td>You Never Let Me Down</td> <td>Furnaceface</td> </tr> </tbody> </table>
我們上面所看到的表格,就是我們要美化的表格,要實現斑馬紋的表格。
在CSS3中有許多的偽類選擇器,其中的
E:nth-child(n) : {attribute}
它可以匹配父元素中的第n個子元素E。
The CSS3 Code
/*獲得奇偶數的子元素*/ tr:nth-child(odd) { background-color:#eee; }//所有奇數序子元素 tr:nth-child(even) { background-color:#fff; }//所有偶數序子元素 /*同上一樣的作用*/ tr:nth-child(2n){background-color:#eee;} //返回偶數序的子元素 tr:nth-child(2n+1){ background-color:#fff;} //返回奇數序的子元素
// this function is need to work around
在以前MooTools1.1的老版本中是不支持CSS3選擇器的,那又如何實現那。
.odd{ background:#fff; color: #666; } .even{ background-color: #3d80df; color: #FFF; }
The MooTools JavaScript:
window.addEvent('domready', function() { var count = 0; $('table.shade-table tr').each(function(el) { el.addClass(count++ % 2 == 0 ? 'odd' : 'even'); }); });
如果你已經使用了MooTools1.2+的版本,我們就可以用MooTools Selectors的偽類選擇器,它的語法是類似於CSS3的偽類選擇器的。
$('table#playlist tr:nth-child(odd)').addClass('odd'); $('table#playlist tr:nth-child(even)').addClass('even'); /* $('table#playlist tr:nth-child(2n+1)').addClass('odd'); $('table#playlist tr:nth-child(2n)').addClass('even');*/
.over{ background-color:#F00; color:#FFF; }
The MooTools JavaScript:
$$("table#playlist tr").addEvent('mouseover',function() {this.addClass("over");}).addEvent('mouseout',function() {this.removeClass("over");});