2012-05-01 7 views
1

伝統的に、あなたが要素にスタイルを適用するためにJavaScriptを使用することができます。JavaScriptを使用してMedia Query固有のスタイルをHTMLエレメントに適用できますか?

document.body.style.color = "red"; 

しかし、あなたは同様の方法でメディアクエリの特定のスタイルを適用することができますか?私が話しているのはこれです:

body { 
    color: red; 
} 

@media only screen and (max-width : 320px) { 
    body { 
    color: blue; 
    } 
} 

上記のメディア固有のスタイルです。これは、JavaScriptを介してプログラムで要素に適用できますか?たとえば、CSSを指定せずに上記のスタイルをbody要素に適用したいとします。 JavaScriptですべてをやりたいこれは可能ですか(クロスブラウザーの方法で)?

+0

[This QuirksModeブログのエントリ](http://www.quirksmode.org/blog/archives/2010/08/combining_media.html)は関連性があります。 – kapa

+0

ちょうどそのようなことについて[記事はこちら](http://adactio.com/journal/5429/)。 – Blazemonger

+0

私はあなたがその質問を誤解していると思います。私は要素にメディアクエリCSSスタイルを適用しようとしています。 Adactioの記事では、CSSを使って、それから派生した画面幅をクエリする方法について説明します。 Quirksmodeは単に 'screen.width'を条件として使うことです。私はまだサイズが変更されたので、私のレイアウトが反応的に調整されるようにしたい、私はちょうど手続き的にスタイルを適用しようとしたい。 –

答えて

0

ウィンドウの読み込み時とサイズ変更時の幅を確認します。基本的なアイデア:

function resized() { 
    var myWidth = 0, 
     myHeight = 0, 
     color = "red"; 
    if(typeof(window.innerWidth) == 'number') { 
    myWidth = window.innerWidth; 
    myHeight = window.innerHeight; 
    } else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) { 
    myWidth = document.documentElement.clientWidth; 
    myHeight = document.documentElement.clientHeight; 
    } else if(document.body && (document.body.clientWidth || document.body.clientHeight)) { 
    myWidth = document.body.clientWidth; 
    myHeight = document.body.clientHeight; 
    } 

    if (myWidth <= 320) { 
     color = "blue"; 
    } 
    document.body.style.color = color; 
} 
window.onresize = resized; 
resized(); 
関連する問題