ホーム >>> HTML整理ノート

設定されているスタイル値の取得

getComputedStyle()メソッドを使う
・外部CSSファイルでのスタイル設定、親要素からの継承なども含め実際に適用され
 ている全てのスタイルを参照できる。ただし読み込み専用。
・IEは未対応(IE9から対応)
・(書式)変数 = getComputedStyle(Element, '');
  引数Element・・・スタイルを取得したHTML要素
  第二引数・・・通常""かnullでよい(疑似要素を対象ににするかどうか)
・例
  var smp = document.getElementById("sample");
    var style = getComputedStyle(smp,'');
    fs = style.fontSize;  //id="sample"要素のフォントサイズを取得する

■IE8までの場合、currentStyleプロパティを使う(Operaも対応)
・(書式)変数 = Element.currentStyle;
・例
  var smp = document.getElementById("sample");
    var style = smp.currentStyle;
    fs = style.fontSize;  //id="sample"要素のフォントサイズを取得する

■クロスプラウザ対応にするには
  if(ElementNode.currentStyle){
    currentStyleプロパティを使って処理
  }else{
    getComputedStyle(ElementNode,"")メソッドを使って処理
  }
・例
  var smp = document.getElementById("sample"); 
  var style = "";
   if(smp.currentStyle){
    style = smp.currentStyle;
    }else{
    var style = getComputedStyle(smp,'');
    } 
    fs = style.fontSize;  //id="sample"要素のフォントサイズを取得する

(親の親)DIV要素 スタイル設定は
{width:350px;text-align:center;border:1px solid navy}

(親)H4要素 スタイル設定は外部CSSファイルで
{background-image : url(images/midasi.jpg);background-repeat:no-repeat;
margin-top:0;padding-left:15px;color:navy;
font-weight:500;font-family: "MS 明朝";
border-left:6px double #0066ff;
border-bottom:1px solid navy}
<head>部の<stayle>タグで
{width:300px;font-size:10pt;
line-height:1.3em;}
target:SPAN要素 スタイル設定は
{width:80%;font-style:italic;
border:0.3mm solid red;}

SPAN要素の・・・↓
SPAN要素のスタイルは
width:自身の設定スタイル
text-align:親の親を継承
lin-height:親スタイルを継承(IE8は設定値のままで表示されるが、FireFoxはpx変換される)
fontの一括取得はできない
font-weight : 親スタイルを継承
font-style :自身の設定スタイル
font-family : 親スタイルを継承
font-size : 親スタイルを継承(IE8は設定値のままで表示されるが、FireFoxはpx変換される)
color : 親スタイルを継承(IE8は設定値のままで表示されるが、FireFoxはrgb()表示に変換)
border :一括取得はできない
borderTop :これも一括になり取得できない
borderTopColor : 自身の設定スタイル(IE8は設定値のままで表示されるが、FireFoxはrgb()表示に変換)
borderLeftWidth : 自身の設定スタイル(IE8は設定値のままで表示されるが、FireFoxはpx変換)
Sample

ページ全体のする・・・↑

上のSampleのする・・・↑
*外部CSSファイルで設定されているスタイルは「{width:300px;border:solid 1px #009900;
      margin-left: -25px;text-align:center;font:lighter 14px 'Arial Black'}」

Sample Source......................................................................>>>

<style type="text/css">
    div.oyaoya  {width:400px;text-align:center;border:1px solid navy;}
    h4.oya  {width:350px;font-size:10pt;line-height:1.3em;}
    span#target  {width:80%;font-style:italic;border:0.3mm solid red;}
</style>

<script type="text/javascript"><!--
  function GetStyle1(){     //SPAN要素のスタイルを取得
    var span_style = document.getElementById("target");
    var sty = "";
    if(span_style.currentStyle){
        sty = span_style.currentStyle;
    }else{
        sty = getComputedStyle(span_style, '');
    }

  document.getElementById("view").innerHTML = "<p>width : " + sty["width"] + "<br>
    text-align : " + sty.textAlign + "<br>line-height : " + sty.lineHeight + "<br>font : "
    +  sty.font + "<br>font-weight : " + sty.fontWeight + "<br>font-style : " +
    sty.fontStyle + "<br>font-family : " + sty.fontFamily + "<br>font-size : " +
    sty.fontSize  + "<br>color : " + sty.color + "<br>border : " + sty.border + 
    "<br>borderTop : " +  sty.borderTop + "<br>borderTopColor : " + sty.borderTopColor
     + "<br>borderLeftWidth : " + sty.borderLeftWidth + "</p>";}

 function GetStyleBody(){    //ページ全体のスタイルを取得
    var sty = "";
    if(document.body.currentStyle){
        sty = document.body.currentStyle;
    }else{
        sty = getComputedStyle(document.body, '');
    }
    document.getElementById("view").innerHTML = (省略、上と同じ)
 }

 function GetStyle2(){      //Sampleのスタイルを取得
    var t1 = document.getElementById("test1");
    var sty = "";
   if(t1.currentStyle){
       sty = t1.currentStyle;
   }else{
       sty = getComputedStyle(t1, '');
   }
   document.getElementById("view").innerHTML = (省略、上と同じ)
 }
// --></script>
</head>

<body>
<div class="oyaoya">(親の親)DIV要素
    <h4 class="oya">(親)H4要素
         <span id="target">target:SPAN要素</span>
    </h4>
</div>

<div style="font:12px 'MS 明朝'">
      SPAN要素の<button onclick="GetStyle1()">スタイルを取得</button><br>
<div id="view" style="width:220px;height:270px;font:12px 'MS 明朝';border:3px double red;float:left"></div>

<h5 id="test1">Sample</h5>
<P>ページ全体の<button onclick="GetStyleBody()">スタイルを取得</button>する</p>
<p>上のSampleの<button onclick="GetStyle2()">設定スタイルを取得</button>する</p>