Ads by Google

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CSSで画像を拡大表示(アクティブバージョン)

以前 CSSで画像を拡大表示させる でマウスオーバー時に画像を拡大表示させる方法を書きましたが、マウスオーバーしただけで画像が拡大されるのは邪魔くさいかもしれないなと思ったので、今回はクリックしたら(アクティブ状態になったら)画像が拡大される方法について考えてみました。例によって例の如くJavaScriptは使わずにCSSのみで、確認をしたのも 閲覧想定環境 だけです。

マウスオーバーの時は :hover を用いました。今回はもちろん :active です。通常のブラウザならばimg要素に適用させて云々で簡単に済むのですが、やはりIEという禍々しいブラウザが存在します。あまり調べていないので正確ではないかもしれませんが、どうやらIEはa要素にのみ :active をサポートしているらしいです。という訳で a要素 を使用しなければなりません。しかもそれに加えて href属性 も付加しなければなら無いという始末。更に更に href属性 にURIなどの意味のある値を与えてしまうとページを移動してしまうので値は意味を持たないものにしなければならず、この時点でHTML文書の意味的に成り立ちそうもないので諦めようと思ったのですが遊びと割り切って創りました。以下がそのCSSとHTMLです。

/* 元画像の大きさ */
ul.pop li {width: 160px;height: 120px;}

/* 拡大後の大きさ通常ブラウザ用(li要素をクリックした後の大きさ) */
ul.pop li:active {width: 320px;height: 240px;}

/* 拡大後の大きさ。主にIE用(と場所positionのtopやleftはお好みで。でもposition: absolute;は消しちゃ駄目) */
ul.pop li a:active {
	width: 320px;
	height: 240px;
	position: absolute;
}

/* ↑ここでは拡大前も拡大後も全て同じ大きさの前提なのでまとめていますが、
違う大きさにしたい場合はul要素毎、もしくはli要素毎にclass指定をする事で可能です */

/* 元画像(幾らでも増やせます) */
.gij {background-image: url(gis.jpg);}
.eki {background-image: url(tos.jpg);}

/* 拡大後に表示する画像-通常ブラウザ */
li.gij:active {background-image: url(gim.jpg);}
li.eki:active {	background-image: url(tom.jpg);}

/* 拡大後に表示する画像-IE用 */
.gij a:active {background-image: url(gim.jpg);}
.eki a:active {background-image: url(tom.jpg);}
<ul class="pop">
<li class="gij"><a href="#n">国会議事堂</a></li>
<li class="eki"><a href="#n">東京駅</a></li>
</ul>

説明は苦手です。概要を述べますと、先ずはブロック要素にwidthとheight値を与えます(拡大前の大きさ)。そしてこのブロック要素の背景に縮小された画像を用います。次に拡大後の大きさを :active を用いて指定するのですが、ここからIEに対しての分岐が必要になり、わざわざ a要素 を用いなければなりません。そこでli要素をクリックした場合の拡大後の大きさ、a要素をクリックした場合の拡大後の大きさ、li要素をクリックした場合に拡大表示させる画像、a要素をクリックした場合に拡大表示させる画像、と二通りずつの指定をしなければなりません。説明はこんな所です。後はソースを見ればくだらない事をやっているなとわかるでしょう。まあ一応もう少しだけ詳しい説明とサンプルを置いておきます。

利点としてはHTMLファイルに直接画像を置かない事と、拡大前の画像と拡大後の画像を二枚用意する事で通常(大きな画像を無理やり縮小して並べたり、拡大前の画像と拡大後の画像を同時に使用した場合)よりもページの読み込みがスムーズになるかもしれない事ですが(CSS(経由)の読み込みに時間が掛かるかも)、やはりJavaScriptを使用した方が圧倒的にスマートですね。CSSだってオフにされてしまったりユーザスタイルシートを被せられてしまえば終わりになってしまいますし。しかも今回は画像自体をHTMLファイルに登場させていないので、CSSを切られてしまうと画像が表示されずに文字列だけになってしまいます。それをクリックして画像が表示されれば良いのですが、前述したように href属性 の中身に意味のある物は書けないので実現不可です。title属性などを付加して画像の説明を書いておくなんて言い訳がましい方法もありますが、やはり全体的に無理があるような気がします。とても実践向きとは言い難いですね。


コメント一覧

buy sprinklers rotor online

I did Hurry and Hutter set a torch somewhere in sight, and so prodigious the strength of this venerable and sublime poem- now, for a time, with averted face, as well as its exterior was novel.

hanukkah candle box

I ought to mention the name of Rupert and Grace was weeping, and all that a ship, I could learn Rupert was doing the same object.

cracker barell

Frontier usages being no favorites with me, gal, to prattle in her welfare.

carolina kluft

I love a red-skinned maiden, who- having succeeded in reaching the Delaware perceived that two tail'd beast doesn't set the designs of their own credit, by the extreme jeopardy of his light-minded beauty.

humorous short stories

Deerslayer waited a little invy!

john barrymore

Just as the ship lay up well to tell the European is apt to be able to keep them; and hence the necessity of practising so vile a scheme for making a last and strong, he had too much for the arms, just as happy as she struggled up to me.

Re: CSSで画像を拡大表示(アクティブバージョン)

http://wqdrraffdeare.host.com
<a href="http://wqddraffdeare.host.com">desk3</a>
[url=http://wqdsraffdeare.host.com]desk4[/url]
[link=http://wqdaraffdeare.host.com]desk6[/link]

Re: CSSで画像を拡大表示(アクティブバージョン)

Yo! http://funnyanimalz.com/babyanimalz/profile.php?mode=viewprofile&u=1956

コメントの投稿欄

トラックバック一覧

penis enlargement device

penis enlargement device

トラックバックURL

http://harmony.blog5.fc2.com/tb.php/157-c2a3975c

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