为IE和其他浏览器分离CSS的最佳方式是什么?我正在考虑针对IE,Firefox和Safari用户。尤其是现在在大多数浏览器中支持CSS3但IE。针对特定浏览器使用不同的CSS样式
的各种方式来做到这一点,我已经遇到的
- 加载单独的样式表 有条件使用
<!--[if IE]
> - 下划线黑客和其他各种内嵌IE黑客
我喜欢(2)作为(1)是额外的工作,特别是在开发时。但(2)似乎并不一直工作。什么是最有效的方法?
为IE和其他浏览器分离CSS的最佳方式是什么?我正在考虑针对IE,Firefox和Safari用户。尤其是现在在大多数浏览器中支持CSS3但IE。针对特定浏览器使用不同的CSS样式
的各种方式来做到这一点,我已经遇到的
<!--[if IE]
>我喜欢(2)作为(1)是额外的工作,特别是在开发时。但(2)似乎并不一直工作。什么是最有效的方法?
我会有一个样式表,一切都在文档的顶部拾取。
下面这个做你的 [! - [如果IE]] 有条件的样式表。
在这里只是覆盖在IE中导致问题的样式。 - 被挑选的特定班级的最后一种风格是将要遵循的风格。
这正是我所做的,因为我讨厌搞我的标准兼容样式表来破解ie的修复。 – 2009-10-28 14:27:58
谢谢。这对我来说。 :) – sean 2009-10-28 14:33:08
我们的团队处理CSS以下三个规则:
我同意将所有核心CSS保存在一个文件中。如果您使用的是ASP.NET,那么您可以使用WebHandler来管理实际发送的CSS。我相信其他语言也有类似的解决方案。这允许你只发送你需要的东西并且允许它被缓存。另一个好处是你可以合并多个css文件(如果你是这样做的话)并且只出现一个。当您减少对Web服务器的请求数时,这是很好的做法。
然后,您可以编写像[如果lt IE 8] margin:0px;它不会被发送到IE8或FF等
如果你只是使用HTML,那么你必须去上面提到的[! - [如果IE]]风格的条件。
我们在我们非常大的项目中使用WebHandler,并且我不会以任何其他方式进行操作。
请参阅http://www.conditional-css.com/download。它可用于PHP,C#和C
祝你好运。
<!--[if !IE]><!--><link rel="stylesheet" href="non-ie.css"><!--<![endif]-->
<!--[if IE]><link rel="stylesheet" href="ie.css"><![endif]-->
这个技巧广泛使用Yandex(又名“俄语谷歌”)来减少HTTP请求。例如,使用这个的market.yandex.ru。
您也可以使用这种方式;某些时候条件可能不适用于需要在代码中间编写样式的地方。
<?php $browser = $_SERVER['HTTP_USER_AGENT']; ?>
<?php if (strstr($browser, "MSIE 6.0")) { ?>
<link rel="stylesheet" href="ie6style.css" type="text/css" media="screen" />
<?php }else{ ?>
<link rel="stylesheet" href="default.css" type="text/css" media="screen" />
<?php } ?>
检查$browser
有:
IE - “MSIE”
火狐 - “火狐”
Safari浏览器 - “野生动物园”
剧 - “歌剧”
Chrome - “Chrome”
这只有在他使用PHP时才有效 – Marcelo 2012-11-25 13:34:19
您是否针对特定的浏览器,除了解决浏览器错误问题? – outis 2009-10-28 14:22:05
我针对的是支持CSS3的浏览器,而没有支持CSS3的浏览器 – sean 2009-10-28 14:24:49
没有支持所有CSS3的浏览器,并且Internet Explorer和Firefox都支持某些CSS 3.(对于CSS 3的定义因为你可以给它的当前状态) – Quentin 2009-10-28 14:31:52