IE6浏览器有太多的bug让制作网页的人头疼。这篇文章介绍的是介绍的是如何解决IE6不支持position:fixed;属性的办法。

  如果我们需要做某个元素始终位于浏览器的底部,不会因为浏览器窗口的缩放和滚动条的滚动而变化,那个肯定是想到的用position:fixed生成绝对定位,只要设置这个CSS属性就能达到刚刚的需求。

  当其他浏览器都正常显示的时候,只有IE6不那么完美。该元素的位置是通过”left”, “top”, “right” 以及 “bottom” 属性进行规定。 
一般的 position:fixed; 实现方法 
  在右下角 <div id="top">...</div>

  这个 HTML 元素使用的 CSS 代码如下:

    #top{ position:fixed; bottom:0; right:20px; }

  实现让 <div id="top">...</div> 元素固定在浏览器的底部和距离右边的20个像素。 
在 IE6 中实现 position:fixed; 的办法 
  刚刚提过,在IE6中是不能直接使用 position:fixed; 。你需要一些 CSS Hack 来解决它。当然,IE6 的问题也不仅仅 position:fixed; 
  相同的还是让 <div id="top">...</div> 元素固定在浏览器的底部和距离右边的20个像素,

  这次的代码是:

    #top{ position:fixed; _position:absolute; bottom:0; right:20px; _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))); 
      }

  right 跟 left 属性可以用绝对定位的办法解决,而 top 跟 bottom 就需要用上面的表达式来实现。

  其中在 _position:absolute; 中的 _ 符号只有 IE6 才能识别,目的是为了区分其他浏览器。 
上面的只是一个例子,下面的才是最重要的代码片段: 使元素固定在浏览器的顶部:

  #top{ _position:absolute; _bottom:auto;_top:expression(eval(document.documentElement.scrollTop)); }使元素固定在浏览器的底部:   #top{ _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)));

}

  这两段代码只能实现在最底部跟最顶部,你可以使用 _margin-top:10px; 或者 _margin-bottom:10px; 修改其中的数值控制元素的位置。 
position:fixed; 闪动问题 
现在,问题还没有完全解决。在用了上面的办法后,你会发现:被固定定位的元素在滚动滚动条的时候会闪动。解决闪动问题的办法是在 CSS 文件中加入:*html{ 
background-image:url(about:blank); background-attachment:fixed; }其中 * 是给 IE6 识别的。 
到此,IE6 的 position:fixed; 问题已经被解决了。这里还为大家搜集了一个采用JS解决的办法。 
JS的解决方案 
  JS是我最不愿使用的解决方案,因为这种纯样式的bug用JS来解决有点大材小用,而且JS需要DOM载入后才执行,有可能会出现闪屏的现象. 
  JS的解决方案很简单,通过设置一个top来实现,top是指分页的上边距离document的上边的长度,可以被分解成下面几项(并不是完整的代码) top = scrollTop + clientHeight - height(分页的高度)

  scrollTop和clientHeight分别用来解决上面两个问题,滚动条的滚动会影响到scrollTop,而窗口的变化会影响到clientHeight,所以当这两个事件被触发时必须重置top,于是就形成类似下面的代码,但这段脚本的刷新率会非常高,估计有性能问题. 
  window.onresize = window.onscroll = function(){     //reset top };

解决IE6下固定定位问题 使用position:fixed的更多相关文章

  1. 解决IE6下浮动层固定定位的经典方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. jquery返回顶部和底部插件和解决ie6下fixed插件

    (function($){ //返回顶部和底部插件 $.fn.extend({ goTopBootom:function (options){ //默认参数 var defaults = { &quo ...

  3. ie6下固定位置的实现

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 解决IE6,IE7下子元素使用position:relative、父元素使用overflow:auto后,子元素不随着滚动条滚动的问题

    解决IE6,IE7下子元素使用position:relative.父元素使用overflow:auto后,子元素不随着滚动条滚动的问题   在IE6,IE7下,子元素使用position:relati ...

  5. 解决IE6下png图片透明度不显示的问题

    世界上最遥远的距离,不外乎我在搞前端,你却在用旧IE,现在随着XP要退休了,IE6的市场占有率应该也会逐步下滑.不过基于天朝人民的惰性以及企鹅微软的“扎篱笆”活动,做网站的朋友依旧不能忽视IE6的存在 ...

  6. 解决IE6下PNG透明的JS插件:DD_belatedPNG.js

    DD_belatedPNG是一款解决IE6下PNG透明的JS插件,支持background-position和background-repeat属性,支持伪类.使用方法: <!--[if lte ...

  7. 解决IE6下不支持 png24的透明图片问题

    常用的两种解决方案: 第一:使用IE滤镜解决 关键代码: css代码  _background:none;_filter:progid:DXImageTransform.Microsoft.Alpha ...

  8. 解决IE6下Position:fixed问题(只用css)

    在IE6.0及以下版本的浏览器里是不支持position:fixed.而在IE7,IE8,firefox,opera,chrome都可以完美的支持此特性的.解决此问题的要点主要有: 1).容器要有一个 ...

  9. 解决ie6下不支持fix属性,模拟固定定位

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

随机推荐

  1. android手势事件 快速移动 长按触摸屏 按下触摸屏,并拖动

    /* 用户按下触摸屏.快速移动后松开 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float vel ...

  2. 如何理解js

    1.js/dom功能 2.performance 3.code organization 4.tools and flow 如何理解js代码,代码即业务. 如何快速理解代码业务.

  3. [Angular 2] Order Dynamic Components Inside an Angular 2 ViewContainer

    By default, when you generate components, they will simply be added to the page in order, one after ...

  4. 《转》Java中HashMap详解

    HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实 ...

  5. jquery 验证控件

    最近应公司要求做了一个jquery的示例文件,包括:模态窗口怎么实现:jquery validate下的校验:怎么做图片特效:怎么实现异步操作:实现图片上传剪切效果等很多特效: 这里把jquery校验 ...

  6. 第1章 游戏之乐——让CPU占用率曲线听你指挥

    让CPU占用率曲线听你指挥 写一个程序,让用于来决定Windows任务管理器(Task Manager)的CPU占用率.程序越精简越好,计算机语言不限.例如,可以实现下面三种情况: CPU的占用率固定 ...

  7. EF——一个实体对应两张表,两个实体对应一张表 06 (转)

    本篇日记我们将详细探讨如何将表现领域的类映射到现有的数据库.现在的经济形势不是太好,很多公司都取消了开发新系统的预算.在这种情况下,通常的做法是把原有的几个系统修改一下做个集成,先凑合用着得了.如果要 ...

  8. 关于在Struts2框架下实现文件的上传功能

    struts2的配置过程 (1)在项目中加入jar包 (2)web.xml中filter(过滤器)的配置 <?xml version="1.0" encoding=" ...

  9. solr4.x配置IK2012FF智能分词+同义词配置

    本文配置环境:solr4.6+ IK2012ff +tomcat7 在Solr4.0发布以后,官方取消了BaseTokenizerFactory接口,而直接使用Lucene Analyzer标准接口T ...

  10. TCP/IP协议原理与应用笔记25:网际协议(IP)之 数据报(Datagram)

    1. 数据报(Datagram)格式: 2. 长度字段 (1)首部长度字段, bits 以 4 字节(即32bits)为单位 取值:5~15(即首部长度为20 ~ 60 bytes) (2)总长度字段 ...