我知道关于这个主题可能还有其他问题.我想每个Web开发人员都会通过IE浏览器.
我正在开发完全基于Javascript的基于Web的应用程序.我是Mac用户.我非常高兴在Safari,Firefox和Opera中一切都很棒.然后我问一位有Windows的朋友用Internet Explorer检查它,事情也不行.我的应用程序对HTML标准非常敏感.
主要问题是CSS布局.由于jQuery的可移植性,JavaScript本身似乎正常工作.
你如何处理Internet Explorer?我应该创建一个仅在Internet Explorer上加载的新CSS吗?我应该仅为Internet Explorer创建应用程序的新版本吗?你通常如何处理这个?该应用程序在功能设计和布局设计方面都非常重要.
使用Nosredna建议的CSS重置,已经删除了几乎一半的问题.我想这确实是一个很好的做法.我注意到SO也使用它.
您是否指定了有效的doctype?通过将Internet Explorer切换到标准模式,可以使Internet Explorer更加合规.http://msdn.microsoft.com/en-us/library/bb250395.aspx#cssenhancements_topic2
你使用浏览器重置CSS文件?这有助于将版本整合在一起.http://meyerweb.com/eric/tools/css/reset/
请注意IE的CSS错误:http://www.positioniseverything.net/explorer.html
对于布局的骨架,请考虑使用已知可行的标记,例如http://matthewjamestaylor.com/blog/perfect-multi-column-liquid-layouts或http://960.gs/用于液体或固定布局分别.
跟上浏览器之间的JavaScript差异.jQuery处理其中的一些,但不是全部.http://www.impressivewebs.com/7-javascript-differences-between-firefox-ie/
是的,IE是一种痛苦.如果你想让它在IE中工作,你真的想每隔几天在IE中测试一次.你不想在最后挽救痛苦 - 你想一次一个地处理噩梦.
顺便说一句,如果您认为IE很痛苦,请尝试使用手机查看您的页面.有一天,我带着iPhone去了REI.com,屏幕的中间五分之一或更多被一堆乱码标记所占据,这些标记呈现为文本.
有条件的评论.
在IE文件中,您可以使用@import
导入normal.css
,然后根据需要覆盖样式.
首先,我不要等到项目完成后才考虑浏览器兼容性.
大多数情况下,CSS问题都有办法,不需要加载特定于浏览器的样式表,因此我尝试尽可能使用这些解决方案.例如 - 如果您的大多数问题都与盒子模型问题有关,那么使用嵌套div替代填充等内容可以帮助确保所有内容看起来都正确,而不需要针对不同浏览器的单独样式表和模板.
浏览器重置启动.尽可能平衡比赛场地并取消浏览器默认设置.从头开始构建CSS.(见:http://meyerweb.com/eric/thoughts/2007/04/12/reset-styles/)
在开发过程中尽早测试所有主流浏览器.
尝试尽可能地完成没有浏览器特定的黑客攻击.有时您需要在某些特定于浏览器的CSS中工作,但它应该验证(使用W3C验证工具).有时虽然没有任何东西可以用它,但有条件的(甚至可能是一些JavaScript),例如修复IE6中的透明PNG(参见:http://nettuts.com/videos/screencasts/5-easy-ways-to-tackle- ie6s-transparency-issues /).
如果您无法在其中一台开发机器上运行IE,请尝试http://browsershots.org.至少你可以通过这种方式得到一些反馈.
使用debug.css突出显示或概述div和其他元素.如果在开发期间需要,请将其放入HTML头部.这可能是一个巨大的帮助.
使用"开发人员工具栏"(IE,Firefox).
预计IE将成为痛苦,并在6,7和8中进行测试.
玩得开心!
首先,阅读On Having Layout,它解释了IE渲染引擎如何在内部工作.IE的渲染引擎来自CSS之前.它没有像你期望的那样正确区分内联和块元素.相反,在IE中一个元素hasLayout.或不.这是99%的IE CSS漏洞的来源.所以,阅读那篇文章几次.
至于修复,我通常使用条件注释.几个原因:
它们是未来的证明,而不是CSS黑客攻击.如果IE9修复了黑客而不是你用它来解决的错误怎么办?
这是有效的(X)HTML(条件评论只是对其他人的简单评论)
它不需要javascript.你会惊讶于有多少人关闭了javascript.
关于条件评论的一句话:永远不要使用开放式比赛.也就是说,永远不要做这样的事情:
原因和黑客一样:让它成为未来的证明.如果IE的下一个版本修复了该错误并且您不再需要修复该怎么办?或者更糟糕的是,"修复"现在实际上会在新的IE版本中弄乱你的布局?通常最好假设IE的下一个版本修复了您正在解决的错误.当IE 8出现时,我已经写了一些关于它的内容.
这是我如何减少处理IE的痛苦:
使用reset.css - Yahoo! YUI重置或Eric Meyer的重置CSS
小心漂浮,清除 - 它们通常会引起很多诅咒.
请注意IE中的hasLayout错误,通常添加缩放:1或高度属性有助于解决此问题.继续阅读布局.
获得在Firefox,Safari,Chrome等中运行的布局,同时保持IE大约80%的方式.
如果需要,使用条件注释实现IE6.css样式和IE7.css样式.
啤酒,白酒或其他成人饮料.
我认为为IE编写一个特定的css文件是可以的.我知道这是一个痛苦,但由于一些可能的问题,IE6看起来不同于所有其他browswers.
将此行用于新创建的css文件: