<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta name="description" content="疑似クラスは要素が特定の状態にある場合にスタイルを指定するもので、疑似要素は要素内の特定の文字や行に対してスタイルを指定したり、文字や画像を追加することができます。どちらもセレクタとなる要素名のあとにコロン（:）をつけて用います。" />
<meta name="keywords" content=":link疑似クラス,:visited疑似クラス,:hover疑似クラス,:active疑似クラス,:focus疑似クラス,:first-child疑似クラス,:lang疑似クラス,:first-letter疑似要素,:first-line疑似要素,:before疑似要素,:after疑似要素" />
<title>疑似クラスと疑似要素 CSS 前提知識</title>
<link rel="stylesheet" type="text/css" href="http://w3g.jp/style/default" /><link rel="alternate" type="application/rss+xml" href="http://w3g.jp/index.xml" title="RSS update information" />
<link rel="alternate" type="application/rss+xml" title="SiteMap" href="http://w3g.jp/sitemap.xml" />
<link rel="start" href="http://w3g.jp/" title="World Wide Web Guide" />
<link rel="contents" href="http://w3g.jp/css/" title="CSS" />
<link rel="index" href="http://w3g.jp/css/guide/" title="前提知識" />
<link rel="prev" href="http://w3g.jp/css/guide/selector" title="セレクタ（selector）" />
<link rel="next" href="http://w3g.jp/css/guide/cascading_order" title="段階化の順序" />
<link rev="made" href="mailto:ryo.ueda@gmail.com" />
<script src="/script/jquery" type="text/javascript"></script>
</head>
<body>
<p id="skip"><a href="#information">Go to information</a></p>
<h1>疑似クラスと疑似要素</h1>
<script type="text/javascript" src="/script/adsense"></script>
<p>疑似クラス（Pseudo-classes）は要素が特定の状態にある場合にスタイルを指定するもので、疑似要素（Pseudo-elements）は要素内の特定の文字や行に対してスタイルを指定したり、文字や画像を追加することができます。どちらもセレクタとなる要素名のあとにコロン（<code>:</code>）をつけて記述します。</p>
<p>疑似クラスと疑似要素については、Microsoft Internet Explorer の対応がまちまちであり、 Macintosh版Internet Explorer 5 では <code>:first-letter</code>疑似要素（対応しているが文字化けを起こす）, <code>:before</code>疑似要素, <code>:after</code>疑似要素の3つ以外は対応しているので概ね良好ですが、Windows版Internet Explorer 6 は <code>:link</code>疑似クラス, <code>:visited</code>疑似クラス, <code>:hover</code>疑似クラス, <code>:active</code>疑似クラス, <code>:first-letter</code>疑似要素, <code>:first-line</code>疑似要素だけにしか対応しておらず、さらに Windows版Internet Explorer 7 においても、<code>:first-child</code>疑似クラスへの対応だけに止まり、<code>:focus</code>疑似クラス, <code>:lang</code>疑似クラス, <code>:before</code>疑似要素, <code>:after</code>疑似要素の4つには対応することができなかったようで主要視覚ブラウザの中では、まだまだ <abbr title="Cascading Style Sheets">CSS</abbr> の対応に遅れがあるようです。</p>
<h2 id="link">リンクボタン（アンカー内容）に適用</h2>
<pre>
a:link    { プロパティ : 値 ; }
a:visited { プロパティ : 値 ; }
a:hover   { プロパティ : 値 ; }
a:active  { プロパティ : 値 ; }
</pre>
<p>ユーザー（訪問者）のウェブページに対するアクションに応じてダイナミックに変化させる疑似クラスのひとつで、<code>a</code>要素がセレクタとなり、アンカー内容のリンクボタンに対するユーザーのアクションによって変化します。セレクタとなる要素に続けてコロン（<code>:</code>）をつけて既定のクラス名を指定します。クラス名には、&quot;<code>link</code>&quot;, &quot;<code>visited</code>&quot;, &quot;<code>hover</code>&quot;, &quot;<code>active</code>&quot; の4つがあります。これらは <code>a</code>要素にあらかじめ既定されたクラス名であるため定義済みクラスとも呼ばれます。</p>
<p>この場合の <code>:link</code>疑似クラスは未アクセスのリンクを表し、<code>:visited</code>疑似クラスはアクセス済みのリンクを表し、<code>:active</code>疑似クラスは要素をクリックしてアクティブになっている状態を表し、<code>:hover</code>疑似クラスは要素にマウスポインタが合わさっている状態を表しています。順番は <code>:link</code>, <code>:visited</code>, <code>:hover</code>, <code>:active</code> の順に指定するように決められています。</p>
<pre>
a:link    { color : #00f ; text-decoration : none ; }
a:visited { color : #369 ; text-decoration : none ; }
a:hover   { color : #f00 ; text-decoration : underline ; }
a:active  { color : #f60 ; text-decoration : underline ; }
</pre>
<p>また、<code>p a:link { property: value; }</code> のように<a href="selector#Descendant">子孫セレクタ</a>の記述を行えば、<code>p</code>要素内のリンクボタンにのみスタイルを適用することもできます。</p>
<p>なお <code>:hover</code>疑似クラスと <code>:active</code>疑似クラスについては、リンクに関する疑似クラスではなく、動的な疑似クラスに分類されており、<code>a</code>要素をセレクタとする以外にも、どのような要素もセレクタに指定することができます。ただし、Windows版Internet Explorer 6 と Macintosh版Internet Explorer 5 は <code>a</code>要素以外に指定された <code>:hover</code>疑似クラス, <code>:active</code>疑似クラスに対応していません。Windows版Internet Explorer 7 より対応しています。</p>
<pre>
td:hover { background : orange ; }
</pre>
<p>たとえば、<code>td</code>要素をセレクタにすれば、何十行にもわたる大きな表を閲覧している場合、今どのセルの部分を参照しているのかをカーソル（ポインタ）が合わさった時に背景色を変化させることで、視覚的にわかりやすくする効果があります。</p>
<dl>
<dt>Windows版Internet Explorer</dt>
<dd>Windows版Internet Explorer 6 は <code>a</code>要素以外に指定された <code>:hover</code>疑似クラス, <code>:active</code>疑似クラスに対応していません。</dd>
<dd>Windows版Internet Explorer 7 より <code>:hover</code>疑似クラス, <code>:active</code>疑似クラスをすべての要素のセレクタとして指定することができます。</dd>
<dt>Firefox</dt>
<dd>○</dd>
<dt>Opera</dt>
<dd>○</dd>
<dt>Safari</dt>
<dd>○</dd>
<dt>Macintosh版Internet Explorer 5</dt>
<dd><code>a</code>要素以外に指定された <code>:hover</code>疑似クラス, <code>:active</code>疑似クラスには対応していません。</dd>
</dl>
<h2 id="focus">要素が選択された場合に適用</h2>
<pre>
要素:focus { プロパティ : 値 ; }
</pre>
<p><code>:focus</code>疑似クラスは、<a href="../../xhtml/dic/form"><code>form</code>要素</a>のコントロール部品となっている <a href="../../xhtml/dic/input"><code>input</code>要素</a>や <a href="../../xhtml/dic/textarea"><code>textarea</code>要素</a>などに対して、フォーカス（テキストを入力できる状態）を受け取っている時にのみスタイルを適用することができます。</p>
<pre>
input[type=&quot;text&quot;]:focus,textarea:focus { background : pink ; }
</pre>
<p><code>input[type=&quot;text&quot;]:focus</code> のように疑似クラスや疑似要素は、様々な<a href="selector">セレクタ</a>と組み合わせて指定することができます。</p>
<dl>
<dt>Windows版Internet Explorer</dt>
<dd>Windows版Internet Explorer 6 は <code>:focus</code>疑似クラスに対応していません。</dd>
<dd>Windows版Internet Explorer 7 は <code>:focus</code>疑似クラスに対応していません。</dd>
<dt>Firefox</dt>
<dd>○</dd>
<dt>Opera</dt>
<dd>○</dd>
<dt>Safari</dt>
<dd>○</dd>
<dt>Macintosh版Internet Explorer 5</dt>
<dd>○</dd>
</dl>
<h2 id="first-child">他の要素の最初の子要素に適用</h2>
<pre>
要素:first-child { プロパティ : 値 ; }
</pre>
<p><code>:first-child</code>疑似クラスは、指定の要素が他の要素の最初の子要素である場合にのみ、スタイルを適用することができます。</p>
<pre>
p.note:first-child { text-indent : 0 ; }
</pre>
<dl>
<dt>Windows版Internet Explorer</dt>
<dd>Windows版Internet Explorer 6 は <code>:first-child</code>疑似クラスに対応していません。</dd>
<dd>Windows版Internet Explorer 7 より <code>:first-child</code>疑似クラスに対応しています。</dd>
<dt>Firefox</dt>
<dd>○</dd>
<dt>Opera</dt>
<dd>○</dd>
<dt>Safari</dt>
<dd>○</dd>
<dt>Macintosh版Internet Explorer 5</dt>
<dd>○</dd>
</dl>
<h2 id="lang">要素の言語コードによって適用</h2>
<pre>
要素:lang(言語コード) { プロパティ : 値 ; }
</pre>
<p><code>:lang</code>疑似クラスは、指定の要素がどの<a href="../../others/data/langcode">言語コード</a>で記述されているかによって、スタイルを適用することができます。<a href="selector#Attribute">属性セレクタ</a>を使うことでも同じ効果を出すことができますが、<code>:lang</code>疑似クラスの場合は下記のような場合でもスタイルを適用できます。</p>
<pre>
p:lang(fr) { color : navy ; } /* :lang疑似クラスでの指定 */
p[lang=&quot;fr&quot;] { color : navy ; }  /* 属性セレクタでの指定 */
......
&lt;blockquote lang=&quot;fr&quot;&gt;&lt;p&gt;Bonjour, Monsieur...&lt;/p&gt;&lt;/blockquote&gt;
</pre>
<p>上記のような場合、属性セレクタによる指定では、<code>p</code>要素自体に直接 <code>lang=&quot;fr&quot;</code> の属性値があるわけではないので、スタイルの適用対象とはなりませんが、<code>:lang</code>疑似クラスを使えば、<code>p</code>要素に直接言語コードが指定されていなくとも、<a href="../../others/data/user_agent"><abbr title="User Agent">UA</abbr></a> が言語コードを判別できればスタイルの適用対象となります。</p>
<dl>
<dt>Windows版Internet Explorer</dt>
<dd>Windows版Internet Explorer 6 は <code>:lang</code>疑似クラスに対応していません。</dd>
<dd>Windows版Internet Explorer 7 は <code>:lang</code>疑似クラスに対応していません。</dd>
<dt>Firefox</dt>
<dd>○</dd>
<dt>Opera</dt>
<dd>○</dd>
<dt>Safari</dt>
<dd>○</dd>
<dt>Macintosh版Internet Explorer 5</dt>
<dd>○</dd>
</dl>
<h2 id="first-letter">要素の1文字目だけに適用</h2>
<pre>
要素:first-letter { プロパティ : 値 ; }
</pre>
<p><code>:first-letter</code>疑似要素は、要素内のテキストの最初の1文字目だけにスタイルを適用することができます。</p>
<pre>
h1:first-letter { font-size : 180% : }
......
&lt;h1&gt;疑似クラス・疑似要素&lt;/h1&gt;
</pre>
<p><code>h1</code>要素内の最初のテキスト（1文字目）は「疑」であるため、「疑」の部分だけに親要素に指定されているフォントサイズより 1.8倍の指定が適用されます。</p>
<dl>
<dt>Windows版Internet Explorer</dt>
<dd>○</dd>
<dt>Firefox</dt>
<dd>○</dd>
<dt>Opera</dt>
<dd>○</dd>
<dt>Safari</dt>
<dd>○</dd>
<dt>Macintosh版Internet Explorer 5</dt>
<dd>一応対応していますが、要素内の最初のテキストに半角アルファベット以外が使用されている場合、文字化けを起こします。</dd>
</dl>
<h2 id="first-line">要素の1行目だけに適用</h2>
<pre>
要素:first-line { プロパティ : 値 ; }
</pre>
<p><code>:first-line</code>疑似要素は、行内ブロックが満たされて最初の折り返しが行われるか、または <code>br</code>要素で強制改行されるまでの1行目だけにスタイルを適用することができます。つまり、最初の1行目の内容がひとつの <abbr title="HyperText Markup Language">HTML</abbr> の要素としてスタイルの適用対象となります。ページ幅が指定されていない状態での折り返しの場合は、表示域のサイズが変更されると、それにあわせてスタイルの適用対象となる1行目のテキスト量も増減します。</p>
<pre>
h2 { font-size : 120% ; }
h2:first-line { font-size : 150% ; }
......
&lt;h2&gt;悪性脳腫瘍との闘い&lt;br /&gt;-奇跡の序章-&lt;/h2&gt;
</pre>
<p>このサンプルでは、「-奇跡の序章-」の部分のテキストは <code>br</code>要素による強制改行が行われているために、<code>h2</code>要素をセレクタとして親要素に指定されたフォントサイズより1.2倍の指定が適用されますが、1行目の「悪性脳腫瘍との闘い」の部分には親要素に指定されたフォントサイズより計1.8倍（120% * 150%）の指定が適用されることになります。</p>
<dl>
<dt>Windows版Internet Explorer</dt>
<dd>○</dd>
<dt>Firefox</dt>
<dd>○</dd>
<dt>Opera</dt>
<dd>○</dd>
<dt>Safari</dt>
<dd>○</dd>
<dt>Macintosh版Internet Explorer 5</dt>
<dd>○</dd>
</dl>
<h2 id="content">要素の前後に文字や画像を追加</h2>
<pre>
要素:before { content : 値 ; }
要素:after  { content : 値 ; }
</pre>
<p><code>:before</code>疑似要素と <code>:after</code>疑似要素 は、<a href="../generating_content/content"><code>content</code>プロパティ</a>とあわせて、指定の要素の前後に仮想的な文字列や画像を追加することができます。</p>
<pre>
a[href]:before { content : url(arrow.gif) ; }
</pre>
<p>上記のサンプルでは、リンクボタン（アンカー内容）の前に &quot;<code>arrow.gif</code>&quot; という画像を追加しています。このようにリンク部分に画像などを仮想的にレンダリング（描写）させることで、リンク部分を視覚的に目立たせて、ユーザーを誘導する効果的な利用法もあります。詳しい設定方法は、<a href="../generating_content/content"><code>content</code>プロパティ</a>を参照してください。</p>
<dl>
<dt>Windows版Internet Explorer</dt>
<dd>Windows版Internet Explorer 6 は <code>:before</code>疑似要素, <code>:after</code>疑似要素に対応していません。</dd>
<dd>Windows版Internet Explorer 7 は <code>:before</code>疑似要素, <code>:after</code>疑似要素に対応していません。</dd>
<dt>Firefox</dt>
<dd>○</dd>
<dt>Opera</dt>
<dd>○</dd>
<dt>Safari</dt>
<dd>○</dd>
<dt>Macintosh版Internet Explorer 5</dt>
<dd><code>:before</code>疑似要素, <code>:after</code>疑似要素のどちらにも対応していません。</dd>
</dl>
<script type="text/javascript" src="/script/adsense2"></script>
<ul class="link">
<li class="prev"><a href="http://w3g.jp/css/guide/selector" rel="prev" accesskey="P">セレクタ（selector）</a><kbd>P</kbd></li>
<li class="gotop"><a href="#skip">Go to top</a></li>
<li class="next"><kbd>N</kbd><a href="http://w3g.jp/css/guide/cascading_order" rel="next" accesskey="N">段階化の順序</a></li>
</ul>
<dl id="information">
<dt>現在位置</dt>
<dd id="location"><ol>
<li class="first"><a href="http://w3g.jp/"><abbr title="World Wide Web Guide">W3G</abbr></a></li>
<li><a href="http://w3g.jp/css/">CSS</a></li>
<li><a href="http://w3g.jp/css/guide/">前提知識</a></li>
<li>疑似クラスと疑似要素</li>
</ol></dd>
<dt>ナビゲーション</dt>
<dd id="nav"><ul><li><a href="/xhtml/">XHTML</a></li><li><a href="/css/" class="selected">CSS</a></li><li><a href="/javascript/">JavaScript</a></li><li><a href="/webstandards/">Web標準</a></li><li><a href="/seo/">SEO</a></li><li><a href="/others/">Others</a></li><li><a href="/blog/">Blog</a></li></ul><address><a href="http://w3g.jp/">World Wide Web Guide</a></address></dd>
<dt class="status">ステータス情報</dt>
<dd><dl>
<dt>作者</dt><dd><a href="/author">上田 遼</a></dd>
<dt>公開</dt><dd><span class="date">2006-01-29T09:27:37+09:00</span></dd>
<dt>更新</dt><dd><span class="date">2008-12-29T04:30:36+09:00</span></dd>
<dt><abbr title="Uniform Resource Identifier">URI</abbr></dt><dd><code class="URI">http://w3g.jp/css/guide/pseudo</code></dd>
</dl></dd>
<dt>検索</dt>
<dd id="search">
<form action="/srch/msearch.cgi" accept-charset="utf-8"><p>
<input type="text" size="35" name="query" value="" tabindex="1" accesskey="I" />
<kbd>I</kbd>
<input type="submit" value="Search" tabindex="2" accesskey="S" />
<kbd>S</kbd>
<input type="hidden" name="hint" value="ひらがな" />
<input type="hidden" name="index" value="" />
<input type="hidden" name="config" value="" />
</p></form>
</dd>
</dl>
<p class="promotion">直近の制作実績等：<a href="http://www.ohs.ac.jp/">大阪人間科学大学</a> <strong>New!</strong> / <a href="http://www.kun-ei.ac.jp/">大阪薫英女子短期大学</a> <strong>New!</strong> / <a href="https://www.816photo.jp/okuni/">セキスイハイム みんなのお国じまん</a> <strong>New!</strong></p>
<script type="text/javascript" src="/script/count" charset="utf-8"></script>
<script type="text/javascript">
var bid = 3;
var title = 'W3G'
var oid = '197';
var at = 'entry';
</script>
<script type="text/javascript" src="http://w3g.jp/tracking.js"></script>
<noscript>
<img src="http://w3g.jp/tracking/access.php?bid=3&amp;oid=197&amp;at=entry&amp;title=W3G" width="1" height="1" alt="" />
</noscript>
</body>
</html>
