2011-05-12 121 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/

谢谢!