关于css定位有很多文章讲述:
如果有一个元素div ,他的position属性设置为absolute,那么这个div 的位置取决于其父元素中position值设置为relative的元素。如果在其父元素中没有一个元素的position值是relative、absolute、或者fixed,那么这个div位置将以 body位置为参考。
但是对于某些浏览器来说似乎不是每个元素都遵从这一规则,有如下一段代码
CSS Code复制内容到剪贴板- table{
- margin-left: 100px;
- margin-top: 50px;
- }
- td{
- height: 150px;
- width: 100px;
- position: relative;
- }
- td div{
- height: 30px;
- width: 50px;
- background-color: red;
- position: absolute;
- left: 10px;
- top:50px;
- }
- <table border="1">
- <tr>
- <td></td>
- <td></td>
- <td>
- <div>这是一个position:absolute元素</div>
- </td>
- </tr>
- </table>
由于div元素的尺寸较小,理想的情况是div总是在最后一个td中,但是在firefox中div并不以td为参考,而是body。
所以要实现这个效果的兼容方式是在td中添加一个能应用position:relative的元素,上述代码可以更改为
- <table border="1">
- <tr>
- <td></td>
- <td></td>
- <td>
- <div style="position:relative;"
- <div>这是一个position:absolute元素</div>
- </div>
- </td>
- </tr>
- </table>
这样就可以保证 div元素始终在td中。
table的td相对定位实例
下面我们来看一个处理td相对定位的实例,这里我们建两个table样式:table和table2
- .table,.table2
- {
- overflow:hidden;
- }
- .table > .header
- {
- position:relative;
- height:40px;
- background-color:#84a9cc;
- }
- .header > .header-title
- {
- margin:0 auto;line-height:40px;color:#fff;width:80px;text-align: center;font-size:14px;
- }
- .header > .header-add
- {
- background-color: #488FD2;
- color: #FFFFFF;
- cursor: pointer;
- height: 20px;
- line-height: 20px;
- padding: 10px;
- position: absolute;
- rightright: 0;
- text-align: center;
- top: 0;
- width: 45px;
- }
- .header > .header-search
- {
- background-color: #fff;
- height: 30px;
- line-height: 20px;
- position: absolute;
- rightright: 80px;
- text-align: center;
- top: 5px;
- width: 200px;
- }
- .table > .body,.table2 > .body
- {
- border: 1px solid #BCC6D0;/border-style:none solid solid solid;/background-color:#fff;
- }
- .header-search > input
- {
- border:none;
- border-right: 1px solid #BCC6D0;
- color: #666666;
- font-size: 14px;
- height: 100%;
- line-height: 100%;
- width: 170px;
- float:left;
- }
- .header-search > .search-logo
- {
- float:left;width:29px;height:30px;
- background:url(…/…/images/global/serachBlue.png) center no-repeat;
- }
- tbody > .tr
- {
- height:20px;line-height:20px;
- }
- th
- {
- display:inline-block;margin-right:-3px;
- }
- th + th
- {
- margin-left:-3px;
- }
- td
- {
- padding:10px 0;display: inline-block;margin-right: -3px;
- }
- td + td
- {
- margin-left: -3px;
- }
- tbody > .tr:nth-child(2n+1)
- {
- background-color:#e6e5e5;
- }
- .table2 tbody > .tr:nth-child(2n+1)
- {
- background-color:#fff;
- }
- .ml30
- {
- margin-left:30px;
- }
- .tr .checkbox
- {
- width:20px;border:1px solid #BCC6D0;height:20px;cursor:pointer;float:left;
- }
- .tr .checkbox.selected
- {
- background-color:#488FD2;
- }
- .tr .checkbox > input[type=‘checkbox’]
- {
- display:none;
- }
- table.body,table2.body
- {
- width:100%;
- overflow-y:auto;
- }
- .body
- {
- margin:0;
- }
- td, td div
- {
- font-size:14px;text-align: center;
- }
- .canClick
- {
- color:#2E5CB9;cursor:pointer;
- }
- .btn {
- background-color: #488FD2;
- color: #FFFFFF;
- cursor: pointer;
- font-size: 14px;
- padding: 6px 10px;
- }
- .line > .submit
- {
- float:rightright;padding:10px 25px;
- }
- .btnPush > .tagRight {
- background: url("…/…/images/global/smallGotoRight.png") no-repeat scroll center center #9EC5EB;
- float: left;
- height: 85px;
- width: 8px;
- }
- .opcity5
- {
- opacity:0.5;
- filter:alpha(opacity=50);
- }
- .search {
- background-color: #FFFFFF;
- height: 30px;
- line-height: 20px;
- text-align: center;
- width: 210px;
- }
- .search > input
- {
- border:none;
- border: 1px solid #BCC6D0;
- color: #666666;
- font-size: 14px;
- height: 28px;
- line-height: 100%;
- width: 170px;
- float:left;
- }
- .search > .search-logo
- {
- float:left;width:29px;height:30px;
- background:url(…/…/images/global/searchWhite.png) center no-repeat #488FD2;
- }
- .tableRight
- {
- float:left;margin-left:20px;width: 962px;
- }
- .btnLeft
- {
- float:left;
- }
- th {
- font-size: 14px;
- font-weight: normal;
- line-height: 35px;
- height:35px;
- }
- .textl {
- text-align: left;
- }
- .table2 td
- {
- border-top:1px solid #BCC6D0;
- }
- .hoverTag
- {
- cursor:pointer;position: relative;
- }
- .titTag
- {
- min-width:135px;height:50px;display:none;position:absolute;
- }
- .titTag > .titTag-left, .titTag > .titTag-msg
- {
- float:rightright;
- }
- .titTag > .titTag-left
- {
- width:15px;
- height:100%;
- }
- .titTag > .titTag-msg
- {
- background-color:#fcffe0;min-width:119px;border:1px solid #BCC6D0;height:48px;text-align:left;
- }