2013-01-02 7 views

答えて

14

を現在、非コアにあるcss-calcというテストが検出されます。彼らは、次のコードを使用します。

Modernizr.addTest('csscalc', function() { 
    var prop = 'width:'; 
    var value = 'calc(10px);'; 
    var el = document.createElement('div'); 

    el.style.cssText = prop + Modernizr._prefixes.join(value + prop); 

    return !!el.style.length; 
}); 
+0

Modernizr._prefixes.join()は何をしますか? Modernizrのないソリューションは、この機能を置き換える必要があります。 –

+1

@JoseGómezこの行テストでは、サポートがあり、標準に準拠しているだけの場合は、テストするすべてのプレフィックス( '-webkit'など)を追加します。したがって、コードの残りの部分に応じて、その行を削除することができます。 – Sirko

2

石灰化検出は、それらのニュースページに従って近代化装置に加えられた。 http://modernizr.com/news/

としてだけでなく、既存のテストのためのサポートを引き締め、私たちは、新しい検出の 数、コミュニティから提出された多くのも追加しました:あなたは見つけることができますModernizr

[...] 
css-calc 
7

少し遅れて相手にするが、私は自分自身がそれで苦しんでいたので、私は私がこれを共有する必要があります考え出しました。 jQueryを使用することで、CSSプロパティ(この場合はwidth)でcalc()値を使用するdivと、ブラウザがcalc()をサポートしない場合の代替幅を作成できます。今それがサポートされているかどうかを確認するために、これは私がしたものです:

現在存在しないdiv要素のCSSスタイルを作成しましょう。

/* CSS3 calc() fallback */ 
#css3-calc { 
    width: 10px; 
    width: calc(10px + 10px); 
    display: none; 
} 

、ブラウザが(計算値をサポートしていない場合)、要素はそれをサポートしている場合、それは20に戻ってくる10の幅の値を返すの値が正確であるかは問題ではありませんしかし、2つの幅のプロパティが最後に異なる値を持つ限り(この場合は10と20)、

実際のスクリプトはここをクリックしてください。それは非常に簡単だと私はそれがあまりにも通常のJavaScriptで可能だと仮定しますが、ここではjQueryのスクリプトは次のとおりです。

また
// CSS3 calc() fallback (for unsupported browsers) 
$('body').append('<div id="css3-calc"></div>'); 
if($('#css3-calc').width() == 10) { 
    // Put fallback code here! 
} 
$('#css3-calc').remove(); // Remove the test element 

、ネイティブJavaScriptのチェック、および幅:

#css3-calc { width: 1px; width: calc(1px + 1px); }

if(document.getElementById('css3-calc').clientWidth==1){ 
    // clientHeight if you need height 
    /* ... */ 
} 
+0

私はこのトリックを使用しましたが、私は幅を使用しました。そうすることで、私のページ(0pxの高さ)が邪魔にならないと確信しています。 – Martijn

+0

編集を行い、幅を使用したネイティブJSバリアントを追加しました。 '.width()'が数値を返すので、 'parseInt()'も削除しました – Martijn

+3

これは参考になる回答ですが、ネイティブのjavascriptのものが最初に来るべきだと思います。 jqueryの '$ '記号...また、+1。チェックのいい方法。 –

0
var cssCheck = document.createElement("DIV"); 
cssCheck.style.marginLeft = "calc(1px)"; 
if (cssCheck.style.getPropertyValue("margin-left")) 
{ 
    alert("calc is supported"); 
} 
cssCheck = null; 
関連する問題