擬似ボタン


きゅーとむ探検隊 ] | [ Vector支部 ]

memo00 | memo01 | memo02 | memo03 | memo04 | memo05 | memo06 | memo07


説明

スタイルシートとイベント属性による 「擬似ボタン」。画像やフォームを使わずに、ボタンと同様な効果を目指しました。


割とボタンらしい動きが表現できているのではないかと思います。

画像式のボタンに比べて、メニュー構成などが変化しても変更が容易ですし、ブラウザで画像表示をしない設定にしていても、ボタンとして表示ができます (私自身が、よく 「画像表示無し」 で閲覧しています)。

また、擬似ボタンの大きさを相対値 「em」 で指定したので、ブラウザで 「文字のサイズ」 を変更すると、擬似ボタンの大きさもそれに追随します。


基本動作確認

「擬似ボタン」の基本動作

  1. マウスカーソルを擬似ボタン上にポイントすると、立体っぽい枠線表示に変える (onmouseover)。
  2. 同時に、マウスカーソルを 「矢印」 から 「手」 の形に変える (cursor: hand)。
  3. 同時に、ボタンのコメントを表示する (title="〜")。
  4. クリックすると、凹んだように枠線表示を変える (onmousedown)。
  5. 同時に、ボタン内の文字も右斜め下にずらして、「凹み感」 を強調する。
  6. クリックを放すと、元の立体っぽい枠線表示に戻す (onmouseup)。
  7. 同時に、ボタン内の文字も中央に戻す。
  8. マウスカーソルを擬似ボタン上から離すと、最初の平面っぽい枠線表示に戻す(onmouseout)。
  9. 同時に、マウスカーソルを 「手」 から 「矢印」 の形に戻す (初期値の cursor: auto が有効になっている?)。

ポイントした時、擬似ボタン内の文字は変えない


擬似ボタン1

ポイントした時、擬似ボタン内の文字を太字に


擬似ボタン1

選択中

メニューに使用したとき、現在表示中のページがどのボタンからのリンクかを案内するのに使えるかと思い、作ってみました。

トグル式ボタン (一度押すと凹んだままとなり、もう一度押したり他のボタンを押すと元に戻る) のイメージです。画像式のボタンだと、もう一枚画像を用意する必要があります。

ついでに横方向へのレイアウトも考えてみました。


<span> タグで横に並べ、<div> タグでブロックレベル化

<body> 〜 </body> 内にいきなりインラインレベル要素は記述できないので、<div> タグでまとめています。


擬似ボタン2 擬似ボタン2

テーブルでレイアウト

テーブルをレイアウト調整の目的で使用するのは、あまり宜しくないようですが、段落やテーブルなどのブロックレベル要素を横方向にレイアウトする方法を他に知らないので、このパターンも作ってみました。


擬似ボタン2
擬似ボタン2

リンク設定

実際にリンクを設定してみます。

ボタン内の余白にポイントしたときは、ステータスバーにリンク先のURLが表示できません。<a> タグのリンク文字にマウスカーソルがポイントされていないからですが、「ボタンの真ん中辺りでクリックするよね?」 という前提で妥協しました (^^)。

ボタン内の余白をクリックしたときのリンク先指定には、onclick="location.href='〜'" を使っています。


擬似ボタン3 擬似ボタン3

背景画像付き

擬似ボタンの背景に画像を指定してみます (擬似ボタンの作成動機と少々矛盾しますが...)。

ブラウザで画像表示をしない設定にした場合は、背景色の指定が有効になるようです。


擬似ボタン4