IE浏览器兼容问题(下)——IE6的常见问题

IE6常见兼容性问题

1、盒模型问题

(1)DTD问题

DTD:文档定义类型,规定了要遵循的书写规范。

如果不写DTD,高级浏览器还是可以正常加载,IE6会以怪异模式进行加载。

盒模型:正常应该是外扩的(实际占位会因为加了padding和border变大),IE6不写DTD是内减的(实际占位不变,padding和border的占位是向内的)。

这也是HTML5的兼容性问题之一。

解决方法:必须写DTD。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

(2)不支持小于一个文字字号的高度的盒子

如果不设置文字字号,IE6中不支持高度低于19px的盒子。如果设置高度低于19px,以19px显示。

解决方法:

①设置盒子的内部文字字号为0。font-size: 0;

②给盒子设置高度,溢出高度的部分隐藏。overflow: hidden;

(3)a标签中图片的边框

如果一个插入图片(img标签),外层被a标签嵌套,IE6中图片会有一个蓝色的边框。

去掉边框的方法:清除img默认样式。

不论img图片是否放在a标签内,都给他清一下边框样式,将img的border设置为0或none。

(4)块级标签内的图片下边空隙问题

块级元素内如果嵌套img标签,高级浏览器会自动被图片撑开。IE6撑开时,底部多出一段距离。

解决方法:

给img图片转块。display: block

或者给父级元素添加高度,溢出隐藏。

2、浮动

(1)不浮动的元素不会钻空

同级元素如果一个元素浮动,一个元素不浮动,浮动的元素应该让出标准流位置,后面的元素占有这个位置。

高级浏览器中是压盖效果,浮动的盖住了没有浮动的。

IE6中并没有压盖,而是水平排列效果。

解决方法:

①同级元素要浮动都浮动,不能一部分浮动,一部分不浮动。

②制作压盖效果,用定位不要用浮动。

(2)3像素bug问题

一个元素浮动,一个元素不浮动,除了并排显示之外,两个元素之间还有一个3px的间距。

解决方法:

①不能一个浮动一个不浮动。

②如果必须一个浮动一个不浮动,还要解决3像素bug:给浮动的元素添加margin值为-3px,将距离拉近。

(3)双倍margin问题

如果一组元素全部进行浮动,而且每个元素都有同方向的margin-left外边距,IE6中第一个HTML元素与父级之间的margin距离是设置的值的两倍。

解决方法:

①不要用子级的margin去踹父亲,父子之间的间距用父级的padding挤出来,每个子元素设置与浮动方向相反的外边距。

 ul{

  list-style: none;

  width: 980px;

  height: 50px;

  padding-left: 20px;

  border: 5px solid red;

  margin: 100px auto;

  }

  ul li{

  float: left;

  width: 100px;

  height: 50px;

  background: yellowgreen;

  margin-right: 20px;

  }

②单独给IE6设置首个元素的外边距减半,其他浏览器默认为原值。IE6中减半的数值自动双倍。

 ul li{

  float: left;

  width: 100px;

  height: 50px;

  background: yellowgreen;

  margin-left: 20px;

  }

  ul li.first{

  _margin-left: 10px;

  }

(4)溢出隐藏清除浮动失效

overflow:hidden属性在清除浮动时 ,IE6中可能会失效。

不设置宽度和高度:清浮动效果失效。

解决方法:

给父盒子设置宽度:清浮动效果生效。

浏览器加载网页时,有两种布局加载机制。

有布局的机制:hasLayout,一个元素在加载时,自身的尺寸按照内部子元素、内容和自身设置的尺寸属性进行加载的。

没有布局的机制:自身元素加载时,相关尺寸按照父级元素的尺寸进行加载的。

如果要用溢出隐藏清除浮动,应该由子元素的数值决定父元素的数值,符合有布局的机制。

想要用溢出隐藏清除浮动:触发hasLayout机制。

触发方法:可以通过设置一些父盒子的有长度、数值的属性去触发。不一定每个有数值的属性每次都能触发成功机制。

有一个叫做zoom的属性,始终能触发有布局的机制。

zoom:放大镜。放大缩小盒子自身尺寸的属性。

属性值:数字。

放大或缩小显示时,按照盒子原始的自身宽高进行的缩放。必须要知道盒子的原始自身尺寸。

作为辅助清除浮动属性:属性值必须为1.

  div{

  border: 10px solid red;

  overflow: hidden;

  _zoom: 1;    只有IE6加载

 }

3、固定定位

IE6浏览器不支持固定定位。

解决方法:以后用js去模拟固定定位。

.box{  width: 100px;  height: 100px;   text-align: center;  line-height: 100px;
  background: red;
  position: fixed;
  top: 50%;
  left: 50%;
  _position:absolute;
  _top:expression(document.documentElement.scrollTop+document.documentElement.clientHeight/2-this.clientHeight/2);
  _left:expression(document.documentElement.clientWidth/2-this.clientWidth/2);
} 
时间: 2024-07-30 14:22:55

IE浏览器兼容问题(下)——IE6的常见问题的相关文章

浏览器兼容模式下,上传文件问题

//在浏览器的兼容模式下,页面没有上传图片的时候,file != null && file.Count > 0 && file[""] != null 是成立的.但file[""].FileName != ""是不成立的 if (file != null && file.Count > 0 && file["file"] != null &&a

QQ浏览器兼容模式下Cookie失效 导致的NetCore Cookie认证失效

最近在写NetCore项目采用的是NetCore的Cookie认证.结果偶然发现QQ浏览器登录不好用.这里先需要了解一下set-cookie中的SameSite属性  导致原因 首先Fiddler 4查看一下两次请求 第一次Post进行登录 返回302重定向到站点首页并带回Cookie (一切正常) 但是看第二条http请求,返回又是302 ,查看相关信息,请求时Cookie 根本没带入 到此基本知道整个登录失败是因为Cookie没有带入请求头. 解决方案: NetCore Cookie认证下如

Angularjs在360兼容模式下取数据缓存问题解决办法

测试提了一个bug,在360浏览器兼容模式下,删除页面数据需要手动刷新浏览器才能看到最新的数据.首先要复现当时的问题,很容易就复现了,但是发现在360浏览器兼容模式下无法打开开发者工具.好在经过反复重装之后,终于打开了开发者工具,经过跟踪发现,第一次删除数据时可以正常刷新,第二次或以后的删除将无法刷新,跟踪代码,发现通过异步请求的数据正常的返回并且绑定了.点击搜索按钮,也无法实现刷新,但是点击分页,发现可以翻页.初步推断是浏览器缓存了异步请求数据,跟踪比较返回的数据发现,推断是正确的.于是从网上

flex与相对定位在国内双核浏览器极速模式下的兼容性问题

---恢复内容开始--- 览器兼容性问题是前端的一个重要部分. 在国内的浏览器中,360浏览器,QQ浏览器等绝大部分都是双核浏览器.双核浏览器即拥有IE兼容内核和非IE极速内核两个内核,分别对应兼容模式和极速模式.兼容模式时使用IE内核,极速模式采用webkit内核.而目前大部分网站为了性能和用户体验,默认使用极速模式.在极速模式出现问题时,使用兼容模式. 虽然极速模式是使用的webkit内核,但是浏览器的表现却还是有一定差异.平时使用Chrome调试,在极速模式下却表现的不正常. 好,进入正题

前端编程提高之旅(三)----浏览器兼容之IE6

在爱奇艺实习期间,乐帝主要负责移动端活动页面的制作,由于移动浏览器是随着智能手机兴起的,这就决定了移动端不会重蹈浏览器兼容问题的覆辙,一开始就比较好的支持web标准,而纵观整个互联网行业,移动web开发还处于起步阶段,在很长一段时间pc端web作为主要的服务形式还会继续.从小来说作为一名前端开发人员,不了解浏览器兼容也会贻笑大方.这篇文章基于<IE7web标准之道>,对浏览器兼容做一个概览.    时间到了2014年,大概很少人会想到IE7发布之后,时隔这么多年IE6仍然占据市场7%的浏览器份

IE6/7常见问题 收集及解决(二)

1.float的div闭合;清除浮动;自适应高度; ① 例如:<#div id=”floatA” ><#div id=”floatB” ><#div id=” NOTfloatC” >这里的NOTfloatC并不希望继续平移,而是希望往下排. (其中floatA.floatB的属性已经设置为 float:left;)    这段代码在IE中毫无问题,问题出在FF.原因是NOTfloatC并非float标签,必须将float标签闭合. 在 <#div class=”

浏览器兼容 各浏览器的Hack写法 [出处:W3CPLUS]

Hack是针对不同的浏览器去写不同的CSS样式,从而让各浏览器能达到一致的渲染效果,那么针对不同的浏览器写不同的CSS CODE的过程,就叫CSS HACK,同时也叫写CSS Hack.然后将Hack放在浏览器特定的CSS文件中,让其符合条件的浏览器解析这些代码,就如前面所说的条件样式,我们将CSS Hack代码放入条件样式文件中,符合条件的浏览器就解析,不符合的将不解析,从面达到您所需要的页面渲染效果.总的一句话来说使用CSS Hack将会使用你的CSS代码部分失去作用,然后借助条件样式,使用

CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化

目录 一.浏览器兼容 1.1.概要 1.2.浏览器内核 1.3.浏览器市场份额(Browser Market Share) 1.4.兼容的一般标准 1.5.CSS Reset 1.6.CSS Hack 1.6.1.条件注释法 1.6.2.样式内属性标记法 1.6.3.选择器前缀法 1.7.文档模式 (X-UA-Compatible) 1.8.javascript兼容 二.前端性能优化 2.1.概要 2.2.减少HTTP请求数量 2.2.1.图片地图 2.2.2.精灵图片(Sprite) 2.2.

关于浏览器兼容问题及hack写法

浏览器的兼容问题 1.浏览器内核: Mozilla Firefox ( Gecko ) Internet Explorer ( Trident ) Opera ( Presto ) Safari ( WebKit ) Google Chrome ( WebKit ) 2.css hack 解决浏览器兼容的主要方法是css hack 由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系.我们就可以根据这个来针对不同的浏览器来写不同的CSS. IE6 IE7 IE8 Fire