兼容性(css)

让人头疼的CSS兼容
因为之前对css的理解不够深入,也没有经过系统的学习,所以一度认为css是前端最难的东西,但真的学习后,才发现css真的很难。。。有很多东西啊!!!

解决HTML5/css3兼容性

 
CSS3中-moz、-ms、-webkit和-o分别代表什么意思    
1、-webkit-:代表safari、chrome浏览器私有属性  
2、-moz-:代表FireFox浏览器私有属性    
3、-o-:代表opera浏览器私有属性
4、-ms-:代表IE浏览器私有属性
-webkit-transition:width 2s; /* Safari and Chrome */
-moz-transition:width 2s; /* Firefox 4 */
-o-transition:width 2s; /* Opera */
-ms-transition:width 2s; /*ie */

接下来说说一些我知道的BUG:

  1. 不同浏览器的标签默认的外补丁和内补丁不同
    问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。
    解决方案:CSS里 {margin:0;padding:0;}
    备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS文件开头都会用通配符
    来设置各个标签的内外补丁是0。
  2. 块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大( IE的双边距bug )
    问题症状:常见症状是IE6中后面的一块被顶到下一行
    解决方案:在float的标签样式控制中加入 display:inline;将其转化为行内属性
    备注:我们最常用的就是div+CSS布局了,而div就是一个典型的块属性标签,横向布局的时候我们通常都是用div float实现的,横向的间距设置如果用margin实现,这就是一个必然会碰到的兼容性问题。
#IamFloat{ 
float:left; 
margin:5px;/*IE下理解为10px*/ 
display:inline;/*IE下再理解为5px*/ 
} 
  1. 图片默认有间距
    问题症状:几个img标签放在一起的时候,有些浏览器会有默认的间距,加了问题一中提到的通配符也不起作用。
    解决方案:使用float属性为img布局
    备注:因为img标签是行内属性标签,所以只要不超出容器宽度,img标签都会排在一行里,但是部分浏览器的img标签之间会有个间距。去掉这个间距使用float是正道。(我的一个学生使用负margin,虽然能解决,但负margin本身就是容易引起浏览器兼容问题的用法,所以我禁止他们使用)

  2. 设置较小高度标签(一般小于10px),在IE6,IE7,遨游中高度超出自己设置高度
    问题症状:IE6、7和遨游里这个标签的高度不受控制,超出自己设置的高度
    解决方案:给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设 置的高度。
    备注:这种情况一般出现在我们设置小圆角背景的标签里。出现这个问题的原因是IE8 之前的浏览器都会给标签一个最小默认的行高的高度。即使你的标签是空的,这个标签 的高度还是会达到默认的行高。
    例如: overflow:hidden zoom:0.08 line-height:1px

你可能感兴趣的:(兼容性(css))