zoukankan      html  css  js  c++  java
  • 常见IE6兼容问题总结

    1.<!DOCTYPE HTML>文档类型的声明。

    产生条件:IE6浏览器,当我们没有书写这个文档声明的时候,会触发IE6浏览器的怪异解析现象;

    解决办法:书写文档声明。

    2.不同浏览器当中,很多的标签的默认样式不同,如默认的外部丁内补丁。

    产生条件:不同浏览器;

    解决办法:利用CSS reset文件进行样式的清除,然后再根据需要进行设置。

    3.横向双倍外边距

    产生条件:在IE6中块元素浮动后,会出现横向双倍margin现象。

    解决办法: 在float标签的样式控制中加入display:inline

    4.默认行高

    产生条件:IE6、IE7、遨游浏览器;设置的文字高度超出盒模型内容区域设置的高度时会影响布局。

    解决办法:给超出高度的标签设置overflow:hidden;或者将文字的行高line-height设置为小于块的高度。

    5.img外部的border

    产生条件:img外部有a标签,即img标签有链接时

    解决办法:设置img边框border:0;

    6.图片默认有间距。

    产生条件:img标签(每个img之后敲了回车)

    解决办法:为img设置float的浮动布局方式。

    7.经典3像素bug

    产生条件:IE6浏览器,浮动块元素与未浮动块元素处于同一行,有默认的3px间距。

    解决办法:设置非浮动元素浮动。

    8.默认行高

    产生条件:清除浮动的时候,有些人会采取一种清浮动的方法,使用一个空的div,然后为这个div设置{clear:both}。在大部分

    浏览器当中,这样做是没有任何问题的,但是在IE6浏览器当中,div即使是空的,也会存在默认行高。

    解决办法:设置其高度为0,并设置overflow:hidden。{height:0;overflow:hidden;clear:both;}

    9.a标签hover不适用于所有标签

    产生条件:IE6浏览器中hover只支持a标签的使用,不支持一切其它标签使用;

    解决办法:合理用a标签嵌套其他行内标签或者用javascript模拟a的hover效果;详情请查看日志:兼容IE6 a标签hover效果

    10.table标签当中border-color属性设置无效

    产生条件:IE6中table设置属性border-color无效;

    解决办法:运用CSS样式进行控制,而不是使用属性进行样式的处理。

    11.png格式图片

    产生条件:IE6浏览器,不支持透明;

    解决办法:使用javascript进行处理;或者使用gif、jpg图像替代掉png图片的使用。

    12.透明rgba与opacity

    产生条件:IE6不支持此两种透明的设置方法;

    解决办法:使用IE6当中的滤镜filter替代掉,如:opacity:0.6;filter:alpha(opacity=60)。

    13.子选择器在IE6中不能使用

    产生条件:IE6浏览器,使用E>F子选择器;

    解决办法:采用其他选择器或者采用后代选择器进行控制,如:div p{margin:10px;} div p p{margin:0;}替代掉 div>p{margin:10px;}。

    14.不支持最大最小宽高

    产生条件:IE6浏览器,标签的最低高度/宽度设置(min/max-height)

    解决办法:为IE6单独设置hack,即_height:最小高度值;_width:最小宽度值(对于IE6,当实际宽高超出定义的宽高时,元素会自动调整宽高)。对于最大高度和最大宽度,没有必要设置兼容,当前对于开发者来说,只需要保证IE6下正常显示即可,无需在它身上花费太多功夫。

    15.纵向居中,IE6不支持display:table-cell

    产生条件:IE6浏览器,设置一个元素在另一个元素中垂直方向上居中对齐,不能够支持以单元格的方式来显示元素;

    解决办法:如果是单行文本,采用line-height和height的配合使得文本垂直居中,如果中间是其他元素或者多行文本,采用其他方法进行居中处理,处理方法有多种,详见日志:CSS元素水平垂直居中

    16.input 聚焦框颜色与样式不同

    产生条件:各个浏览器表现不同;

    处理方法:使用outline:none,清除默认样式之后再统一设置。

    17.鼠标移上小手效果

    产生条件:IE6,cursor:hand :IE完全支持。但是在firefox是不支持的,没有效果。cursor:pointer :是CSS2.0的标准。所以firefox是支持的,但是IE5.0既之前版本不支持。IE6开始支持。

    解决办法:设置两种cursor:pointer cursor:hand。

    18.子标签无法撑开父标签的高度

    产生条件:父标签内部含一个或多个子标签,父标签没有设置浮动,而子标签发生浮动;

    处理方法:方法1:在子标签最后添加清除浮动的设置<div style='height:0;clear:both'></div>;方法2:为父标签添加{overflow:hidden;}的样式;方法3:为父标签设置固定高度。

    19.li的间距问题

    产生条件:IE6浏览器 li标签设置宽高,且li里面的元素发生了浮动;

    处理方法:方法1:li不设置宽高;方法2:li内部的标签不进行浮动。

    20.行内元素布局混乱

    产生条件:行内元素为包含框时,如果包含框包含的绝对定位元素以百分比为单位进行定位;

    处理方法:在行内元素当中加入{zoom:1},触发IE的hasLayout。关于hasLayout的更多介绍请参见日志:hasLayout IE浏览器bug的来源。

    21.多显示一个字

    产生条件:多个浮动元素中间夹杂HTML注释语句,浮动元素宽度设置为100%;则在下一行多显示一个上一行的最后一个字符;

    处理方法:果断删掉注释!

    22.CSS优先级 !important

    产生条件:IE6当中,在同一组CSS属性中,!important不起作用;

    处理方法:单独设置。

    23.img图片下部高度多余5px

    产生条件:IE6浏览器;

    处理方法:将图片转化为块级对象,即display:block。还有四种其他方法,详细解释参见日志:“IE6 BUG 图片元素img下 高度超出 出现多余空白




    --------------------------------------


    常见兼容性问题?

    * png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.也可以引用一段脚本处理.

     

    * 浏览器默认的marginpadding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一。

     

    * IE6双边距bug:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大。

     

    * 浮动ie产生的双倍距离(IE6双边距问题:在IE6下,如果对元素设置了浮动,同时又设置了margin-leftmargin-rightmargin值会加倍。)

      #box{ float:left; 10px; margin:0 0 0 100px;}

     

     这种情况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别)

     

    *  渐进识别的方式,从总体中逐渐排除局部。

     

      首先,巧妙的使用“9”这一标记,将IE游览器从所有情况中分离出来。

      接着,再次使用“+”IE8IE7IE6分离开来,这样IE8已经独立识别。

     

      css

          .bb{

           background-color:#f1ee18;/*所有识别*/

          .background-color:#00deff9; /*IE678识别*/

          +background-color:#a200ff;/*IE67识别*/

          _background-color:#1e0bd1;/*IE6识别*/

          }

     

    *  IE,可以使用获取常规属性的方法来获取自定义属性,

       也可以使用getAttribute()获取自定义属性;

       Firefox,只能使用getAttribute()获取自定义属性.

       解决方法:统一通过getAttribute()获取自定义属性.

     

    * IE,event对象有x,y属性,但是没有pageX,pageY属性;

      Firefox,event对象有pageX,pageY属性,但是没有x,y属性.

     

    * 解决方法:(条件注释)缺点是在IE浏览器下可能会增加额外的HTTP请求数。

     

    * Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示,

      可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决.

     

    * 超链接访问过后hover样式就不出现了 被点击访问过的超链接样式不在具有hoveractive了解决方法是改变CSS属性的排列顺序:

    L-V-H-A :  a:link {} a:visited {} a:hover {} a:active {}

     

    * 怪异模式问题:漏写DTD声明,Firefox仍然会按照标准模式来解析网页,但在IE中会触发怪异模式。为避免怪异模式给我们带来不必要的麻烦,最好养成书写DTD声明的好习惯。现在可以使用[html5](http://www.w3.org/TR/html5/single-page.html)推荐的写法:`<doctype html>`

     

    * 上下margin重合问题

    ieff都存在,相邻的两个divmargin-leftmargin-right不会重合,但是margin-topmargin-bottom却会发生重合。

    解决方法,养成良好的代码编写习惯,同时采用margin-top或者同时采用margin-bottom

    * ie6png图片格式支持不好(引用一段脚本处理)

    ###解释下浮动和它的工作原理?清除浮动的技巧

    浮动元素脱离文档流,不占据空间。浮动元素碰到包含它的边框或者浮动元素的边框停留。

     

    1.使用空标签清除浮动。

       这种方法是在所有浮动标签后面添加一个空标签 定义css clear:both. 弊端就是增加了无意义标签。

    2.使用overflow

       给包含浮动元素的父标签添加css属性 overflow:auto; zoom:1; zoom:1用于兼容IE6

    3.使用after伪对象清除浮动。

       该方法只适用于非IE浏览器。具体写法可参照以下示例。使用中需注意以下几点。一、该方法中必须为需要清除浮动元素的伪对象中设置 height:0,否则该元素会比实际高出若干像素;

    ###浮动元素引起的问题和解决办法?

    浮动元素引起的问题:

    1)父元素的高度无法被撑开,影响与父元素同级的元素

    2)与浮动元素同级的非浮动元素会跟随其后

    3)若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构

    解决方法: 使用CSS中的clear:both;属性来清除元素的浮动可解决23问题,对于问题1,添加如下样式,给父元素添加clearfix样式:

    .clearfix:after{content: ".";display: block;height: 0;clear: both;visibility: hidden;}

    .clearfix{display: inline-block;} /* for IE/Mac */

    清除浮动的几种方法:

    1,额外标签法,<div style="clear:both;"></div>(缺点:不过这个办法会增加额外的标签使HTML结构看起来不够简洁。)

    2,使用after伪类

     

    #parent:after{

        content:".";

        height:0;

        visibility:hidden;

        display:block;

        clear:both;

        }

     

    3,浮动外部元素

    4,设置`overflow``hidden`或者auto

    ###IE 8以下版本的浏览器中的盒模型有什么不同

    IE8以下浏览器的盒模型中定义的元素的宽高不包括内边距和边框

    ###DOM操作——怎样添加、移除、移动、复制、创建和查找节点。

    1)创建新节点

     

          createDocumentFragment()    //创建一个DOM片段

     

          createElement()   //创建一个具体的元素

     

          createTextNode()   //创建一个文本节点

     

    2)添加、移除、替换、插入

     

          appendChild()

     

          removeChild()

     

          replaceChild()

     

          insertBefore() //在已有的子节点前插入一个新的子节点

     

    3)查找

     

          getElementsByTagName()    //通过标签名称

     

          getElementsByName()    //通过元素的Name属性的值(IE容错能力较强,会得到一个数组,其中包括id等于name值的)

     

          getElementById()    //通过元素Id,唯一性

    ###html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML HTML5

    * HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。

     

    * 拖拽释放(Drag and drop) API

      语义化更好的内容标签(header,nav,footer,aside,article,section

      音频、视频API(audio,video)

      画布(Canvas) API

      地理(Geolocation) API

      本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;

      sessionStorage 的数据在浏览器关闭后自动删除

     

      表单控件,calendardatetimeemailurlsearch  

      新的技术webworker, websocket, Geolocation

     

    * 移除的元素

     

    纯表现的元素:basefontbigcenterfont, sstrikettu

     

    对可用性产生负面影响的元素:frameframesetnoframes

     

    支持HTML5新标签:

     

    * IE8/IE7/IE6支持通过document.createElement方法产生的标签,

      可以利用这一特性让这些浏览器支持HTML5新标签,

     

      浏览器支持新标签后,还需要添加标签默认的样式:

     

    * 当然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架

       <!--[if lt IE 9]>

       <script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>

       <![endif]-->

    如何区分: DOCTYPE声明新增的结构元素功能元素


  • 相关阅读:
    Python中把数据存入csv文件
    Python中把字典和值取出来
    scrapy输出请求状态码
    scrapy发送post请求获取cookie
    Python3 Unicode转中文
    Quartus13.0破解方法
    元音字母A的发音规则
    位bit——字节Byte???
    曾经的小孩在努力奔跑!
    如何看懂的时序图?
  • 原文地址:https://www.cnblogs.com/korea/p/11191673.html
Copyright © 2011-2022 走看看