首页 > 代码库 > 浏览器兼容问题的解决方案
浏览器兼容问题的解决方案
对于前端开发良好的浏览器兼容必不可少,总结一下遇到浏览器兼容问题的解决办法。
1、保证浏览器默认css样式一致;
2、书写规范的css,然后在不同的浏览器下测试,针对不同的bug,用适当的方式解决。如:css Hack,
3、使用好的前端架构,通过第三方控件兼容浏览器;
4、多学习、多积累、多google。
一、保证浏览器默认css样式一致
首先要保证各个浏览器的默认样式的统一,所以这里就用到了css.reset。网络上有各种版本的reset代码,一般都是在一个项目的base.css里。我在这里举出一个我看到比较好的一个版本;
1 /*CSS reset*/ 2 body, div, dl, dt, dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote£¬th,td{margin:0;padding:0;} 3 table{border-collapse:collapse;border-spacing:0;} 4 fieldset,img {border:0;} 5 address,caption, cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;} 6 ol,ul {list-style:none;} 7 capation,th{text-align:left;} 8 h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;} 9 q:before, q:after{content:‘ ‘}10 abbr,acronym{border:0;}
二、测试,针对不同的BUG找到合适的解决方案
将制作的网页在不同的浏览器上测试,遇到问题后查看原因,比较常用的是css Hack。但是网上的建议是不要使用Hack,而是尽量用兼容的属性去替换。
CSS Hack:根据不同的浏览器写不同的css代码。大致包括三类有效形式
1、css内部hack
eg:
_ 定义IE6 * 定义IE7 \0(后)定义IE8 定义顺序应该是由识别多的到识别少的。保证最后定义的属性是只有那个浏览器能识别的。如,_是只能IE6识别的。
2、网页头部hack
eg:
1 <!--[if IE 6]><code><![end if]-->2 <!--[if gt IE 6 && lt IE 9]> <code> <![end if]-->
3、选择器hack
IE6能识别*html .class{},IE 7能识别*+html .class{}或者*:first-child+html .class{}
三、使用好的前端架构
常用到的jquery+bootstrap比较全面的解决了js 和 css的不兼容问题。
还没有总结比较完整的前端架构,这是以后的学习目标。
四、积累(更新)
以后遇到的不兼容问题和解决方案可以记录在这里。