2012-11-24 47 views
0

當前將壁虎,歌劇,msie,webkit等指向其自己的其他樣式表的最佳實踐是什麼?爲各種瀏覽器鏈接單獨/有條件/獨特的樣式表

瀏覽器嗅探出來了嗎?我在網上找到的大部分內容都是從2008年起的舊帖子,或者關於正確與錯誤的理論爭論,或者如何使用或者其他。

必須有更復雜的東西,我們可以使用這個。一些jquery或者php說(僞代碼),「IF moz,@import url(moz.css)」或者其他。

回答

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" />'; 
} 

這裏是一個detailed article上get_browser()函數。

+0

這看起來像它正是我需要的,但你可以更具體一點嗎?代碼無用。什麼是檢測歌劇和壁虎的確切代碼片段,並將它們指向他們自己的相關樣式表? – user1691389

+0

你必須使用browser_info()函數,如get_browser($ _ SERVER ['HTTP_USER_AGENT'],true);你會得到它是什麼類型的瀏覽器,但是爲了使用這個功能,你需要在腳本中做一些改變 –

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> 
+0

單詞「switch」把我扔掉了,從我收集的這段代碼會切換樣式,但我只需要一些東西這針對某些瀏覽器的附加樣式表。 – user1691389

+0

@ user1691389我已更新示例以嘗試更清楚一點。 'switch'語句是許多編程語言的一個共同特徵 - 查看[PHP手冊中關於它們的頁面](http://php.net/manual/en/control-structures.switch.php)更基本的解釋! – Adam

+0

這兩個示例中的第一行都給出了錯誤。我很感激你的幫助,但是我知道什麼時候該退出。我只是使用一個巨大的樣式表,它不是世界末日。 – user1691389