各个浏览器之间的兼容问题

各个浏览器之间的兼容性问题,同样的HTML5和CSS5样式,但是浏览器表现的效果不一样。
一,什么兼容性问题,不正常的原因是什么?,应该怎么样让浏览器显示正常。
二,为什么浏览器会存在兼容性的问题?
1,同一个浏览器,版本越老存在的bug越多,越新的版本,对新标签和新的属性,新的特性支持越少。
2,不同的浏览器,核心技术不一样,标准不同,实现的方式也有差异,最终的效果也有差异。
三,处理兼容性问题的思路
one,要不要做?
1,从产品的角度,(产品的受欢迎程度,受欢迎浏览器的比例,效果优先还是基本功能优先?)
2,成本的角度,(有没有必要做一些功能?)
two,做到什么程度?
1,让那些浏览器支持那些效果?
three,如何做?
1,根据兼容需求选择技术框架,(jquery)等。
2,根据兼容需求选择兼容工具:html5shiv,Respond.js,CSS Reset,normalize.css,Modernizr.js,postcss,
3,条件注释,CSS hack,js能力检测做一些修补。
四,渐进增强和优雅降级
1,渐进增强:针对低版本的浏览器构建页面,保证基本功能,对高版本的浏览器,进行效果交互,和追加功能达到最好的用户体验。
2,优雅降级:一开始就构造完整的功能,然后对低版本的浏览器进行兼容处理。
。。。。。。
具体方法如下:
1,IE条件注释 (conditional comment) 是于HTML源码中被IE有条件解释的语句。条件注释可被用来向IE提供及隐藏代码,注意:只有IE9以下的浏览器才能识别这种语法,其他浏览器仅仅认为是普通注释。

IE6下 这句生效,在其他浏览器下认为是普通注释

使用了条件注释的页面在IE9 及以前 中可正常工作,但在IE10 以后不再支持。
。。。。。。
2,CSS hack是利用浏览器遗留 bug 的原理来识别旧的浏览器。
.box{
color: red;
_color: blue; /*只有IE6认识*/
*color: pink; /*只有IE67认识*/
color: yellow\9; /*IE浏览器都能识别*/
}
以下是一些常见属性的兼容情况
inline-block: >=IE8
min-width/min-height: >=IE7
:before,:after: >=IE8
div:hover: >=IE7
inline-block: >=IE8
background-size: >=IE9
圆角: >= IE9
阴影: >= IE9
动画/渐变: >= IE10
一些兼容写法范例:
.clearfix:after{
content: ‘‘;
display: block;
clear: both;
}
.clearfix{
*zoom: 1; /* 仅对IE6/IE7有效,zoom:1触发hasLayout,起到类似BFC的效果 */
}
.target{
display: inline-block;
*display: inline; /*仅对IE67生效*/
*zoom: 1; /*仅对IE67生效*/
}

。。。。。。
⑴可以针对不同的浏览器写CSS,针对不同的浏览器写不同的CSS 代码的过程,就叫CSS hack
CSS Hack的原理是什么?由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。
比如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",当不能识别下划线"_",而firefox两个都不能认识。等等
举个例子吧,设置背景颜色的代码,区别FF,IE7,IE6:background:orange,*background:green !important,*background:blue;
注:IE都能识别*,标准浏览器(如FF)不能识别*;
IE6能识别*,但不能识别 !important,
IE7能识别*,也能识别!important;
FF不能识别*,但能识别!important;
所以,FIREFOX中是橙色,IE7是绿色,IE6中是蓝色。
最后说一句,浏览器优先级别:FF

CSS:
1 .clear{clear:both;hegiht:0;overflow:hidden;}
clear:both;是清除所有浮动;height:0;overflow:hidden;是用来改变IE6下标签有默认的低于10px的行高时将以10px的高度显示的bug。但是空标签清浮动会增加多余的代码
③overflow:在需要清除浮动的腹肌标签中加入overflow即可,在IE6中不认识此属性则加入zoom:1;或者height:1%;css样式改为:.out{overflow:auto;zoom:1;}该属性对于父标签设置的高度小于子标签时,IE6/7、遨游则以下拉框形式出现,而火狐、谷歌、欧鹏、IE8会将子标签超出部分隐藏掉。
overflow:visible属性只能对IE6/7、遨游起作用,对火狐、谷歌、欧鹏、IE8无清浮作用。
overflow:visible(不剪切内容也不添加滚动条)/auto(是body对象和textarea的默认值,在需要时剪切内容并添加滚动条)/hidden(超出部分隐藏)/scroll(总是显示滚动条);
④after清浮动:css样式为:
.out{zoom:1;}/*==for IE6/7 Maxthon2==*/
outer:after {clear:both;content:"";visible:hidden;display:block;}/*==for FF/chrome/opera/IE8==*/
其中clear:both;只清除所有浮动;content:"";display:block;对于FF/chrome/opera/IE8不能缺少,content()可以取空值。
⑤子标签浮动时,给父标签浮动
⑥下一标签直接清浮动:兄弟标签浮动时,下一标签直接写入清除clear:both;就可以。
⑦使用position:absolute;清除浮动。
  
浏览器兼容问题十:空div默认行高
问题症状:IE6浏览器中hover只支持a标签的使用,不支持一切其它标签使用;
HTML:

我是第一标题

我是第二标题

我是第二标题

CSS:
1 *{ margin: 0; padding: 0; }
2 .div1{ width: 600px; height: 200px; background-color: #ccc; border: 1px solid #ff9673; margin: 100px auto 0; }
3 h2:hover{ color: red; }
4 a{ float: left; width: 200px; height: 30px; background: yellow; text-decoration: none; }
5 a:hover{ font-size: 50px; }
6 a:hover .h{ color: red; }
解决方案:解决办法:合理用a标签嵌套其他行内标签或者用javascript模拟a的hover效果;
备注:a{float:left}将a标签转化成块元素,这样可以设置宽和高。a:hover b{}当鼠标放在a标签上时,只是将a标签的b的内容隐藏掉,而不是将a隐藏掉。如果将a标签隐藏掉的,hover效果将消失,使display:none;失效。
浏览器兼容问题十一:子选择器在IE6中不能使用
问题症状:在IE6中,使用E>F子选择器无效果。
解决方案:采用其他选择器或者后代选择器进行控制。
浏览器兼容问题十二:input聚焦框颜色与样式不同
问题症状:各个浏览器表现不同。
解决方案:使用outline:none,清除默认样式之后再统一设置。
备注:使用上述方法可以清除IE和chrome浏览器默认样式,Firefox还是原样。
做兼容页面的方法是:每写一小段代码(布局中的一行或者一块)我们都要在不同的浏览器中看是否兼容,当然熟练到一定的程度就没这么麻烦了。建议经常会碰到兼容性问题的新手使用。很多兼容性问题都是因为浏览器对标签的默认属性解析不同造成的,只要我们稍加设置都能轻松地解决这些兼容问题。如果我们熟悉标签的默认属性的话,就能很好的理解为什么会出现兼容问题以及怎么去解决这些兼容问题。
/* CSS hack*/
我很少使用hacker的,可能是个人习惯吧,我不喜欢写的代码IE不兼容,然后用hack来解决。不过hacker还是非常好用的。使用hacker我可以把浏览器分为3类:IE6 ;IE7和遨游;其他(IE8 chrome ff safari opera等)
IE6认识的hacker 是下划线_ 和星号 *
IE7 遨游认识的hacker是星号 *
比如这样一个CSS设置:
height:300px;*height:200px;_height:100px;
IE6浏览器在读到height:300px的时候会认为高时300px;继续往下读,他也认识*heihgt, 所以当IE6读到*height:200px的时候会覆盖掉前一条的相冲突设置,认为高度是200px。继续往下读,IE6还认识_height,所以他又会覆盖掉200px高的设置,把高度设置为100px;
IE7和遨游也是一样的从高度300px的设置往下读。当它们读到*height200px的时候就停下了,因为它们不认识_height。所以它们会把高度解析为200px,剩下的浏览器只认识第一个height:300px;所以他们会把高度解析为300px。因为优先级相同且想冲突的属性设置后一个会覆盖掉前一个,所以书写的次序是很重要的。】

原文地址:http://blog.51cto.com/13941970/2170986

时间: 2024-09-30 22:24:34

各个浏览器之间的兼容问题的相关文章

css在各浏览器中的兼容问题

CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理方法并 整理了一下.对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE 影响 CSS 处理,作为W3C的标准,一定要加 DOCTYPE声名. CSS技巧 1.div的垂直居中问题 vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了.缺点是要控制内容

CSS3_概述、发展史、模块介绍、与浏览器之间的关系

一.CSS3概述和CSS3的发展史: 1.css3概述: CSS3是CSS2的升级版本,3只是版本号,它在CSS2.1的基础上增加了很多强大的新功能.   目前主流浏览器chrome.safari.firefox.opera.甚至360都已经支持了CSS3大部分功能了,IE10以后也开始全面支持CSS3了.  2.css的发展史: HTML的诞生 20世纪90年代初   1996年底, CSS第一版诞生   1998年5月 CSS2正式发布 2004年 CSS2.1发布 CSS3的发布 … 二.

[转]使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE

跨浏览器兼容性是网页制作永恒的难题.别看各浏览器厂商都努力在自己的浏览器中实现新式的css3标准特性,但都是以扩展样式的形式提供的, 所以在未来一段时间里,样式表里的-moz-,-webkit-,(-ms-,-o-)等等前缀将长期存在. 另外,虽说各家有志于扩张自己市场的浏览器厂商都提供了css3的新特性,但鉴于其老式版本的浏览器依然存在于用户的主机上(主要是微软旗下的ie6,7,8),除了考虑各家浏览器之间的兼容性外,我们还有必要向前兼容老式浏览器. 这些老式浏览器(低版本ie)对于css3的

DIV+CSS布局中IE与FF浏览器之间重要的兼容性差异

IE与FF浏览器之间的一些重要差异: ·IE与FF的居中方式不一样. (1)如何让body体能够在IE与FF浏览器中都居中的例子: [html] view plaincopyprint? <html> <head> <title>让body容器在浏览器中居中</title> <link rel="stylesheet" type="text/css" href="body_center.css"

js 判断浏览器关闭事件 兼容所有浏览器

无论是从页签处关闭浏览器,还是关闭整个浏览器窗口,无论是 ie11,火狐,谷歌,苹果,还是ie6,都能兼容的浏览器关闭事件监听 在网上搜索了一天,虽然网上也有之类的代码,但是太繁琐,有时候还不可用.我也是在原有基础上修改的.经过了上述的浏览器测试,如果有不兼容的,欢迎提出意见一起学习. ? <script type="text/jscript" src="jquery-1.10.2.min.js"></script> <script t

用条件注释判断浏览器版本,解决兼容问题

对于浏览器兼容问题,我们应该碰到很多了,在平时写一些页面时,在IE8.IE9上可能好好的,当我们在IE6.IE7或者是其他的浏览器上再浏览这些页面时,可能会发现我们的页面已经面目全非了,作为一名前端开发人员,这是最让人发疯的问题了,那么我们该怎么解决这些问题呢? 首先,我们写的页面在不同的浏览器上之所以会出现表现不同的问题,是因为不同的浏览器在解析页面时,他们所遵循的规则并不是完全相同的.比如IE,不同的版本解析都不同,何况是不同的浏览器厂商,不同的内核呢.但是我们在遇到兼容性问题时,应该首先检

【转】360浏览器极速与兼容模式的解释

对于360浏览器的极速模式与兼容模式,相信大家都不陌生,极速代表着高速,意味着是高版本的浏览器,速度快嘛.而兼容模式则是极力适合各种浏览器,考虑更多的是兼容. 这两个模式在360浏览器上怎么设置呢? 打开浏览器,在网址的后面有一个闪电的图标或是一个e图标,闪电是指您目前使用的是极速浏览器,而e则代表是兼容模式.两者可以自由切换,切换的方法很简单,直接点击这个图标,有下拉,点击选择就是了. 今天我们对于360浏览器极速与兼容模式有新的解释,是从版本这个角度来看的. 使用极速,就类似用了360的高速

表单input按钮在各浏览器之间的兼容性

从网上看了这篇关于表单input按钮的浏览器兼容性问题,总结的还不错,所以copy下来学习下. input按钮在各个浏览器之间的兼容性问题,看下边这段代码: input.item { background: #4D90FE; border: 1px solid #4D90BB; color: white; } <input type="submit" value="提交" /> 这是很简单的一个input提交按钮,它在各大浏览器中的情况如下: 很明显,我

ASP.NET服务器控件在IE10浏览器(非兼容模式)下报脚本错误的可能解决办法

关于IE10出现LinkButton点击无效的情况:        一般高配置的系统如Win7旗舰版SP1系统不会出现这种情况,针对家庭普通版和专业版的用户通过测试都有这种情况,对于开发人员要解决不同系统和IE的兼容问题一时有点摸不着头脑,可能微软发布IE10正式版本不久,兼容问题没有考虑周全,或者微软目的是指引用户向着高版本看齐最终目的推销win8,不管怎样,解决方法才是王道:       网上资料显示这种情况是ASP.NET无法检测IE10,导致_doPostBack未定义JavaScrip