IE6瀏覽器不支持固定定位(position:fixed)解決方案

今天在學(xué)習的時候,突然發(fā)現(xiàn)在IE6瀏覽器下,position:fixed不管用了:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
</head>
<body>
<div style="width:600px;height:2000px;background-color:#f90;">正常普通流元素</div>
<div style="position:fixed;bottom:10px;left:50px;width:400px;height:200px;background-color:#111;color:#fff;">position:fixed元素</div>
</body>
</html>
上面的代碼在IE6中打開,效果如下:
而在其他瀏覽器(IE7+、firefox、opera、safari、chrome)下則正常顯示:
經(jīng)過多次測試,原來不只在IE6下,在IE7、IE8瀏覽器下,若是文檔使用的是怪異(quirk)模式也會導(dǎo)致這個問題。這也難怪,當IE7、8使用怪異模式時,渲染引擎將以接近IE6的渲染模式來解析CSS。最后,我得出了以下結(jié)論:
IE6、IE7(quirk模式)、IE8(quirk模式) 瀏覽器將 'position' 特性的 fixed 值當作錯誤值處理。從而導(dǎo)致使用固定定位的元素使用 'position' 的默認值 static。即這個元素在 此時 變成了普通流中的元素,這必然會導(dǎo)致布局錯位等問題。
解決方案:在 IE6、IE7(quirk模式)、IE8(quirk模式)中為固定定位元素設(shè)置 '_position:absolute',再通過 JavaScript 腳本或者 CSS Expression 動態(tài)設(shè)置其偏移量,但是我發(fā)現(xiàn)只能實現(xiàn)在最底部和最頂部固定。要想設(shè)置具體的位置還需要配合_margin。
使元素固定在瀏覽器的頂部:
#top {
_position: absolute;
_bottom: auto;
_top: expression(eval(document.documentElement.scrollTop));
}
使元素固定在瀏覽器的底部:
#bottom {
_position: absolute;
_bottom: auto;
_top: expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));
}
這兩段代碼只能實現(xiàn)在最底部跟最頂部,你可以使用
_margin
修改其中的數(shù)值控制元素的位置。
看到這里,你一定以為已經(jīng)完事了。NO!還有bug:被固定定位的元素在滾動滾動條的時候會出現(xiàn)一閃一閃的情況。解決這個問題的辦法是在 CSS 文件中加入:
* html{
background-image:url(about:blank);
background-attachment:fixed;
}
或者:
body {
_background-attachment:fixed;
_background-image:url(about:blank);
}
當然,也可以用吧javascript方法解決,不過有點大材小用:
window.onresize = window.onscroll = function(){
//code
};
相關(guān)文章
- 這篇文章主要介紹了淺談原生頁面兼容IE9問題的解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起2020-12-16
新版chrome瀏覽器設(shè)置允許跨域的實現(xiàn)
這篇文章主要介紹了新版chrome瀏覽器設(shè)置允許跨域的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起2020-11-30css hack之\9和\0就可能對hack IE11\IE9\IE8無效
每次設(shè)計一張網(wǎng)頁或一個表單,都被各種瀏覽器的兼容問題傷透腦筋,尤其是IE家族。在做兼容性設(shè)計時,我們往往會使用各種瀏覽器能識別的獨特語法進行hack,從而達到各種瀏覽2020-03-20css區(qū)分ie8/ie9/ie10/ie11 chrome firefox的代碼
這篇文章主要介紹了css區(qū)分ie8/ie9/ie10/ie11 chrome firefox的代碼,需要的朋友可以參考下2020-03-20- 這篇文章主要介紹了解決CSS瀏覽器兼容性問題的4種方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)2020-02-28
- 這篇文章主要介紹了常見的瀏覽器兼容性問題(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)2020-02-20
- 這篇文章主要介紹了border-radius IE8兼容處理的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)2020-02-12
- 這篇文章主要介紹了淺談遇到的幾個瀏覽器兼容性問題,詳細的介紹了幾種我遇到的問題和解決方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-26
- 這篇文章主要介紹了base64圖片在各種瀏覽器的兼容性處理的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-14
- 這篇文章主要介紹了對常見的css屬性進行瀏覽器兼容性總結(jié)(推薦)的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-20