关于css定位有很多文章讲述:

如果有一个元素div ,他的position属性设置为absolute,那么这个div 的位置取决于其父元素中position值设置为relative的元素。如果在其父元素中没有一个元素的position值是relative、absolute、或者fixed,那么这个div位置将以 body位置为参考。

但是对于某些浏览器来说似乎不是每个元素都遵从这一规则,有如下一段代码

CSS Code复制内容到剪贴板 table{          margin-left100px;          margin-top50px;      }      td{          height150px;          width100px;          positionrelative;      }      td div{          height30px;          width50px;          background-colorred;          positionabsolute;          left10px;          top:50px;      }      <table border="1">          <tr>              <td></td>              <td></td>              <td>                  <div>这是一个positionabsolute元素</div>              </td>          </tr>      </table>    

由于div元素的尺寸较小,理想的情况是div总是在最后一个td中,但是在firefox中div并不以td为参考,而是body。
所以要实现这个效果的兼容方式是在td中添加一个能应用position:relative的元素,上述代码可以更改为

XML/HTML Code复制内容到剪贴板 <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

CSS Code复制内容到剪贴板 .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-aligncenter;font-size:14px;    }    .header > .header-add    {    background-color#488FD2;    color#FFFFFF;    cursorpointer;    height20px;    line-height20px;    padding10px;    positionabsolute;    rightright: 0;    text-aligncenter;    top: 0;    width45px;    }    .header > .header-search    {    background-color#fff;    height30px;    line-height20px;    positionabsolute;    rightright80px;    text-aligncenter;    top5px;    width200px;    }    .table > .body,.table2 > .body    {    border1px solid #BCC6D0;/border-style:none solid solid solid;/background-color:#fff;    }    .header-search > input    {    border:none;    border-right1px solid #BCC6D0;    color#666666;    font-size14px;    height: 100%;    line-height: 100%;    width170px;    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;displayinline-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-aligncenter;    }    .canClick    {    color:#2E5CB9;cursor:pointer;    }       .btn {    background-color#488FD2;    color#FFFFFF;    cursorpointer;    font-size14px;    padding6px 10px;       }    .line > .submit    {    float:rightright;padding:10px 25px;    }    .btnPush > .tagRight {    backgroundurl("…/…/images/global/smallGotoRight.png"no-repeat scroll center center #9EC5EB;    floatleft;    height85px;    width8px;    }    .opcity5    {    opacity:0.5;    filter:alpha(opacity=50);    }       .search {    background-color#FFFFFF;    height30px;    line-height20px;       text-aligncenter;    width210px;    }    .search > input    {    border:none;    border1px solid #BCC6D0;    color#666666;    font-size14px;    height28px;    line-height: 100%;    width170px;    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;width962px;    }    .btnLeft    {    float:left;    }       th {    font-size14px;    font-weightnormal;    line-height35px;    height:35px;    }    .textl {    text-alignleft;    }    .table2 td    {    border-top:1px solid #BCC6D0;    }    .hoverTag    {    cursor:pointer;positionrelative;    }    .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;    }      

Div+CSS对HTML的table表格定位用法实例