我已经尝试了大约一个小时的时间来获取Chrome以获取应用于<tbody>
标记的Chrome中的盒子阴影(以及特定于浏览器的变体),但它不起作用。我得到的正是我期望的所有其他浏览器(Firefox中的阴影框,IE6或IE7中没有任何内容)...... Chrome也没有为我的<tbody>
标记渲染任何边框样式......是否存在局限性在这个标签本身或我做错了什么?
答案 0 :(得分:5)
我不确定它会产生什么影响(如果有的话),但只需在display: block
上设置tbody
即可在Chrome中修复它(以及Opera,它也无效):< / p>
答案 1 :(得分:2)
有一个简单而优雅的解决方案:)
table {
border-collapse:collapse;
}
table tbody td {
position: relative;
background-color: white;
}
table tbody td:after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
box-shadow: 2px 2px 5px lightgray;
}
每个td
都有一个带有自己阴影的:after
元素,因此提供td's
背景色会使整个tbody
有一个漂亮的阴影,并且网格不会制动。
答案 2 :(得分:0)
由于今天这个问题仍然存在,因此这里的解决方案是不使用display:block
,从而牺牲了表的自动调整功能。
答案 3 :(得分:0)
答案 4 :(得分:0)
基于jQuery的解决方案: http://jsfiddle.net/gZLgz/
代码将在页面上的每个tbody后面添加带阴影的div。
var tbodyShadow = function(){
$('table').each(function(){
var $table = $(this),
tableIndex = $('table').index(this);
$tbody = $('tbody', this),
tbodyWidth = $tbody.outerWidth(),
tbodyHeight = $tbody.outerHeight(),
tbodyPosition = $tbody.offset();
$shadow = $('<div/>', {'class': 'table-shadow-' + tableIndex});
if(!$table.hasClass('shadow-processed')){
$shadow.appendTo('body');
}
$('.table-shadow-' + tableIndex)
.height(tbodyHeight)
.width(tbodyWidth)
.css({'position': 'absolute', 'z-index': '1'})
.css({'left': tbodyPosition.left, 'top': tbodyPosition.top})
.css({'box-shadow': '0 0 10px -3px black'});
$table
.css({'position': 'relative', 'z-index': '2'})
.addClass('shadow-processed');
});
};
$(window).load(tbodyShadow);
$(window).resize(tbodyShadow);
答案 5 :(得分:0)
如果您想对tbody进行样式设置,可以这样做:
table {
position: relative;
}
table tbody:before {
box-shadow: 0px 0px 6px rgba(0,0,0,0.1);
content: ' ';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
}
通过在:before或:after之后设置框阴影可以解决此问题。在Chrome,Safari,Firefox中对其进行了测试,并且似乎可以正常工作。