HTML5基础归纳(2)--常遇到的兼容问题及解决办法

时间:2021-04-19 19:41:39

在说到常遇到的兼容问题及解决办法之前,先来简单了解一下五大浏览器及其内核是什么。

1、Trident内核:代表作品是IE

2、Gecko内核:代表作品是Firefox,即火狐浏览器。

3、Webkit内核:代表作品是Safari、曾经的Chrome,是开源的项目。

4、Presto内核:代表作品是Opera。

5、Blink内核:由Google和Opera Software开发的浏览器排版引擎。

下面我们来说说常遇到的浏览器兼容问题:


1、图片间隙

解决办法:1)将<div>与<img>写在一行上

2)将<img>转换为块元素,即给<img>添加声明:display:block;


2、dt,li图片间隙,图片将div撑大3px

解决办法:将<img>转换为块元素,即给<img>添加声明:display:block;


3、默认高度,低于16px就无法正常显示

解决办法:1)给元素添加声明:font-size:0;

2)给元素添加声明:overflow:hidden;


4、双倍浮向(双倍边距),错误将浮向边界加倍显示

解决办法:给浮动元素添加声明:display:inline;


5、表单元素行高不一致

解决办法:给表单元素添加声明:float:left;


6、按钮元素默认大小不一致

解决办法:1)统一大小,可用a标签模拟

2)input外边套一个标签,在标签里面写样式,吧input边框去掉

3)若按钮是图片,可将图片作为按钮背景图片


7、百分比bug,在IE6一下版本中解析百分比时,会按四舍五入的方式计算,从而导致50%+50%>100%

解决办法:给右边元素添加声明:clear:right; clear:left; clear:both;


8、按钮解析边框时会把边框解析在内部,但不会影响按钮原有的大小


9、鼠标指针bug,cursor属性的hand属性值只在IE识别,cursor属性的pointer属性值在IE6及以上版本识别

解决办法:统一鼠标形状为手形,即添加声明:cursor:pointer;

cursor常用样式可自行查询,这里就不多说了


10、透明属性

IE8以下写法:filter:alpha(opacity=value);/*value取值范围为1-100*/

其他浏览器兼容写法:opacity:value;/*value取值范围为0.1-1*/


11、列表阶梯bug,列表阶梯通常会在给li子元素a标签使用float:left;时触发,在IE6及以下版本会出现垂直或阶梯状

解决办法:给父元素设置浮动属性即可


12、在IE6及以下版本想去掉input默认边框,设置:border:0;即可


13、li标签的面的a标签设置display:block;后悔出现行高不一致

解决办法:给li设置浮动属性,并将li宽度等于父元素宽度


14、子元素没设置任何浮动,但设置了margin-top属性后,会错误的把margin-top属性加给父元素(这是标准浏览器的问题)

解决办法:给父元素添加声明:overflow:hidden;


15、在IE6中隐藏元素,如添加display:none;的元素被包含在浮动元素里,可能会引发文本重复bug

解决办法:给浮动元素添加:display:inline;


16、若要给元素定义100%宽高度,必须明确它的父级元素为100%;若要定义满屏高度,就先给html和body定义height:100%;


17、浮动元素高度自适应(父元素不写高度时,子元素写浮动后,父元素高度会发生高度塌陷)

解决办法:1)给父元素添加声明:overflow:hidden;

2)在浮动元素下方添加空div,并给元素添加声明:clear:both;height:0;overflow:hidden;

3)万能清除浮动法(针对IE6以下,一般使用该方法)

格式:.clearfix:after{content:"."; clear:both; display:block; heihgt:0; overflow:hidden; visibility:hidden;}

.clearfix{zoom:1;}


18、最小高度自适应解决办法

1)min-height:value; _height:value;

2)min-height:value; height:auto !imgportant; height:value;(建议使用该方法)