class名によるスタイルの操作
スタイルを操作する方法として要素のクラス名を変更する方法も一般的です。こちらは1つの操作で複数の要素のスタイルに影響を与えることが可能なため,
クラス名の操作
<style>
.css-sample3 div{
font-size:20px;
color:white;
background-color:#444;
width:100px;
padding:10px;
margin:5px;
}
</style>
<div id="css-sample3">
<div>サンプル1</div>
<div>サンプル2</div>
<div>サンプル3</div>
</div>
<script>
(function(){
var btn = document.getElementById('css-sample3-btn');
var div = document.getElementById('css-sample3');
btn.onclick = function (){
div.className = 'css-sample3';
};
})();
</script>
このように,
この方法は一見効率的に見えますが,
さらには,
なお,
要素のスタイルを取得
続いて,
getComputedStyleの利用
if(!window.getComputedStyle){
window.getComputedStyle = document.defaultView.getComputedStyle;
}
var style = getComputedStyle(document.body, '');
console.log(style, style.fontSize);
getComputedStyleの第二引数はbefore, afterなどの擬似要素のスタイルを取得する場合に使用します。それ以外は空文字列を渡します
ほとんどのブラウザでgetComputedStyleはwindowオブジェクト
これに対して,
currentStyleの利用
var style = document.body.currentStyle;
alert([style, style.fontSize]);
ではこれをクロスブラウザにしてみます。
getComputedStyleのクロスブラウザ定義
if(!window.getComputedStyle){
if (document.defaultView){
getComputedStyle = document.defaultView.getComputedStyle;
} else if(document.documentElement) {
getComputedStyle = function(element){
return element.currentStyle;
};
}
}
var style = getComputedStyle(document.body, '');
console.log(style, style.fontSize);
このように,
styleの取得イディオム
var style = element.currentStyle || document.defaultView.getComputedStyle(element,'')
なお,
また,