2009年06月26日

block要素の横幅を要素の内容によって伸縮させる方法 その2

こんにちは、馬場です。


今回は、
block要素の横幅を
要素の内容によって
伸び縮みさせる方法について、
floatを使った実現方法を
ご紹介します。





▼floatを使った実現方法


floatは
cssコーディングを行う際に
なくてはならない
代表的なプロパティの1つなので、
お気づきの方も多いと思いますが、
floatを使うと
要素の横幅が
要素の内容によって伸縮します。
(要素の内容に依存します。)

▼スクリーンショット

※スクリーンショットは、windows Firefox3.0のものです。

(htmlコーディング)
<div class="wrapper02">

<div class="balloon02">あのマイケルが!!?</div>
<div class="clear">&nbsp;</div>
<p>きょうは・・・。</p>

</div>
(cssサンプル)
* {

margin:0;
padding:0;

}
body {

font-size:75%;

}
.wrapper02 {

padding:10px;

}
.balloon02 {

float:left;
padding:10px 10px 25px 10px;
background-color:#67C3EC;
background-image:url(images/bg01.gif);
background-repeat:no-repeat;
background-position:center bottom;

}
.clear {

clear:both;
height:0;
font-size:1px;
line-height:0;
visibility:hidden;

}
・・・floatを使った実現方法と
言いますか、floatを使っているだけです。

私は、floatを使用する際は
widthを設定することがほとんどだったため、
なかなか気付くことができませんでした。


前回ご紹介した、
「displayを使った実現方法」は
inline要素になってしまうのに対し、
今回は、
block要素のままなので、
例のように吹き出しを表現する場合は、
前回より、今回の方が
向いているかもしれません。



positionを使った実現方法については、
次回以降にご紹介させていただきます。
posted by baba at 20:11 | Comment(0) | TrackBack(0) | テクニック

2009年06月12日

『table-layout』を使おう! その1

こんにちは。
溝上です。

今回は『table-layout』というプロパティを紹介したいと思います。

実は先日まで

先輩:「溝上君。今度のブログはtable-layoutについて書いてみなよ」
溝上:「え? 何ですかそれ?」


『table-layout』というプロパティがあることを知りませんでした・・・

そこで調べてみるとなかなか面白いプロパティだとわかりました。

私なりに簡単に説明するとこうなります。

table-layoutにfixedを指定すると
1.tableの幅が指定されており、th,tdの幅が指定されていない場合、同じ幅になる
2.1行目のth,tdの幅が2行目以降に適用される
3.ページの表示速度がUPする

▼tableの幅が指定されており、th,tdの幅が指定してない場合同じ幅になる


今回は『th,tdの幅が指定されていない場合、同じ幅になる』について紹介したいと思います。
それでは早速サンプルを紹介したいと思います。
(cssサンプル)
body {
  padding:15px;
}
.section {
  width:400px;
  padding-bottom:30px;
}
table {
  table-layout:auto;
  width:100%;
}
table.fixed {
  table-layout:fixed;
}
table th,
table td {
  padding:10px;
  border:1px solid #000000;
}
htmlコーディング例
<table>
<tr>
<td>短いテキスト</td>
<td>中くらいのテキスト</td>
<td>長あああああいテキスト</td>
</tr>
<tr>
<td>短いテキスト</td>
<td>中くらいのテキスト</td>
<td>長あああああいテキスト</td>
</tr>
</table>

<table class="fixed">
<tr>
<td>短いテキスト</td>
<td>中くらいのテキスト</td>
<td>長あああああいテキスト</td>
</tr>
<tr>
<td>短いテキスト</td>
<td>中くらいのテキスト</td>
<td>長あああああいテキスト</td>
</tr>
</table>

それでは早速スクリーンショットを見ていただきましょう。
まずはtable-layoutにデフォルトであるautoを指定した場合です。

▼スクリーンショット(table-layout:auto)

※スクリーンショットは、windows Firefox3.0のものです。

いたって普通ですね。
列の幅がテキストの長さによって変わっています。
次はtable-layoutにfixedを指定した場合です。

▼スクリーンショット(table-layout:fixed)

※スクリーンショットは、windows Firefox3.0のものです。

すべての列の幅が同じ幅になりました。
ちなみにtableのwidthが指定されていないと同じ幅にはなりません。

table-layout:fixedを指定すると、tableのwidthからth,tdで指定されたwidthを引いた残りをwidthが指定されていないものに均等に割り振っているようです。

口ではうまく説明できませんので、サンプルをどうぞ。
(cssサンプル)
table .w50 {
  width:50px;
}
htmlコーディング例
<table class="fixed">
<tr>
<td class="w50">短いテキスト</td>
<td>中くらいのテキスト</td>
<td>長あああああいテキスト</td>
</tr>
<tr>
<td>短いテキスト</td>
<td>中くらいのテキスト</td>
<td>長あああああいテキスト</td>
</tr>
</table>
▼スクリーンショット(table-layout:fixed)

※スクリーンショットは、windows Firefox3.0のものです。

1つめのtdにwidth:50pxを指定したため、残り2つのwidthを指定していないtdに対して余った幅を均等に割り振っています。
thだけ幅を決めて、残りのtdの幅を同じにしたい・・・なんて状況は結構多いですよね。
そんな時、table-layoutを使えば便利だと思います。


次回は『1行目のth,tdの幅が2行目以降に適用される』『ページの表示速度がUPする』について紹介したいと思います。
posted by baba at 18:04 | Comment(0) | TrackBack(0) | 情報
 
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。