Firefox下table单元格td设计relative定位失效解决方案-(FF下油表图片跑到左上角)
Firefox下table单元格td设计relative定位失效解决方案
问题描述:
默认情况下,table的单元格td的display为table-cell,在IE 给td设置position:relative,然后给它包含的一个容器使用position:absolute进行定位是有效的,但在FF下却不可以。 但是在IE下,position:absolute的容器的z-index总是比td的z-index低,td层总是在 position:absolute的容器的上面
发生条件:
1. IE6、IE7、IE8和FF浏览器
2. 使用td默认样式,设置td的position:relateve,再给td内的容器设置position:absolute定位
原因分析:
1. 在FF中position:relative要与display:block/inline-block才能生效,display:block/inline-block可以是默认块元素,或是被定义的元素。
2. 而在IE中position:relative除了与display:block/inline-block可以生效外,与display:table-cell、table等都可以
实例:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /><title>Table单元格内容器定位的兼容性</title><style type="text/css">* { margin: 0; padding: 0;}.tb { display: block; width: 304px; margin: 0 auto; border-collapse: collapse; position: relative;}.tb td { width: 150px; border: 1px solid #DDD; position: relative;}.sub { background-color: #FF0000; width: 150px; padding: 3px; border: 1px solid #FF6600; position: absolute; z-index: 9999; left: 152px; top: 0;}</style></head><body><h1>可以在IE和FF下看到区别</h1><table class="tb"> <tbody> <tr> <td rowspan="2"></td> <td></td> </tr> <tr> <td></td> </tr> <tr> <td class="cell"><div class="sub">第二行第一个单元格内的容器</div></td> <td></td> </tr> </tbody></table></body></html> |
默认情况下,IE中td的position:relative是有效的;<br />
在FF中td的position:relative是无效的<br />
要在FF中使table的position:relative有效,需要同时设置display:block,而IE不用同时设置display:block
另一个解决法:
不要给td加入定位,将td里面的内容加一个div,然后把div定位即可,我觉得这样还好一些,不会引起兼容问题。
浙公网安备 33010602011771号