REDLINE MAGAZINE | CSS3 :target擬似クラスでイメージギャラリーREDLINE MAGAZINEトップページへ

すべてのエントリを見る

CSS3 :target擬似クラスでイメージギャラリー

最近CSSネタも出尽くした感じで自分でもなかなかこれ面白いよ、と書ける新鮮なネタもないので、海外のサイトで見かけて面白かったものをご紹介。

普段クリックして画像を差替えるイメージギャラリーっぽいものを作る際はjavascriptを使ったりする事が多いんだけど、こちらの記事でCSS3の「 :target」を利用したイメージギャラリーの話が書いてありました。

>>Making an image gallery with :target - CSS3 . Info

内容はimgに対してまずposition:absolute;を指定しておいて、各リンクをクリックした時に:targetの該当img要素に対してz-indexで最前面に配置する、というもの。

ソースやサンプルページはそちらにあるので、そっちを見たほうが早いと思うんだけど、:target擬似クラスって意外と使い道あるのかも、とか思った。(各ブラウザにちゃんと実装されたら、の話だけど。)

擬似クラスと擬似要素

意味は理解できてるものの、たまに言葉がごっちゃになる(私だけか)擬似クラスと擬似要素。それぞれもう一度簡単におさらいしとく。

>>参考:CSS2.1 Selectors (5.10 擬似要素 及び 擬似クラス)
>>参考:CSS3 6. 単純選択子

擬似クラス、擬似要素はドキュメントツリーで表せる範囲外の情報、単純なセレクタで表す事のできない部分を選択することができるもの。

仕様書等には小難しく書いてあるけど、簡単に言い換えてみると「この場合のこの部分だけこういうスタイル付けたいのにそれをCSSだけでピンポイントに指定するの難しいよー」ってな時に、html汚さなくても、js使わなくても、擬似クラス又は擬似要素を使えばCSSで指定できる選択範囲がちょっと広がるぜ、ってこと。

以下、仕様書とか参考サイトを見ながら1つずつおさらいして簡単に用途をまとめたもの。

擬似クラス
特定のタイミングでの状態とか、要素が持ってる特長とかを選択できる。
擬似クラス名 対象 備考
:link 未訪問のa要素のリンク CSS1~
リンク擬似クラス
:visited 訪問済のa要素のリンク
:hover マウスが対象要素の上に置かれてる時 CSS1及び2~
利用者行為擬似クラス
他にも「動的」とか
「ダイナミック」とかの
言い方もある。
:active 対象要素上でマウスのボタンを押して離すまでの間
:focus 対象要素にフォーカスされてる時(フォームとか)
:lang() lang(言語)で指定した言語部分 CSS2~
:target フラグメント識別子を持ってるurlリンクでターゲット対象にされた要素 CSS3
:enabled ある要素が有効な時(フォームとか) CSS3
UI要素に対しての
状態擬似クラス
:disabled ある要素が無効な時(フォームとか)
:checked ラジオボタン、チェックボックスがチェックされた状態の時
:indeterminate ラジオボタン、チェックボックスがチェックされてるかどうか不確定の状態の時
:root ドキュメントルートの要素 CSS3
:nth-child(n) 親要素のn番目の子要素 CSS3
:nth-last-child(n) 親要素の最後から数えてn番目の子要素 CSS3
:nth-of-type(n) 親要素の中で兄弟関係にある同じ種類の要素の中のn番目の要素 CSS3
:nth-last-of-type(n) 親要素の中で兄弟関係にある同じ種類の要素の中最後から数えてn番目の要素 CSS3
:first-child ある親要素の最初の子要素 CSS2~
:nth-child(1)と同じ
:last-child ある親要素の最後の子要素 CSS3
:first-of-type 親要素の中で兄弟関係にある同じ種類の要素の中の最初の要素 CSS3
:nth-of-type(1)と同じ
:last-of-type 親要素の中で兄弟関係にある同じ種類の要素の中の最後の要素 CSS3
:nth-last-of-type(1)と同じ
:only-child 兄弟を一つも持たない、その親の唯一の子である要素 CSS3
:first-child:last-child
:nth-child(1)
:nth-last-child(1)と
同じだけど固有性は低い
:only-of-type 同じ要素の兄弟が一つもない要素 CSS3
:first-of-type
:last-of-type
:nth-of-type(1)
:nth-last-of-type(1)と
同じだけど固有性は低い
:empty 子要素を一つも持たない要素 CSS3
テキストのノードを含む
:contains() テキストの内容が与えられた部分文字列を含む要素 CSS3
内容擬似クラス
引数は文字列
静的なメディアタイプに限定
:not() 「なになにではない(否定)」の要素 CSS3
引数として単純選択子をとる

一番上に書いたイメージギャラリーで使われてる「:target」の例で言うと、普通に考えて「そのリンクがアクティブになった瞬間ターゲットとなる要素をどうこうする」っていうのは単純な要素を指定しただけのCSSではどうにもならないが、「:target」擬似クラスを使えばその「アクティブになった時、ターゲットをどうする」というのがピンポイントで指定できる。

擬似要素
ある要素の一行目、とか1文字目とかを選択できる。ある要素の前後に内容を生成したりもできる。
擬似要素名 対象 備考
::first-line ある要素の最初の行 CSS1~
::first-letter ある要素の最初の文字 CSS1~
::selection 現在選択、強調されている、要素の一部 CSS3
UI要素の断片擬似要素
::before ある要素の前に生成される内容 CSS2
::after ある要素の後に生成される内容 CSS2

もっとちゃんとした詳しい解説

擬似クラス、擬似要素に関してはいろんなページに情報があるけど、個人的にはこちらのWWW WATCHさんのまとめが日本語の解説で一番分かりやすいと思いました。勉強になりまくりんぐ。

>>CSS セレクタに関するおさらい 2 | WWW WATCH
>>CSS セレクタに関するおさらい 3 | WWW WATCH

:nth-child(n)辺りの引数関連の部分も仕様書の邦訳ページより文体が分かりやすくて頭に入りやすかったです。:nth-child(n)周りの指定、早く普通に使えるようになってほしいなぁ。jsは苦手なのでCSSだけでなんとかしたい・・・。

上記サイトのページやその他を拝見して分かったつもりになってたけど、改めて自分でまとめて書いてみると以外とコレなんだっけーみたいなの結構ありますね。実際に実務で使ったことないからっていうのもあると思うけど。先は長い・・・。

各ブラウザの対応について

CSS3で擬似クラスと擬似要素の区別のための「::(コロン2つ)」については「実践Web Standards Design―Web標準の基本とCSSレイアウト&Tips」によると、IE7ではこの::記法に対応してないので、:filrt-line擬似要素や: first-letter擬似要素を使用する際はコロン1つの方がいいかも、とのこと。IE6はコロンが1つ書かれてたらそれは擬似要素として認識するので2つあってもいいみたい。(P.100より)

各ブラウザの対応についてはこちらの記事でまとめられてる表が参考になりました。

>>hxxk.jp - IE 7 正式版を含む各種ブラウザの CSS Selectors testsuite の検証結果のまとめ

こんなサンプルもありましたよん

以前拝見して、いつか使いたいと思った:target擬似クラスのお話にこんなのもありました。

>>Lucky bag::blog: CSS3 の target 疑似クラスで脚注を動的に表示する

分かりやすい度が高くて好きです。

1つ疑問なんだけど、例えばある特定部分を分かりやすくするために背景色をつけたとして、その背景色をもし消したいケースなんかが発生したらどうすんの?っていう件についてなんだけど、

>>サンプルページ(Fxとか対応してるブラウザでないと見れないけど)
※私だけかもしれないけどWinのSafari3で見るとなぜか落ちるので注意。

上のサンプルではLucky bag::blogさんと同じような方法で背景色を消すリンクを付けてるんだけど、他に方法ってないんだろうか。なんかスマートじゃない気もしてる。このあたりが限界か・・・。どっちみちIEやOpera対策としてjs併用になるなら(以下省略・・・)

とにかくブラウザに実装されたら使い道はいろいろありそう!っていうのが今の感想。

余談:どっちの漢字が正しいのか知らない

ところで「擬似」と「疑似」、どっちが正解なの・・・?なんかサイトによって違うところがあった。意味は一緒っぽいからどっちでもいいんかな。

(追記):target擬似クラスを使ったプルダウンメニュー

CSS-EBLOGのえどさんが:target擬似クラスを使ったプロダウンメニューのサンプルを公開されていました。こちらのブログにトラックバックを送ってくださった模様なんですが、どうもキャッチできなかったので、記事内からリンクさせて頂きます。(届きました!ありがとうございます。)

>>:target擬似クラスを使ったプルダウンメニュー | CSS-EBLOG

Javascriptのonclickの代替えとして使えるかも?というサンプルが紹介されています。オシャレな感じ!

<< overflow を使用したボックス背景のこと | よく使うhtmlとCSSのソースセット >>

トラックバック

このエントリーのトラックバックURL:
http://redline.hippy.jp/cgi/mt/mt-tb.cgi/187

CSS3 :target擬似クラスでイメージギャラリー へのトラックバック一覧

» :target擬似クラスを使ったプルダウンメニュー 送信元 CSS-EBLOG
windowsのメニューバーのメニューのような動きをCSSのみで実現します。
Trackback time : 2008.02.15

コメント (5)

記事と直接関係ないコメントですみません。
この記事に、トラックバックを送ろうとしてエラーになったのですが、こちら側の問題でしょうか?

トラックバックが機能していないのかな、と思ったのでコメントさせてもらいました。

>えどさん
えとーすみません。
こちらの方へは届いてないみたいです。もしよろしければ再度送信して頂いてもよろしいでしょうか?
・・・どうでもいい海外からのトラバは鬼のように届くのに(泣)


とりあえず記事内からリンクさせていただきました。
すみません><

あ・・すみません、そういうつもりでコメントしたわけではなかったのですが・・^^;

不具合とかって、なかなか自分で気づけないのでいちおう、と思ってコメントしました。
もう一度、こちらからトラックバックを送ってみますね。わざわざありがとうございました!

>えどさん
あ、いや、えと、サンプル拝見して素敵だなーと思ったので、これはリンクしたいと思って追記しちゃいましたw


キタ━━━━(°Д°)━━━━!!!!
ちょうどこの返信書いてたらトラバきましたよん!よかった。私のトラバ機能ちゃんと動いてた!やっほー(n' ∀ ') η

Redさん>>
あ、なるほど。そういうことだったんですね^^;
気に入っていただけたようでよかったです(*'')

トラックバックは、もう一度コピーしなおしたらいけました・・。
一応見比べたんですが、違いはなく・・。でも無事に届いたようでよかったです(;´д`)




※コメント欄に「<」「>」等を含むソースを記載する場合は実体参照に変換してください。

このページの一番上へ

その他の情報など

最近のコメント

PHP オブジェクト指向の勉強
  • Red - 2010.01.08
  • hogepage - 2010.01.21
  • Red - 2010.01.22
  • - 2011.11.27
  • houseiii - 2011.11.27
Fireworks トリミング画像を一括書出 CS4編
  • Iper - 2009.06.27
  • Red - 2009.06.27
  • mala - 2011.11.17
  • Red - 2011.11.18
jQueryでボックスを上下左右中央に簡単配置
overflow を使用したボックス背景のこと
  • - 2007.12.13
  • Red - 2007.12.13
  • - 2007.12.13
  • Red - 2007.12.13
  • hj - 2011.09.23
IE6 → 透過PNG+overflow=混ぜるな危険(追記有)

メッセージを送る

こちらのメッセージ送信フォームは閉鎖させて頂きました。
御用の方は新しい方のブログ にコメント頂くか、 連絡用のフォーム もありますので、そちらからご連絡ください。