在firefox或ie中span無法確定寬度的解決方案

字號:


    代碼如下:
    <html xmlns=http ://www.w3.org/1999/xhtml >
    <head>
    <title>test span</title>
    <mce:style type=text/css><!--
    span {
    background-color:#ffcc00;
    width:150px ;
    }
    --></mce:style><style type=text/css mce_bogus=1>span {
    background-color:#ffcc00;
    width:150px ;
    }</style>
    </head >
    <body>
    fixed <span >width</span> span
    </body>
    </html>
    通過試驗以后發(fā)現(xiàn),無效,無論是在firefox還 是ie中都無效 。
    通過查閱 css2標(biāo)準(zhǔn)中關(guān)于width 的定義發(fā)現(xiàn),原來css中的 width 屬性并不總是有效的,如果對象是 inline 對象,width 屬性就會被忽略。firefox 和 ie 原來是遵循了標(biāo)準(zhǔn)才這樣做的。
    修改 span 為 block 類型并設(shè)置 float 不是完美解決
    在span的css中增加display屬性,將span設(shè)置為block類型的element,這樣寬度的確有效了,不過也把前后文字隔在不同行里面。這樣其實span就完全變成了div。
    代碼如下:
    span { background-color:#ffcc00; display:block; width:150px;}
    很多人會建議再增加一個css 屬性 float ,這樣的確在某種條件下能解決問題。比如我們的例子中,如果span前面沒有文字,那的確是可行的。但是如果有了,前后文字就會連在一起,而span跑到了第二行。
    代碼如下:
    span { background-color:#ffcc00;
    display:block; float:left; width:150px;}
    設(shè)置 span 寬度的完美解決方案
    下面代碼的 css定義完美解決了span的寬度設(shè)置問題。由于瀏覽器通常對不支持的css屬性采取忽略處理的態(tài)度,所以最好將display:inline -block行寫在后面,這樣在firefox里面,如果到了未來的firefox 3,這一行就能起作用,代碼可以同時兼容各種版本。
    代碼如下:
    <!doctype html public -//w3c//dtd xhtml 1.0 transitional//en >
    <html xmlns= >
    <head><title>test span</title>
    <mce:style type=text/css><!--
    span { background-color:#ffcc00; display:-moz-inline-box; display:inline-block; width:150px;}
    --></mce:style>
    <style type=text/css mce_bogus=1>span { background-color:#ffcc00; display:-moz-inline-box; display:inline-block; width:150px;}</style>
    </head>
    <body>
    fixed <span>width</span> span
    </body>
    </html>