第10回 CSSだけで画像のすり替えを実行 | デザインってオモシロイ -MdN Design Interactive-
【サイトリニューアル!】新サイトはこちらMdNについて
CSSによる美しいWebレイアウト

第10回 CSSだけで画像のすり替えを実行

前回と同じかよ!と思った方。よく見てほしい。タブの選択肢が1つ増えただけでなく、今回のバージョンでは「マウスオンでタブ画像の色も変わる」という効果を付け足している。CSSだけで画像のすり替えを行うという点がキモだ。

■POINT

タブのすり替えは、手前に表示されているタブと、その下に回り込んでいるタブでは表現を微妙に変えている。手前バージョンは斜めからちょっと明かりが差し込んだような表現に、その下のバージョンは全体が光っているような感じに・・・を目指した。今回のスタイル画面
 
今回のスタイル完成画面
wrapperのために作ったHTMLなど大枠は前回と全く一緒である。変更した箇所は以下の部分だけだ。

Englishページ用のul、liの構成

【図1】Englishページ用のul、liの構成

【図1】Englishページ用のul、liの構成ソース

【図1】Englishページ用のul、liの構成ソース
Gnavのliタグを1つ増やして「French」の選択肢を作り。追加でtab3.htmlのファイルを作ったのが変更点である。余談だが、HTML4.01のようにスタイルと文書構造が一緒にできる記述方法の場合、今回のような改変をタグの追加だけで追えるのは難しい。スタイルを文書構造とはっきりわけているからこそ、たった1行の追加でページの修正ができるというものだ。


■STEP 1

さて、与えたclassだが、このソースは(tab1.html)に対して付けたもの。だから(tab1.html)は現在アクティブとなっているわけなので、classはonを与える。onのclassはタブが手前に見えるスタイルのこと。蛇足ながら、tab2、tab3のHTMLについても以下に示しておこう。自分自身には常にonを与えている。



【図2】Japaneseページ用のul、liの構成
【図2】Japaneseページ用のul、liの構成
【図2】Japaneseページ用のul、liの構成ソース
【図2】Japaneseページ用のul、liの構成ソース




【図3】Frenchページ用のul、liの構成
【図3】Frenchページ用のul、liの構成
【図3】Frenchページ用のul、liの構成ソース
【図3】Frenchページ用のul、liの構成ソース





■STEP 2

さて、次にマウスオンの際すり替えるための画像を見てみよう。classがonの際の画像は【図4】、classがoffの際の画像は【図5】だ。どちらも上下に違う画像がくっついた1つの画像である。上下は【図6】のような関係になっている。この画像をページにうまく反映させるCSSは以下の【ソース4】のとおりだ。

図4 classがonの際の画像構成。別々に作ったものを最後に1つにまとめた
【図4】 classがonの際の画像構成。別々に作ったものを最後に1つにまとめた
【図5】classがoffの際の画像構成
【図5】classがoffの際の画像構成
【図6】 全体の画像の高さは38pxの倍の76pxぴったりにする
【図6】 全体の画像の高さは38pxの倍の76pxぴったりにする

【ソース4】
【ソース4】

■STEP3

前回のソースとの相違点は、各liに対するa:hoverの指定部分、backgroundの箇所に-38pxと書き加えたところだ。えっ? たったこれだけ・・。と拍子抜けするが、これだけである。

画像がCSSによる指定でページ上に表示されるとき基準となる点は、画像配置の揃えが左の時(デフォルトでは左)は画像全体の左上のはずだ。liの背景画像はこれより前の指定で以下のようにheightとpadding-topを足した分だけしか表示されないために、マウスカーソルに反応していない時に見えるのは画像の上半分だけになる。

これをa:hoverの指定で-38px、つまり【ソース5】のように上方向に画像全体を38pxひっぱりあげてやることで、マウスカーソルが触れたときに、【図7】のように画像がすり替わっているように見せられる、というわけなのだ【図7】。JavaScriptをつかうよりも数段簡単ではないだろうか。


【ソース5】

【ソース5】

完成CSSのソース

完成CSSのソース

コラム:基本のキ その2

serifとsans-serif

最初にお詫びと訂正をしなければいけない。実は前回の「第9回 CSSでタブ型のナビゲーション」の完成ソースには間違いが含まれている。それは以下の箇所だ。

font: 14px Georgia, verdana, sans-serif;

※一部ツール任せで作成したため、おかしな指定が混入しました。申し訳ありません・・・

で、何が間違いなのかというと、sans-serifの指定を含んでおきながら、このソースにはserif体のフォントが含まれていることだ。作者の意図としてはGeorgiaを使いたかったし、それがちゃんと表示されているので間違いに気付かなかった。

sans-serifは「ひげなし書体」を意味する。日本語でいえばゴシック体のようにすっきりしたフォントのことだ。でもGeogiaは「ひげ書体」のserif体である。ここはどちらかに統一すべきで、意図通りに指定する正しい方法を取るならば

font: 14px Georgia, serif;

とすべきだったわけ。sans-serifとserifは日本語に対して使っても「明朝」「ゴシック」の解釈にフォントを分けてくれる。しかし、古いブラウザでは日本語にこの指定を使うと文字化けを起こすものもあるので注意しよう。

「ひげ書体」serifのGeogia
「ひげなし書体」sans-serifのVerdana
「ひげなし書体」sans-serifのVerdana




次回へつづく


[プロフィール]

やの・りん●北海道足寄町生まれ。女子美術大学芸術学部芸術学科卒。著書に『Webレイアウト見本帳』、『WEBレイアウト・セオリー・ブック』(エム ディエヌコーポレーション)がある。近著『デザインする技術』(エムディエヌコーポレーション)も好評発売中。身長 152.1cm。

twitter facebook このエントリーをはてなブックマークに追加 RSS
【サイトリニューアル!】新サイトはこちらMdNについて

この連載のすべての記事

アクセスランキング

8.30-9.5

MdN BOOKS|デザインの本

Pick upコンテンツ

現在