2011-06-17 10 views
11

要素のカスケードスタイル値(計算値ではない)を取得するか、実際の値が計算されたかどうかを判断する必要があります。カスケードスタイル値を取得する方法、または実際の値が計算されたかどうかを判断する方法はありますか?

たとえば、CSSの規則がwidth: 100%の要素がある場合、実際のピクセル値ではなく値100%を取得したいのですが、実際の値が計算されたことを知りたいだけです。

elem.currentStyleを使用して取得できることがわかりました。また、document.defaultView.getMatchedCSSRules()を使用してChromeで検索する方法も見つかりました。

誰かが他のブラウザで入手する方法を知っていますか?

+1

この回答をお探しですか? –

答えて

-2

最適なルートは、この例では、CSSの引数は、CSSスタイルの文字列ではなく、キャメルケース文字列でなければなりませんjQueryの

$(element).css('width') // jquery has a single function that returns a consistent value no matter which browser is in use. 
+1

私はjqueryを知っています。ピクセル単位で値を返します。設定された相対値は返されません。 width:100%の要素の場合、 '100%'を返しません – Andy

-1

//などのブラウザindepent APIライブラリを使用することです。

function deepCss(who, css, ps){ 
    var sty, dv= document.defaultView; 
    // IE8 and below 
    if(document.body.currentStyle){ 
     sty= css.replace(/\-([a-z])/g, function(a, b){ 
      return b.toUpperCase(); 
     }); 
     return who.currentStyle[sty]; 
    } 
    // everyone else 
    if(dv){ 
     dv= document.defaultView.getComputedStyle(who, ps); 
     return dv.getPropertyValue(css); 
    } 
    return ''; 
} 

deepCss(document.body、「背景色」)

+3

chromeとfirefoxの場合、 'width:100%'の要素に対して、定義された値ではなく、実際に割り当てられた値が返されます。実際に計算されたピクセルであり、定義された '100%'値ではありません。 – Andy

0

この時点で私はIE以外のブラウザであることを行うには、組み込みの方法があるとは思わない:getComputedStyleあなたが言ったように、常にそれらのプロパティのために使用された値を返します。

1

自分で値を計算するのはどうですか?必要な要素の計算幅と親要素の計算幅を照会し、パーセンテージ値を得るために数式を実行しますか?

+0

はい、これはもっとも洗練されたソリューションだと思います。ユニットの変換に関する技術を理解し、ニーズに合わせて実装するには、[こちらの回答(https://teamtreehouse.com/community/pixel-to-percentage-conversion)]をご覧ください –

関連する問題