スポンサーサイト

CSS で画像を拡大表示させる

私の中ではかなりの革命です。なぜ今までこれに気が付かなかったのか。きっとIEのhoverに対する実装が甘かったせいかもしれません。なにか 本家 とはCSSの書き方や画像の表示のさせ方が違いますが、一応動作しているので細かい詰めの部分は後で考えようと思います。表示させる場所や、拡大した後の周りのレイアウトの崩れを気にしないのならばpositionによる細かい指定は不要のようです(私はこちらの方が好み)。クロスブラウザかどうかはわかりませんが、閲覧想定環境 では意図通りに動作しているので良しとします。

追記(2005年11月24日01時10分)

何の影響なのか定かではありませんが、Firefox1.0.7では上手く動かなくなりました。

お気付きの通り、画像の大きさに関する指定はCSSで一括してしまっているので、画像毎に大きさを変えたい場合は不便です(その都度class指定を加えて行けばできますが。画像の大きさを指定するだけの別のCSSファイルを用意してみても良いかもしれません)。しかも代替縮小画像を用意せずに大きな画像を縮小して表示しているのでファイルサイズが大きな画像の場合は注意が必要です。しかし何かの画像付きのチュートリアルや、サムネイルを並べて写真を展示する場合など、画像の大きさが一定でも構わない場合などでは使い道があるのではないでしょうか。私には目からウロコでした。

ちなみにこの方法で最低限必要なのは以下の記述だけです。

a:hover
{
	background-color: 適当な背景色(transparentだと駄目みたい);
}
a:hover img
{
	width:拡大時の横幅;
	height:拡大時の縦幅;
}
<p><a href="パス"><img src="画像パス" alt="代替" width="最初の横幅" height="最初の縦幅" /></a></p>

説明すると、a:hoverに対する背景色の指定はIEできちんと動作させる為に必要なのだそうです。最初に表示させておく画像の大きさもCSSで指定してしまう事も出来ますが、CSSをオフにした時の事や、class指定を用いて複数の指定をする場合には不便なので画像の属性として直接指定した方が得策なようです。そして親要素やa要素、もしくはimg要素にclass指定を用いる事によって、a:hover img.photo などのセレクタに width:拡大時の横幅; height:拡大時の縦幅; を新たに指定してやれば、拡大後の大きさも個別に指定できます。


コメント一覧

コメントの投稿欄

トラックバックURL

http://harmony.blog5.fc2.com/tb.php/78-4423a650

  • お気軽に御自由にどうそ。
  • 宣伝・検索トラックバックはご遠慮願います。
  • 重複しても削除依頼は不要です。こちらで適当に対応します。
  • その他の削除依頼は特別な理由が無い限り受け付けません。
  • 不安な方はトラックバックについてをお読み下さい。
  • 私のトラックバックについての考え方は トラックバックについての方針 に書いてあります。
  • 削除されて気分を害する方は送信しない方が賢明です。
Copyright © 2005 rara All Rights Reserved.