当前位置:  开发笔记 > 编程语言 > 正文

什么是更好的:CSS黑客或浏览器检测?

如何解决《什么是更好的:CSS黑客或浏览器检测?》经验,为你挑选了3个好方法。

通常当我浏览互联网时,我发现人们通常使用CSS黑客来使他们的网站在所有浏览器中看起来都一样.就个人而言,我发现找到所有这些黑客并测试它们是非常耗时的; 您所做的每项更改都必须在4个以上的浏览器中进行测试,以确保它不会破坏其他任何内容.

大约一年前,我浏览了互联网上其他主要网站正在使用的内容(雅虎,谷歌,BBC等),并发现其中大多数都在进行某种形式的浏览器检测(JS,HTML if语句,基于服务器).我也开始这样做了.在我最近工作的几乎所有网站上,我使用jQuery,所以我使用内置的浏览器检测.

您使用或不使用其中任何一种是否有原因?



1> cletus..:

还有第三种选择:

最大限度地减少或消除对浏览器检测和CSS黑客的需求.

我尝试使用像jQuery插件这样的东西来处理任何浏览器差异(对于小部件等).这并没有照顾好一切,但它做了很多,并且已经将支持多个浏览器的工作委托给已花费的人,并且将花费更多的努力,而不是你能负担或想要的.

之后我遵循这些原则:

使用我所说的最小CSS,意味着只使用广泛支持的功能;

如有必要,使用表格进行复杂布局.您可能不喜欢这样,但坦率地说,做并排布局的事情,表格将适用于十年前的浏览器,并且比使用绝对定位,浮动等组合工作要少得多;

通过添加DOCTYPE强制IE6进入严格而非怪癖模式.我不能强调这会让你的生活变得多么容易,但奇怪的是很多人似乎还没有做到这一点;

通过使用正确的DOCTYPE或使用嵌套块元素而不是其他盒子模型黑客来最小化盒子模型问题; 和

必要时包含相关浏览器的额外CSS文件.我倾向于在服务器而不是带有生成页面的客户端上执行此操作(让我们面对它,大多数都是这样).我参与过的许多项目都有IEfix.css文件.

之后,我将浏览器划分为层:

第1层:

Firefox 3;

IE7.

我的网站必须解决这些问题.

2级:

Firefox 2;

苹果浏览器;

歌剧;

铬.

我的网站应该就这些工作.这可能会冒犯一些人,但坦率地说,这些浏览器的市场份额非常低,以至于它们根本不像Firefox 3或IE7那么重要.

第3层:

IE6;

其他.

除非是,例如,公司要求,否则将尽最大努力解决这些问题.IE6是噩梦之一,但截至12月份的市场份额为20%且迅速下降.此外,还有一些有效的安全问题(例如在金融网站上),用于劝阻甚至禁止使用IE6,以便像Paypal这样的网站阻止了IE6,谷歌告诉用户放弃IE6.


我希望设计师更愿意改变他们的设计,这样我就不需要使用黑客或检测:)

2> Marc Gravell..:

问题是你只能在css上获得一次(因为它在客户端是非常静态的内容)...你不能(轻松地)适应它以适应客户端的飞行 - 所以对于那些棘手的不兼容的情况(并且它们太多),检测是可悲的最佳途径.我不能很快看到这种变化.

使用javascript,您通常可以通过诸如(如您所述)jQuery之类的库来避免这种痛苦 - 并且检查功能支持而不是识别特定浏览器(大多数情况下).在某些情况下,您需要准确了解(例如,盒子模型).



3> Christoph..:

您使用或不使用其中任何一种是否有原因?

是.如果JavaScript被停用,客户端浏览器检测会中断,并且可能无法在将来的浏览器版本中正常运行.最后一个原因也适用于CSS黑客攻击.如果用户明确尝试破解它,服务器端浏览器检测会中断,但它仍然可能是一个可行的选择.

我会推荐什么:

确保您的代码在符合标准的浏览器中工作 - 即开发其中的一个或两个,然后检查browsershots.org.最有可能的是,使用一个样式表可以在所有这些中实现所需的结果.

然后,有IE.如果只有几个问题,你可以使用CSS hack.否则,请使用条件注释.

编辑:

如果我也必须支持古老的浏览器,我通常会采用优雅降级的方式:我只是让它们用基本样式表(字体大小,颜色......)显示纯HTML.所有花哨的东西都会被隐藏起来@import.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有