显示一个CSS样式,如果IE浏览器和另一个如果FF或铬使用PHP的.css使用PHP
我有一些CSS样式,在IE中不起作用,并在ff和chrome上工作。我希望能够使用,如果其他人。但是PHP的ifelse可以包含在.css文件中以实现吗?显示一个CSS样式,如果IE浏览器和另一个如果FF或铬使用PHP的.css使用PHP
[编辑]
我不想为宗旨
感谢 让
您可以使用conditional comments从其他浏览器隐藏CSS文件。
如果您确实想要决定要在服务器端提供哪个CSS,那么您可以查看解析user agent string以确定正在使用哪个浏览器;但要小心,这可以毫不费力地假冒 - 一些浏览器甚至可以让你选择他们将作为开箱即可识别的东西,所以最终可能会有误报。
一般有两种.css文件说你不希望自定义您的站点为不同的浏览器。你想尽可能使所有的东西尽可能均匀。当然,有些情况下您必须以浏览器特定的方式进行操作,但根据我的经验,使用适当的技术,这些情况并不常见。
一些通用规则:
始终声明
DOCTYPE
上所有 HTML页面。这迫使浏览器(最值得注意的是IE)成为所谓的标准兼容模式而不是怪癖模式。怪癖模式在IE中有一些不正确的盒子模型。由于这个原因,我嫌疑人你正在做的事情是错误的(古怪的)的方式,FF/Chrome实际上正确地解释它。对我而言,这是最可能的情况;和使用重置CSS。不同的浏览器(以及同一浏览器的不同版本)对于填充,边距,边框等具有不同的默认值。最好将它全部重置为相同的起点并从那里开始。
除此之外,您可以使用conditional comments。
非常真@不浏览器嗅探。我喜欢链接到http://www.quirksmode.org/js/support.html来解释用户代理嗅探的真正恐怖以及到目前为止所做的工作 - 即使这是严重的以JS为中心的写作,核心要点保持不变。 – pinkgothic 2010-04-15 09:28:46
Doctype已经存在,因此否定您的回答 – X10nD 2010-04-15 09:44:20
您可以解释CSS文件用PHP(如果你不是太费心有关服务器负载),如果你把这个线在你的Apache配置:
addhandler application/x-httpd-php .css
那么你可以尝试依靠$_SERVER['HTTP_USER_AGENT']
,但请注意,它不保证值得信赖。
不过,也有(IMO)更好的方式来实现这一目标,其中包括使用IE的条件注释:
<!--[if IE 8]>
<style type="text/css" ... />
<![endif]-->
当然,最可取的方法将重写你的风格,以避免浏览器实现的差异,这通常是可能的,但如果您被迫支持像IE 6这样的旧浏览器,则需要一定程度的CSS guru-ness。
Css不支持条件流控制。你应该使用不同的技术来解决:
- 让PHP根据浏览器嗅探打印出CSS规则。 我不raccomend这个
- 包括不同的CSS与链接标签到使用条件注释 头部分(见http://www.quirksmode.org/css/condcom.html)
什么CSS在IE的作品,但不是镀铬/ FF? – cletus 2010-04-15 09:22:05
Re:你的编辑(“我不想要两个.css文件”):为什么? – pinkgothic 2010-04-15 09:32:09
实际上很多 - 例如所有专有的IE过滤器。 – 2010-04-15 09:32:12