2012-04-24 73 views
1

對不起,如果這個問題似乎是多餘的,但在環顧四周,我發現圍繞每個瀏覽器的條件CSS,而不是操作系統有很多問題。根據操作系統加載不同的樣式表

有什麼方法可以簡單地加載每個操作系統的不同樣式表? (我試圖繞過Mac上的像素行走背景。)我最好需要一個可以很好地集成到Wordpress兒童主題中的選項。

謝謝!

回答

1

最好的方法是將其按用戶代理分解,然後提供不同的樣式表。如果你使用wordperss這將是PHP。 #

$_SERVER['HTTP_USER_AGENT'] 

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

+0

謝謝!你知道一個網站或教程,詳細說明如何使用PHP加載不同的樣式表?我不幸的是不能寫PHP。 – AccountStackOverflow 2012-04-24 14:42:09

+1

我會從這裏開始。 http://devzone.zend.com/6/php-101-php-for-the-absolute-beginner/請專門查看此用戶代理http://www.mywebtronics.com/give-browser-specific -CSS-文件與 - PHP / – Ollie 2012-04-24 14:47:41

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參數設置爲browseros,它會嘗試提供正確的樣式表。

相關問題