2009-10-12 49 views

回答

7

只適用於單元格或行,對不起。 例如

td { 
    background-color: blue; 
} 

td:hover { 
    background-color: red; 
} 

有JavaScript解決方案可用,但現在沒有任何CSS可以做你想做的事情,因爲選擇器的限制。

td /* all cells */ 
{ 
    background-color: blue; 
} 

tr /* all rows */ 
{ 
    background-color: pink; 
} 

/* nothing for all columns */ 
+1

其實你可以使用樣式EI列兄弟選擇器(有點混亂)或CSS3的「第n個孩子」(沒有IE支持)。儘管如此,您仍然無法在懸停時進行此操作,因爲您只是在單元格或行上懸停,而不是列。 – DisgruntledGoat 2009-10-12 16:10:22

-2

你可以嘗試用<col>標籤和col:hover { background: red; }風格嘗試,但我懷疑這會工作。無論如何,這絕對不適用於老版本的MSIE,所以你需要javascript才能做到這一點。

+3

'col:hover'在firefox 3.5中似乎不起作用,但'col {background-color:blue; }'確實 – 2009-10-12 10:03:43

2

我有一個類似的問題,我有太多的列在屏幕上顯示。通過VIA PHP,我將每行轉換爲1 x列表。所以,n行= n表。然後,我嵌套在主表中的每個表。這樣做可以讓我從樣式表中調用td:hover。由於每個td都擁有一個表格,所以當我將鼠標懸停在列上時,它具有突出顯示列的相同效果。

-5

可以使用高亮全行純CSS:

tr td {background-color: red;} 
tr:hover td {background-color: blue;} 

實現了一列這種效果是不可能用這種方法,因爲細胞(TD)是行(TR)的孩子,不一列。

要使其在IE7 +中工作,請確保添加doctype聲明(無論如何,你應該始終做:))。

+0

不回答問題 – 2015-03-05 16:21:22

36

這可以使用沒有Javascript的CSS來完成。我使用::after僞元素來做突出顯示。如果您需要處理點擊事件,z-index會將突出顯示保留在<tds>以下。使用巨大的高度可以覆蓋整個色譜柱。 <table>上的overflow: hidden隱藏突出顯示溢出。

演示:http://jsfiddle.net/ThinkingStiff/2XeYe/

輸出:

enter image description here

CSS:

table { 
    border-spacing: 0; 
    border-collapse: collapse; 
    overflow: hidden; 
    z-index: 1; 
} 

td, th { 
    cursor: pointer; 
    padding: 10px; 
    position: relative; 
} 

td:hover::after { 
    background-color: #ffa; 
    content: '\00a0'; 
    height: 10000px;  
    left: 0; 
    position: absolute; 
    top: -5000px; 
    width: 100%; 
    z-index: -1;   
} 

HTML:

<table> 
    <tr> 
     <th></th><th>50kg</th><th>55kg</th><th>60kg</th><th>65kg</th><th>70kg</th> 
    </tr> 
    <tr> 
     <th>160cm</th><td>20</td><td>21</td><td>23</td><td>25</td><td>27</td> 
    </tr> 
    <tr> 
     <th>165cm</th><td>18</td><td>20</td><td>22</td><td>24</td><td>26</td> 
    </tr> 
    <tr> 
     <th>170cm</th><td>17</td><td>19</td><td>21</td><td>23</td><td>25</td> 
    </tr> 
    <tr> 
     <th>175cm</th><td>16</td><td>18</td><td>20</td><td>22</td><td>24</td> 
    </tr> 
</table> 
+1

我不確定你的FF修復工作。身體的背景變成黃色,而不僅僅是懸停的列。 – carmenism 2012-08-15 18:45:58

+0

@vulpix這適用於我在OS X上的FF14. – ThinkingStiff 2012-08-15 19:25:12

+0

-1根本不適用於IE。 – 2013-01-28 04:48:17

13

我甲肝Ë更簡單的解決方案(直播例如:http://jsfiddle.net/q3HHt/1/

HTML:

<table> 
    <tr> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
    </tr> 
    <tr> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
    </tr> 
</table> 

CSS:

table, td { 
    border: 1px solid black; 
} 

td { 
    width: 40px; 
    height: 40px; 
} 

.highlighted { 
    background-color: #348A75; 
} 

的jQuery:

$('td').hover(function() { 
    var t = parseInt($(this).index()) + 1; 
    $('td:nth-child(' + t + ')').addClass('highlighted'); 
}, 
function() { 
    var t = parseInt($(this).index()) + 1; 
    $('td:nth-child(' + t + ')').removeClass('highlighted'); 
}); 

活生生的例子:http://jsfiddle.net/q3HHt/1/

+1

使用'$('td:nth-​​child('+ t +')',$(this).closest('table'))。addClass('highlight');'防止頁面上的所有表被突出顯示,如果你有多個。 – sushain97 2013-08-25 00:58:25

+0

是正確的,但更好的方法是使用'id'屬性 – 2013-08-26 05:19:26

+0

這不需要每個表的獨立偵聽器嗎?我只是爲了簡單的路線而不編輯我的HTML,並認爲它可能對任何通過Google找到答案的人都有用(就像我一樣)。 – sushain97 2013-08-26 21:04:17

3

只是爲了擴展穆罕默德答案(https://stackoverflow.com/a/11828637/1316280),如果你想突出的cols只有在實際的表,jQuery的代碼部分更改爲: 此的jsfiddle是具體的只是實際表

jQuery的

$('td').hover(function() { 
    var t = parseInt($(this).index()) + 1; 
    $(this).parents('table').find('td:nth-child(' + t + ')').addClass('highlighted'); 
}, 
function() { 
    var t = parseInt($(this).index()) + 1; 
    $(this).parents('table').find('td:nth-child(' + t + ')').removeClass('highlighted'); 
}); 

的jsfiddle:http://jsfiddle.net/q3HHt/123/