2011-05-12 42 views
13

這可能嗎?表格懸停框架陰影(Webkit)

我的代碼適用於Firefox。我還可以得到的WebKit改變懸停其他屬性(例如背景顏色等),但框的陰影不會生效:

tr:hover { 
    -webkit-box-shadow: 0px 2px 4px #e06547; 
    -moz-box-shadow: 0px 2px 4px #e06547; 
    box-shadow: 0px 2px 4px #e06547; 
    background-color: #d4d5d6; 
} 
+0

我在'tr'找到樣式沒有最好的支持。 – alex 2011-05-12 01:56:33

回答

20

由於這裏回答:https://stackoverflow.com/a/11002077/1106393,而不是造型tr你應該風格結合td - 元素與僞類:first-child:last-child。前面加上tr:hover會做的伎倆爲您提供:

tr:hover td { 
    -moz-box-shadow: 0 4px 2px -3px rgba(0, 0, 0, 0.5) inset; 
    -webkit-box-shadow: 0 4px 2px -3px rgba(0, 0, 0, 0.5) inset; 
    box-shadow: 0 4px 2px -3px rgba(0, 0, 0, 0.5) inset; 
} 
tr:hover td:first-child { 
    -moz-box-shadow: 4px 4px 2px -3px rgba(0, 0, 0, 0.5) inset; 
    -webkit-box-shadow: 4px 4px 2px -3px rgba(0, 0, 0, 0.5) inset; 
    box-shadow: 4px 4px 2px -3px rgba(0, 0, 0, 0.5) inset; 
} 
tr:hover td:last-child { 
    -moz-box-shadow: 0 4px 2px -3px rgba(0, 0, 0, 0.5) inset; 
    -webkit-box-shadow: 0 4px 2px -3px rgba(0, 0, 0, 0.5) inset; 
    box-shadow: 0 4px 2px -3px rgba(0, 0, 0, 0.5) inset; 
} 

演示1與插圖:http://jsfiddle.net/Kk6Th/

更新:
演示2無邊界(經典陰影):http://jsfiddle.net/2nw4t/1/
演示3無插圖(發光效果):http://jsfiddle.net/2CSuM/

+0

...但是,只適用於'inset'。 [相同的小提琴在陰影中沒有'inset](http://jsfiddle.net/2nw4t/) – 2012-08-31 21:51:35

+2

它沒有'inset':[fiddle]工作(http://jsfiddle.net/2nw4t/1/)它是隻有box-shadow(以前的'-3px')的第四個屬性看起來不太好。將其更改爲「0」... – AvL 2012-09-03 11:14:34

+0

嗯,你的確看起來很正確,+1!可惜我無法使用它,因爲我的細胞是透明的(我只是想要一種「輝光般的」效果)。我的解決方案:在表格頂部覆蓋一個列表(在這種情況下,「

0

這發生在我身上,我在它上面放了一些小的邊界半徑,它可以工作。

border-radius: 1px; 

根據你試圖實現的外觀,它可能是一個黑客,你可以使用。

+2

經過測試,無法正常工作。此外,即使您想要一個(至少在Webkit上,這是手頭的問題),border-radius對錶格行也沒有任何影響。 – 2012-08-31 21:54:03

0

AvL的解決方案非常好,謝謝你的提示。如果你像我一樣想在整個TRbox-shadow (inset)雖然,不只是一個側面,這個代碼應該幫助你:

tr:hover td { 
    -webkit-box-shadow: 0 4px 2px -3px rgba(0, 0, 0, 0.5) inset, 0 -4px 2px -3px rgba(0, 0, 0, 0.5) inset; 
} 
tr:hover td:first-child { 
    -webkit-box-shadow: 4px 4px 2px -3px rgba(0, 0, 0, 0.5) inset, 4px -4px 2px -3px rgba(0, 0, 0, 0.5) inset; 
} 
tr:hover td:last-child { 
    -webkit-box-shadow: -4px 4px 2px -3px rgba(0, 0, 0, 0.5) inset, -4px -4px 2px -3px rgba(0, 0, 0, 0.5) inset; 
} 
1

我面對這個問題,我發現了幾個解決方法:

  1. 在所有td上添加陰影。
  2. Set display: block on tr
  3. 使用正確樣式td:first-child:before
  4. 給所有td添加陰影並覆蓋我們不需要的部分。

您可以檢查他們在此的jsfiddle: https://jsfiddle.net/maskl/cxscmvpr/3/

0

使用變換規模(1,1)與財產的box-shadow它會解決這個問題。

tr:hover { 
    transform: scale(1); 
    -webkit-transform: scale(1); 
    -moz-transform: scale(1); 
    box-shadow: 0px 0px 5px rgba(0,0,0,0.3); 
    -webkit-box-shadow: 0px 0px 5px rgba(0,0,0,0.3); 
    -moz-box-shadow: 0px 0px 5px rgba(0,0,0,0.3); 
} 

小提琴:https://jsfiddle.net/ampicx/5p91xr48/

謝謝!