2010-12-01 6 views
4

ボディクラスにはOSとブラウザがあります。フォントはさまざまなOS /ブラウザ設定で同じように動作しないので、私はpixelperfectスタイリングに必要です。いくつかのグーグルと実験の後。私はこれを行うに考えることができる唯一の方法は、 ボディクラスとしてのブラウザとOS

var OSName="Unknown OS"; 
if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows"; 
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS"; 
if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX"; 
if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux"; 

var agt=navigator.userAgent.toLowerCase(); 
if (agt.indexOf("opera") != -1) return 'Opera'; 
if (agt.indexOf("firefox") != -1) return 'Firefox'; 
if (agt.indexOf("safari") != -1) return 'Safari'; 
if (agt.indexOf("webkit") != -1) return 'Webkit'; 
if (agt.indexOf("msie") != -1) return 'Internet Explorer'; 
if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla'; 

が、私はそのことに非常にbeautyfulソリューションを考える...のindexOfを使用することでした。これを行う正規表現はありますか?または、これを行うより速い方法がありますか?

+0

レンダリングは、インストールされているフォントとブラウザのバージョン(特にIE6対IE7対IE8対次のIE9)に依存しているので、ブラウザスニッフィングに本当に頼りにしたい場合は、とにかく失敗します。ピクセル完璧なサイトが必要な場合は、HTMLがこれには間違ったツールです。サイトを巨大なイメージにする必要があります。これが唯一の方法です(他にも多くの問題がありますが、完全なピクセルになります)。また、UAのなりすまし。 – Piskvor

+0

私の問題は、ブラウザよりもOSが多いことです。 MacOSとWindowsのテキストレンダリングは非常に異なっています。私はいつも醜いフォントがウィンドウにどのように見えるか驚いています。しかし、少なくとも私は行の高さを制御することができますletterspacingとfontsize異なっている。しかし、デザイナーが経験したウェブデザイナーなら、ピクセルパーフェクトにすることは可能です。 – meo

答えて

6

正規表現を使用することもできますが、それはそれほど美しくはありません。

基本的にブラウザ/ os/versionのユーザーエージェント文字列をスキャンすると、は決してになります。これは非常にあなたに、上記と同様のクラスを与えるものではありませんが、十分に異なるOSやブラウザを区別するために

// Add some classes to body for CSS hooks 

// Get browser 
$.each($.browser, function(i) { 
    $('body').addClass(i); 
    return false; 
}); 


// Get OS 
var os = [ 
    'iphone', 
    'ipad', 
    'windows', 
    'mac', 
    'linux' 
]; 

var match = navigator.appVersion.toLowerCase().match(new RegExp(os.join('|'))); 
if (match) { 
    $('body').addClass(match[0]); 
}; 

ここ

何かjQueryを使って少しきれいです...。

たとえば、あなたがして...ブラウザの情報のため

body.windows.mozilla { 
    background: blue; 
} 

See it!

Or use a plugin.

+0

バージョンは必要ありません。ブラウザとOSが必要です。 – meo

+0

はかなりセクシーです。 :) +1と正しいawnser場合は、OSと同じことをすることができます:) – meo

+0

@meo jQueryは何もOSを返すために組み込まれていません。あなたはプラグインを使用する必要があります、または私はすぐに何かをコード化することができます:) – alex

0

Windows上のFirefoxをターゲット可能性があり、jQueryのを使用している場合、$.browser

ありhttp://api.jquery.com/jQuery.browser/

+0

ええ、ちょうど同じこと、あなたは各ブラウザをチェックして値を返す必要があります...ありがとう – meo

関連する問題