链接各种浏览器的单独/条件/唯一样式表

时间:2012-11-24 07:17:46

标签: php jquery css

将gecko,opera,msie,webkit等指向他们自己的附加样式表的最佳实践是什么?

浏览器嗅探出来了吗?我在网上找到的大部分内容都是2008年以来的旧帖子,或者是关于正确与错误,或者如何使用或其他的理论争论。

我们可以使用更复杂的东西。一些jquery或php说,(伪代码),“IF moz,@ import url(moz.css)”或其他什么。

2 个答案:

答案 0 :(得分:0)

从useragent中检测浏览器并为该浏览器添加适当的css。

$browser = get_browser($_SERVER['HTTP_USER_AGENT'], true);

switch ($browser['browser']) {
    case "IE": //load ie specific css
                break;
    case "Firefox":
    case "Mozilla":   //load gecko specific css
        break;

    case "Safari":  //load safari css
           break;
    case "Opera": //load opera css
          break;

    default:
        echo '<link href="default.css" rel="stylesheet" type="text/css" />';
}

这是get_browser()函数的detailed article

答案 1 :(得分:0)

检测特定浏览器是一个坏主意,因为不同版本可能具有您可能不知道的不同功能。更好的解决方案是使用类似Modernizr的内容来检测功能,并相应地设置样式。

如果你必须检测不同的渲染引擎,不管是什么原因,在PHP中使用browser_info()方法相对简单:

<head>
    ...
    <!-- Stylesheets for all browsers -->
    <link rel="stylesheet" href="style.css" />

    <?php
    $browser    = get_browser(null, true);

    switch($browser['browser']){
        case 'Firefox':
            // User is using Firefox
            $style  = 'firefox.css';
            break;

        case 'Safari':
            // User is using Safari
            $style  = 'safari.css';
            break;
    }

    if(isset($style)){
        // Specific browser stylesheet set - add to page
        ?>
        <link rel="stylesheet" href="<?php echo $style;?>" />
    <?php } ?>
</head>