Category : XHTML/CSS
Webデザインのための Firefox | table と caption の ma 
label のススメ
2008-07-29
0
0
XHTML/CSS
CSS, label, XHTML
label の働き
お名前 <input type="text" name="name" id="name" size="20" />
このような場合,コントロール本体であるテキストボックス<input type="text" ... />とその説明である「お名前」というテキストは,隣同士に並んではいるけれど,対応していることがはっきりマークアップされているわけではありません。
label要素を使って,次のようにマークアップすることで,「お名前」というテキストとテキストボックスをはっきり関連づけることができます。label要素内のテキストが,for属性の値に入れられた id名を持つ要素,つまり id="name" のラベルであることを示すわけです。
<label for="name">お名前</label> <input type="text" name="name" id="name" size="20" />
IE6以前では対応していませんが,次のようにテキストとコントロールをまとめてくくる方法もあります。
<label>お名前 <input type="text" name="name" id="name" size="20" /></label>
label要素の部分をクリックすると,テキストボックス(input type="text")やテキストエリア(textarea)ならボックスにカーソルが入った状態,ラジオボタン(input type="radio")やチェックボックス(input type="checkbox")だと選択された状態,さらにクリックすると選択を解除した状態になります。
大きさの限られたラジオボタンやチェックボックスの場合,テキスト部分も含めてクリックが有効になるので,かなり使いやすくなります。
CSSでのデザインにも便利
ラジオボタンやチェックボックスをいつか並べるようなことがあります。
<form method="post" action="#">
<dl>
......
<dt>利用しているソーシャルブックマーク</dt>
<dd class="sbm">
<label><input type="checkbox" name="hatena" id="hatena" value="はてなブックマーク" />はてなブックマーク</label>
<label><input type="checkbox" name="delicious" id="delicious" value="del.icio.us" />del.icio.us</label>
<label><input type="checkbox" name="livedoor" id="livedoor" value="livedoorクリップ" />livedoorクリップ</label>
<label><input type="checkbox" name="buzzurl" id="buzzurl" value="buzzurl" />buzzurl</label>
<label><input type="checkbox" name="yahoo" id="yahoo" value="Yahooブックマーク" />Yahooブックマーク</label>
<label><input type="checkbox" name="pookmark" id="pookmark" value="POOKMARK Airline" />POOKMARK Airline</label>
<label><input type="checkbox" name="nifty" id="nifty" value="@niftyクリップ" />@niftyクリップ</label>
<label><input type="checkbox" name="newsing" id="newsing" value="newsing" />newsing</label>
<label><input type="checkbox" name="others" id="others" value="その他" />その他</label>
</dd>
......
</dl>
</form>
このように マークアップしておくと,CSSでのデザインも楽になります。(ただし,このマークアップではIE6以前で label要素上のクリックは効きません)
form dl dd.sbm label {
margin-right: 1.5em;
white-space: nowrap;
}
とすれば,テキストとコントロールのセットが分かりやすくなり,途中で折り返されることがなくなります。
ひとつずつ改行したくなったら,<br /> を入れなくても,次のようにすれば解決します。
form dl dd.sbm label {
display: block;
}
応用としてこんなふうにも。
form dl {
overflow: hidden;
width: 434px;
}
form dl dd.sbm label {
display: block;
float: left;
width: 13em;
}
注意点
- ひとつの label に対して,ひとつのコントロールを対応させなければなりません。label要素の中に複数のチェックボックスを入れるようなことはできません。
- label要素はインライン要素です。
- せっかく関連づけがされているので,label要素にマウスがのったとき,見た目上の変化があるとよいかもしれません。IEでは,コントロール本体がグローしますが,他のブラウザでは特に変化はありません。たとえば次のように。
form dl dd.sbm label:hover { background: #EEE; }
参考
Trackback (0)
Trackback URL :
http://blog.d-spica.com/MT/mt-tb.cgi/29
Add Comment
Search
XHTML/CSS Category Entries
- table のアクセシビリティを向上させる
- table と caption の margin
- label のススメ
- CSSの初期化ファイル
- nth-child() 疑似クラスを試してみる
- CSSファイルの分割
- IEで指定どおりのfont-sizeにならない
- すぐに使えそうなネガティブマージン
- dtをfloatする場合の注意点
- Re: CSSによるデザインワークと相性のよいHTMLって?
- flaotを解除する3つの方法
- カレンダーをリストでマークアップ
- IE6, 7 そして 8
- idの命名に迷ったら
- CSSの初期化
- h1をサイトタイトルにする理由
- classをどの要素にふるか
- li要素にdl要素を入れてみる
- 画像置換の問題点
- id="header"で問題ないのでは
- font-size指定
- clearfixでfloatを解除
- サイト全体に連なるh1〜h6
- ul,liでメニューをマークアップ
- dlで写真をマークアップ
- 見出しの階層をちゃんとする
- サイトタイトルを画像にしたら


Comments (0)