We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 6158
    • 224 Posts
    こんばんは。


    IE と Firefox の css の解釈の違いに影響されにくくするため、template の
    <head> 内に記述する css を、ブラウザごとに切り替えたいと考えています。
    例えば、こんな風に。

    <link rel="stylesheet" type="text/css" href="ie.css" /> or
    <link rel="stylesheet" type="text/css" href="gecko.css" />

    ブラウザの判定には以下のスクリプトを使おうと考えています。

    - Browser Detection with PHP


    そこで、

    (1) あらかじめ ie 用 css (id=63) と firefox 用 css (id=64) を作成、

    (2) template code に以下を挿入。
    <head>
       [!BrowserDetectedCss? &ie=`63` &gecko=`64`!]
       <title></title>
    </head>
    


    (3) snippet "BrowserDetectedCss" を作成、

    require ("assets/templates/browser.php");
    
    $browser = new Browser;
    
    switch (strtolower ($browser->Name)) {
       case "firefox":
          $css = $gecko;
          break;
    
       case "msie":
       default:
          $css = $ie;
          break;
    }
    
    return "<link rel='stylesheet' type='text/css' href='[(site_url)][~$css~]' />";
    


    ...てな感じで作ってはみましたが、何かもっとスマートな方法はないものでしょ
    うか? あらかじめ template 内に css の id を埋め込まなくてもいいように
    なったらいいですね。

    css hack や javascript を使った css の使い分けは今回使おうとは考えてい
    ません。出来る限り、php で完結させたいと考えています。
      • 6158
      • 224 Posts
      自分で上記のように言っておきながら何ですが、最近は、
      css_browser_selector.js というスクリプトばかりを使っています。

      携帯を無視したパソコンのブラウザ対象に限れば、js でブラウザを判定して
      <html> タグにブラウザ情報を class として挿入しているだけですが、凄く簡
      単に場合分けできてしまいます。

      - CSS Browser Selector