IE6 fixed的完美解決方案
第一種方法:純CSS
目前網上有的比較多的是這種解決方案(純CSS):
復制代碼 代碼如下:
html{overflow:hidden;}
body{height:100%;overflow:auto;}
#rightform form{position:absolute;right:30px;top50px;}
這個方法有一個bug未解決:在IE6下會把所有position:absolute都變成“浮動”的元素;還有使用js方法滾動滾動條時會出現對象閃爍,如下方法結合了CSS和js的辦法,解決了以上的問題 。
復制代碼 代碼如下:
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
html xmlns="http://www.w3.org/1999/xhtml"
head
meta http-equiv="Content-Type" content="text/html; charset=gb2312" /
titleIE6 fixed/title
style type="text/css"
*
{
margin: 0px;
padding: 0px;
}
body {
_background-image: url(about:blank); /*用瀏覽器空白頁面作為背景*/
_background-attachment: fixed; /* prevent screen flash in IE6 確保滾動條滾動時,元素不閃動*/
}
#topNav {
width: 980px;
z-index: 100; /*設置浮動層次*/
overflow: visible;
position: fixed;
top: 50px; /* 其他瀏覽器下定位,在這里可設置坐標*/
_position: absolute; /*IE6 用absolute模擬fixed*/
_top: expression(documentElement.scrollTop50"px"); /*IE6 動態設置top位置*/
/* documentElement.scrollTop 設置浮動元素始終在瀏覽器最頂 , 可以加一個數值達到排版效果 */
background-color:#0000FF;
height: 31px;
}
.show{
position:absolute;
top:500px;
left:400px;
border:#ff0000 1px solid;
}
/style
/head
body
div class="jd_menu" id="topNav"1111/div
br /br /br /br /br /br /br /br /br /
br /br /br /br /br /br /br /br /br /
br /br /br /br /br /br /br /br /br /
br /br /br /br /br /br /br /br /br /
br /br /br /br /br /br /br /br /br /
br /br /br /br /br /br /br /br /br /
br /br /br /br /br /br /br /br /br /
br /br /br /br /br /br /br /br /br /
br /br /br /br /br /br /br /br /br /
br /br /br /br /br /br /br /br /br /
br /br /br /br /br /br /br /br /br /
div class="show"show/div
/body
/html
只實現了垂直方向的fixed 。若要實現水平方向的fixed,設置_left:expression(documentElement.scrollLeft"px");
利用給body設置固定的背景 , 防止滾動條滾動時的閃動;如果body中要設置滾動的背景而產生沖突,可以把代碼寫在html選擇器里面,如:
復制代碼 代碼如下:
html {
_background-image: url(about:blank);
_background-attachment: fixed; /* prevent screen flash in IE6 */
}
body {
background-image: url(1.jpg);
background-attachment: scroll;
}
第二種方法 JavaScript
復制代碼 代碼如下:
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
html xmlns="http://www.w3.org/1999/xhtml"
head
meta http-equiv="Content-Type" content="text/html; charset=utf-8" /
style type="text/css"
body{ margin:0px; padding:0px; font-size:12px; line-height:22px;}
p{ margin:0px; padding:36px;}
.float2{ position:absolute; padding:26px; border:#999999 3px solid; background-color:#3399FF; right:200px; top:200px;}
.fixed{ position:absolute; right:60px; top:100px; border:#666666 3px solid; background-color:#CCCCCC; padding:26px;}
/style
script language="javascript" type="text/javascript"
window.onload=function(){
var n=100; //top值
var obj=document.getElementById("fixed"); //position:fixed對象
window.onscroll=function(){obj.style.top=(document.body.scrollTop||document.documentElement.scrollTop) n ’px’;}
window.onresize=function(){obj.style.top=(document.body.scrollTop||document.documentElement.scrollTop) n ’px’;}
}
/script
titleposition_fixed測試/title
/head
body
p測試內容........./p
p測試內容........./p
p測試內容........./p
p測試內容........./p
p測試內容........./p
p測試內容........./p
p測試內容........./p
p測試內容........./p
p測試內容........./p
p測試內容........./p
p測試內容........./p
p測試內容........./p
p測試內容........./p
p測試內容........./p
p測試內容........./p
div class="float2"浮動的內容2/div
div class="fixed" id="fixed"我的位置是固定的!拉動滾動條看效果 。/div
/body
/html
ie6對postion:fixed的完美解決方案
今天去一老外站看到了這他站上的十分平滑但卻沒有js,好奇,原來 。。巧妙啊 , 分享下,相對而言比較節省資源 。但效果好,使用方便,兼顧w3c 。哈哈
!-- compliance patch for microsoft browsers --
!--[if lt IE 7]link rel="stylesheet" type="text/css" media="screen"/![endif]--
ie-stuff.css
復制代碼 代碼如下:
#footer {
position: absolute;
bottom: auto;
clear: both;
top:expression(eval(document.compatMode
}
您可能感興趣的文章:JS中toFixed()方法引起的問題如何解決iphone safari不支持position fixed的解決方法capacityFixed 基于jquery的類似于新浪微博新消息提示的定位框JavaScript toFixed() 方法跨瀏覽器的實踐:position:fixed 層的固定定位IE6支持position:fixed完美解決方法javascript ie6兼容position:fixed實現思路
