1

抱歉,如果这个问题看起来多余,但环顾四周,我发现每个浏览器都有很多关于条件 CSS 的问题,而不是操作系统。

有没有办法简单地为每个操作系统加载不同的样式表?(我试图绕过 Mac 上的像素行走背景。)我最好需要一个可以很好地集成到 Wordpress 子主题中的选项。

谢谢!

4

2 回答 2

1

最好的方法是通过用户代理将其分解,然后提供不同的样式表。如果您使用 wordperss 这将是 PHP。#

$_SERVER['HTTP_USER_AGENT']

http://php.about.com/od/learnphp/p/http_user_agent.htm

于 2012-04-24T14:34:53.697 回答
0

几年前我也有同样的问题。我不得不搜索一段时间才能再次找到该文章,所以这里是文章中的代码:

function get_broswer_stylesheet ($test_by = 'browser')
{
    $broswer = array(
        'MSIE', // parent
        'OPERA',
        'MOZILLA',
        'NETSCAPE',
        'FIREFOX',
        'SAFARI',
        'CHROME'
        );

    $os = array(
        'MAC',
        'WINDOWS',
        'LINUX'
        );

    $info[browser] = 'OTHER';
    $info[os] = 'OTHER';

    $user_agent = $_SERVER['HTTP_USER_AGENT'];

    foreach ($broswer as $parent)
    {
        $s = strpos(strtoupper($user_agent), $parent);
        $f = $s + strlen($parent);
        $version = substr($user_agent, $f, 5);
        $version = preg_replace('/[^0-9,.]/', '', $version);
        if (strpos(strtoupper($user_agent), $parent))
        {
            $info[browser] = $parent;
            $info[version] = $version;
        }
    }

    foreach ($os as $parent)
    {
        if (strpos(strtoupper($user_agent), $parent))
        {
            $info[os] = $parent;
        }
    }

    if ($test_by == 'browser' || $test_by == 'os')
    {
        $string = '<link rel="stylesheet" type="text/css" href="' . get_bloginfo('template_directory') . '/css/';

        if ($test_by == 'browser')
        {
            if ($info[browser] == 'MSIE') {
                switch ($info[version])
                {
                    case 9 : $string .= 'ie9.css'; break;
                    case 8 : $string .= 'ie8.css'; break;
                    case 7 : $string .= 'ie7.css'; break;
                    default: $string .= 'ie6.css'; break;
                }
            } elseif ( $info[browser] == 'FIREFOX') {
                $string .= 'firefox.css';
            } elseif ($info[browser] == 'SAFARI') {
                $string .= 'safari.css';
            } elseif ($info[browser] == 'CHROME') {
                $string .= 'chrome.css';
            } else {
                $string .= 'style.css';
            }
        } elseif ($test_by == 'os') {
            if ($info[os] == 'MAC') {
                $string .= 'mac.css';
            } elseif ($info[os] == 'WINDOWS') {
                $string .= 'windows.css';
            } elseif ($info[os] == 'LINUX') {
                $string .= 'linux.css';
            } else {
                $string .= 'style.css';
            }
        }
        $string .= '">';

        return $string;
    }
}

我希望这会有所帮助。您可以将$test_by参数设置为browseror os,它会尝试提供正确的样式表。

于 2012-05-10T14:18:38.493 回答