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 相关文章推荐
javascript一些不错的函数脚本代码
Sep 10 Javascript
from表单多个按钮提交用onclick跳转不同action
Apr 24 Javascript
node.js中的http.response.getHeader方法使用说明
Dec 14 Javascript
Ionic快速安装教程
Jun 03 Javascript
AngularJS基础 ng-src 指令简单示例
Aug 03 Javascript
浅谈JS使用[ ]来访问对象属性
Sep 21 Javascript
vue + socket.io实现一个简易聊天室示例代码
Mar 06 Javascript
vue2.0 下拉框默认标题设置方法
Aug 22 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
Sep 12 Javascript
详解在create-react-app使用less与antd按需加载
Dec 06 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
Jun 26 Javascript
javascript中可能用得到的全部的排序算法
Mar 05 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原理之异常机制
2010/08/21 PHP
THINKPHP内容分页代码分享
2015/01/14 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
PHP解决中文乱码
2017/04/28 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
javascript 函数速查表
2010/02/07 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
flexigrid 参数说明
2010/11/23 Javascript
潜说js对象和数组
2011/05/25 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
用Python编写web API的教程
2015/04/30 Python
Python2.x中文乱码问题解决方法
2015/06/02 Python
python算法演练_One Rule 算法(详解)
2017/05/17 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
python三引号如何输入
2020/07/06 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
公司活动策划方案
2014/01/13 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
平安家庭事迹材料
2014/12/20 职场文书
大学生敬老院活动总结
2015/05/07 职场文书
Python趣味挑战之给幼儿园弟弟生成1000道算术题
2021/05/28 Python
python开发的自动化运维工具ansible详解
2021/08/07 Python
攻击最高的10只幽灵系神奇宝贝,坚盾剑怪排第一,第五最为可怕
2022/03/18 日漫