IE6 fixed的完美解决方案


Posted in Javascript onMarch 31, 2011

第一种方法:纯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" /> 
<title>IE6 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.scrollTop + 50 + "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> 
<title>position_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" href="ie-stuff.css" type="text/css" media="screen"/><![endif]-->
ie-stuff.css
#footer { 
position: absolute; 
bottom: auto; 
clear: both; 
top:expression(eval(document.compatMode && 
document.compatMode=='CSS1Compat') ? 
documentElement.scrollTop 
+(documentElement.clientHeight-this.clientHeight) - 1 
: document.body.scrollTop 
+(document.body.clientHeight-this.clientHeight) - 1); 
}
Javascript 相关文章推荐
纯js实现div内图片自适应大小(已测试,兼容火狐)
Jun 16 Javascript
JS实现表格数据各种搜索功能的方法
Mar 03 Javascript
基于Css3和JQuery实现打字机效果
Aug 11 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
Sep 09 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
Nov 24 Javascript
JavaScript中instanceof运算符的使用示例
Jun 08 Javascript
微信小程序 倒计时组件实现代码
Oct 24 Javascript
微信小程序实现发红包功能
Jul 11 Javascript
微信小程序实现自上而下字幕滚动
Jul 14 Javascript
JS模拟浏览器实现全局搜索功能
Sep 11 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
Mar 02 Javascript
vscode调试node.js的实现方法
Mar 22 Javascript
HTML DOM的nodeType值介绍
Mar 31 #Javascript
setTimeout和setInterval的区别你真的了解吗?
Mar 31 #Javascript
Draggable Elements 元素拖拽功能实现代码
Mar 30 #Javascript
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
Mar 30 #Javascript
使用jquery为table动态添加行的实现代码
Mar 30 #Javascript
jquery 查找select ,并触发事件的实现代码
Mar 30 #Javascript
lyhucSelect基于Jquery的Select数据联动插件
Mar 29 #Javascript
You might like
PHP写的求多项式导数的函数代码
2012/07/04 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
php函数连续调用实例分析
2015/07/30 PHP
PHP可变函数学习小结
2015/11/29 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
分享5个非常有用的Laravel Blade指令
2018/05/30 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
JQuery index()方法使用代码
2010/06/02 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
JS远程获取网页源代码实例
2013/09/05 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
python在windows下实现备份程序实例
2014/07/04 Python
python中迭代器(iterator)用法实例分析
2015/04/29 Python
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
亚马逊中国官方网站:amazon.cn
2017/05/25 全球购物
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
事业单位分类改革实施方案
2014/03/21 职场文书
关于环保的建议书
2014/05/12 职场文书
英语教师自荐信
2014/05/26 职场文书
中职班主任培训心得体会
2016/01/07 职场文书