2008-09-16 38 views

回答

24

我认为这个问题是有效的。我同意其他答复,但这并不意味着这是一个可怕的问题。我只有一次使用Safari CSS黑客作为临时解决方案,后来摆脱它。我同意你不应该只针对Safari,但不知道如何去做。

仅供参考,本hack只针对Safari浏览器3,同时还针对Opera 9中

@media screen and (-webkit-min-device-pixel-ratio:0) { 
    /* Safari 3.0 and Opera 9 rules here */ 
} 
2

因此,等待,你想只使用CSS为Safari编写CSS?我想你回答了你自己的问题。 Webkit有非常好的CSS支持。如果您正在寻找仅webkit风格,请尝试here

0

您必须使用JavaScript或您的服务器进行用户代理嗅探,才能将CSS专门发送到Safari/WebKit。

5

在CSS中有一些黑客可以用来定位Safari,比如在分号后面加上散列/磅(#),这会导致Safari忽略它。例如

.blah { color: #fff; } 
.blah { color: #000;# } 

在Safari中,颜色将是白色,其他所有颜色都是黑色。

但是,您不应该使用黑客,因为它可能会在未来导致浏览器出现问题,并且可能在旧版浏览器中产生不良影响。最安全的方法是使用服务器端语言(例如PHP)来检测浏览器,然后根据用户使用的浏览器提供不同的CSS文件,或者使用JavaScript执行相同操作,然后切换到一个不同的CSS文件。

服务器端语言是更好的选择,因为并非每个人都在浏览器中启用了JavaScript,这意味着他们看不到正确的样式。另外,JavaScript会在页面正确显示之前增加一些需要加载的信息量。

Safari使用WebKit,这非常适合渲染CSS。我从来没有遇到过任何在Safari中不起作用的东西,但在其他现代浏览器中(不包括IE,它有它自己的问题)。我建议确保你的CSS是standards compliant,因为问题可能在于CSS,而不是在Safari中。

+1

这不起作用。 – 2011-05-13 18:52:26

+4

这可能是因为WebKit被固定以应付它。这个答案是从2008年,当上面的黑客工作在Safari。它现在不起作用的事实突出了我首先提出的关于不使用黑客的观点,因为他们不能保证在将来工作。 – 2011-05-13 19:23:08

+0

好点。 :-) – 2011-05-13 22:30:36

-1

这真的取决于你正在尝试做的。你是否试图在safari中使用一些CSS3功能做一些特别的事情,或者你是否试图使网站跨浏览器兼容?

如果您试图使网站跨浏览器兼容,我建议使用正确的CSS编写网站在safari/firefox/opera中看起来不错,然后使用条件CSS在IE中对IE进行更改。这应该(希望)能够让你兼容未来的浏览器,这些浏览器在遵循CSS规则方面越来越好,并提供了跨浏览器兼容性。 This is an example.

通过使用条件样式表,您可以避免全部在一起和目标浏览器。

如果你正在寻找做一些特别的野生动物园检查this

0

@media屏幕和(-webkit分钟设备像素比:0){}

这似乎定位webkit的(包括Chrome)...或是这个真正Safari-只要?