ラベル CSS の投稿を表示しています。 すべての投稿を表示
ラベル CSS の投稿を表示しています。 すべての投稿を表示

2011年1月6日木曜日

【CSS】display属性について

display属性の継承について
仕事で詰まったので調査をします。

displayプロパティ(しらぎくさいと)を見ると、display属性は下位の要素には継承されないらしい
以下、引用。
displayプロパティは、上位要素から継承されません。


ここで疑問。
  1. 最初にページが描画されたときは継承しないのか
  2. JavaScriptで動的にdisplay属性を操作したとき、その子要素はどうなるのか

この辺りを調査します。

長文なので結論から書きます
結論。

  1. 最初にページが描画されたときは継承しない
  2. JavaScriptで動的にdisplay属性を操作したとき、その子要素のdisplay属性には影響はない

サンプルコードはこんな感じのを使用します
HTML(サンプル1とする)
<a href="#" id="a">
 <img id="img" src="http://example.com/example.jpg"/>
</a>

aタグ、imgタグのdisplayをちょこちょこ修正して調査していきます。

描画時点のaタグ、imgタグのdisplay属性の値は、以下のようなJavaScriptで調べます。
alert("aタグのdisplay属性の値:" + $("a").style.display);
alert("imgタグのdisplay属性の値:" + $("img").style.display);

function $(id){
 return document.getElementById(id);
}

最初にページが描画されたときは継承しないのか
【まずはサンプル1で検証】
予想。
  • aタグはインライン要素なので、描画された時点では display:inline; となっているハズ
  • imgタグもインライン要素なので、描画された時点では display:inline; となっているハズ

結果。
aタグのdisplay属性の値imgタグのdisplay属性の値
IE7値なし値なし
Firefox 3.6.8値なし値なし
Google Chrome 8.0値なし値なし
Opera 11.00値なし値なし


予想外。
display属性の値は明示的にセットしないと、JavaSriptでは何も取得できないようです。

【aタグをdisplay:block;とするとどうなるのか】
HTML(サンプル2とする)
<a href="#" id="a" style="display:block;">
 <img id="img" src="http://example.com/example.jpg"/>
</a>

予想。
  • aタグは、描画された時点では display:block; となっているハズ
  • imgタグは、描画された時点では display:値なし となっているハズ


結果。
予想通り。

aタグをdisplay:none;としても、上記と同様の結果になりました。

JavaScriptでdisplay属性を操作したとき、その子要素はどうなるのか
aタグのdisplay属性をJavaScriptで操作したあと、imgタグのdisplay属性を確認します。

【HTMLサンプル1で検証】
以下のJavaScriptを使用します。
//aタグのdisplay属性をblockにしてからimgタグのdisplay属性を確認
$("a").style.display = "block";  

alert("imgタグのdisplay属性の値:" + $("img").style.display);

function $(id){
 return document.getElementById(id);
}

予想。
  • 上位のdisplay属性は継承されないので、imgタグのdisplay属性は 値なし となる


結果。
予想通り。

aタグのdisplay属性をnoneに変更しても、結果は同じでした。

結論
  1. 最初にページが描画されたときは継承しない
  2. JavaScriptで動的にdisplay属性を操作したとき、その子要素のdisplay属性には影響はない

ただここでもう一つ疑問が。
HTMLサンプル3
<a href="#" id="a" style="display:none;">  <!-- display:none; -->
 <img id="img" style="display:block;" src="http://example.com/example.jpg"/>  <!-- display:block なのでこれは表示されて欲しい -->
</a>

としたときに、imgタグの画像が表示されて欲しいのに、表示されない。

またもっと見て行きます。

2009年12月10日木曜日

CSSのRGBA記法について

color: rgba(255, 255, 255, 0.5);

上記のようにCSSを記述することで、白色で透明度が0.5の要素が記述できる。
rgba()記法の左3つの値は、左から赤、緑、青。
これらは0-255、もしくは0%-100%で指定できる。
で、一番右の値が透明度で、0-1の間で指定できる。
0に近づくほど、透ける割合が大きくなる。

ちなみにopacityプロパティとの違い。
CSS3大接近:第2回 OpacityとRGBa実践テクニック(gihyo.jp)から引用すると、

Opacityプロパティは指定した要素の子要素も透明度が適用されます。正確には指定した要素に含まれる要素すべてに適用されます。一方,RGBaプロパティバリューは指定した要素の子要素へ,もしくは,ふくまれる要素には,その値は適用されず,それぞれの要素のRGBaプロパティバリューを指定した要素のみに適用されます。

との事。
ざっくり言うと、rgba()記法の方が細かく指定できるので便利。

参考

  1. CSS3大接近:第2回 OpacityとRGBa実践テクニック(gihyo.jp)(ブラウザのRGBaとOpacityへの対応表も)
  2. 24ways(英語)

2009年10月20日火曜日

Browser support for CSS3 and HTML5

Quoted it from CREAMU.

There is put the data that which browser supports CSS3 and HTML 5 how in order at Deep Blue Sky.

My favorite browser Opera doesn't support CSS3 more than expected...

You can test browser you use at findmebyIP.com.
This is Deep Blue Sky's sister site.

2009年9月26日土曜日

Waht can CSS3 do ?


Here is CSS's history.

  • CSS1 at Dec 1996
  • CSS2 at May 1998
  • CSS2.1 at Feb 2004

And now, CSS3 is being settling.



Things CSS3 can do
The feature of CSS3 is that is modulated.
For example...
  • Text Effects
  • Backgrounds and Borders
  • Advanced Layout
  • Grid Position Module
  • Generated Content for Paged Media


Related Posts Plugin for WordPress, Blogger...