<?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="CSS はスタイルを適用する対象であるセレクタ（selector）とスタイル情報を設定する宣言ブロックの2つから成り立ちます。セレクタには全称セレクタ,クラスセレクタ,IDセレクタ,子孫セレクタ,子供セレクタ,隣接セレクタ,属性セレクタなどがあります。" />
<meta name="keywords" content="selector,CSS2.1,適用対象,全称セレクタ,クラスセレクタ,IDセレクタ,子孫セレクタ,子供セレクタ,隣接セレクタ,属性セレクタ" />
<title>セレクタ（selector） 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/outline" title="CSS概論" />
<link rel="next" href="http://w3g.jp/css/guide/pseudo" 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>セレクタ（selector）</h1>
<script type="text/javascript" src="/script/adsense"></script>
<p><abbr title="Cascading Style Sheets">CSS</abbr> はスタイルを適用する対象である<strong>セレクタ</strong>（selector）とスタイル情報を設定する<strong>宣言ブロック</strong>の2つから成り立っており、宣言ブロックの中身は空にするか、<strong>プロパティ</strong>（property）と<strong>値</strong>（value）をセットにした宣言を記述します。この構成を CSS の<strong>ルールセット</strong>（規則集合）と呼びます。</p>
<p><img src="../../img/ruleset.gif" width="188" height="61" alt="Cascading Style Sheets のルールセットの基本形を示した図" style="float:right;" />ルールセットはまず先頭にスタイルを適用する対象であるセレクタを記述し、続いて左中括弧（<code>{</code>）から始り対応する右中括弧（<code>}</code>）で宣言全体を囲むようにします。そして、中括弧（<code>{ }</code>）の中に0個以上の宣言を記述していきます（空でも良い）。宣言はプロパティと値をコロン（<code>:</code>）で仕切り、最後に値の指定が終わったことをセミコロン（<code>;</code>）で示します。図のルールセットであれば、<code>p</code>要素といった具体的な要素型名にのみ宣言した前景色を赤色にするスタイルが適用されます。セレクタはこの他にも条件を加えたもの（たとえば特定の属性をもつ）など、いくつかのパターンが用意されています。以下、<abbr title="Cascading Style Sheets, level 2 revision 1">CSS2.1</abbr> で定義されているセレクタについて解説します。 </p>
<h2 id="Type">特定の要素に適用</h2>
<pre>要素 { プロパティ : 値 ; }</pre>
<p>これは要素ごとに適用するスタイルを管理できるベーシックな方法でスタイル適用の基本形になります。セレクタとして <code>p</code>要素や <code>div</code>要素、<code>span</code>要素などの具体的な要素型名を指定します。指定された要素だけがスタイル宣言のレイアウトを適用する対象となります。</p>
<p>たとえば、<code>h1 { color : #fff ; }</code> と記述した場合、<code>h1</code>要素にのみ「文字色：白;」というスタイルが適用されます。このセレクタをタイプセレクタ（Type selectors）と呼びます。</p>
<h2 id="Descendant">要素内に含まれる特定要素に適用</h2>
<pre>親要素 子孫要素 { プロパティ : 値 ; }</pre>
<p>セレクタとして親要素（selector1）に続けて半角スペースをあけて子孫要素（selector2）を指定します。これで親要素（selector1）に含まれる子孫要素（selector2）がスタイルを適用する対象となります。この記述方法は「段落内の強調する箇所にのみ、目立つように文字の色を変える」といった、文脈に合わせた使い方をする場合に有効です。</p>
<p>たとえば、<code>p strong { color : #f00 ; }</code> と記述した場合、通常の <code>strong</code>要素には何のスタイルも適用されませんが、<code>&lt;p&gt;</code>&quot; と &quot;<code>&lt;/p&gt;</code>&quot; の間にある <code>strong</code>要素にのみ「文字色：赤色;」というスタイルが適用されます。このセレクタを子孫セレクタ（Descendant selectors）と呼びます。</p>
<h2 id="Universal">すべての要素に適用</h2>
<pre>* { プロパティ : 値 ; }</pre>
<p>セレクタとしてアスタリスク（<code>*</code>）を指定した場合、すべての要素に対してスタイルが適用されます。また、これを特定の要素と組み合わせて指定することで、「特定の要素に含まれるすべての要素」にスタイルを適用できます。</p>
<p>たとえば、<code>div * { color: #f00 ; background-color : #fc0 ; }</code> と記述した場合、div要素そのものにスタイルが適用されるのではなく、<code>&lt;div&gt;</code>&quot; と &quot;<code>&lt;/div&gt;</code>&quot; 間にある全ての要素（<code>h1</code>, <code>h2</code>, <code>p</code>, <code>strong</code> など）にスタイルが適用されます。</p>
<p>セレクタは、要素に続いて半角スペースをいれてアスタリスク（<code>*</code>）を記述します。この場合、スタイルが適用されるのは、指定した要素そのものではなく、指定された要素を親要素とする全ての子孫要素が適用対象となります。このセレクタを全称セレクタ（Universal selectors）と呼びます。</p>
<h2 id="Grouping">要素をグループ化して適用</h2>
<pre>要素1,要素2,要素3,… { プロパティ : 値 ; }</pre>
<p>セレクタとして、具体的な要素型名をカンマ（<code>,</code>）で区切りながら続けて指定し、複数の要素をひとつのグループにまとめて同じスタイルを適用できるようにします。これをセレクタのグループ化と呼びます。これにより指定された複数の要素型名（要素1,要素2,要素3,…）の全てが適用対象となり、同じスタイルが適用されます。</p>
<p>たとえば、<code>em,i { font-style : normal ; font-weight : bold ; }</code> と記述した場合、通常は斜体で表示される <code>em</code>要素と <code>i</code>要素の表示は、デフォルトの <code>strong</code>要素や <code>b</code>要素と同じ視覚的な体裁になります。これは <code>em</code>要素と <code>i</code>要素に対して「文字書体：標準; 文字の太さ：太字;」というスタイルが適用され、これを解釈する <a href="../../others/data/user_agent"><abbr title="User Agent">UA</abbr></a> ではデフォルトの <code>strong</code>要素や <code>b</code>要素と同じ表示になります。この複数の要素をひとつにまとめてスタイルを適用することをグループ化（Grouping）と呼びます。</p>
<h2 id="Class">クラス名（名称）を指定して適用</h2>
<pre>
.クラス名 { プロパティ : 値 ; }
要素.クラス名 { プロパティ : 値 ; }
</pre>
<p>セレクタとして、ピリオド（<code>.</code>）に続けてクラス名を指定します。これにより <code>class=&quot;クラス名&quot;</code> を追加された要素のみがスタイルを適用する対象となります。このセレクタをクラスセレクタ（Class selectors）と呼びます。この指定は、要素の限定をせずに使えるスタイルを指定したり、スタイルをグループ分けするのに役立ちます。また、これを特定の要素と組み合わせて指定することで、特定の要素で指定したクラス名をもつものに限定したスタイルを適用することもできます。</p>
<p>たとえば、<code>.heading { background-color : #ff0 ; }</code> と記述した場合、<code>&lt;th class=&quot;heading&quot;&gt;…&lt;/th&gt;</code> や <code>&lt;h1 class=&quot;heading&quot;&gt;…&lt;/h1&gt;</code> のように、要素型名に関係なく <code>class=&quot;heading&quot;</code> をもつ要素全てに「背景色：黄色;」のスタイルが適用されます。</p>
<p>これに対して、<code>h1.heading { background-color : #ff0 ; }</code> と記述した場合、<code>&lt;h1 class=&quot;heading&quot;&gt;…&lt;/h1&gt;</code> のように <code>h1</code>要素に <code>class=&quot;heading&quot;</code> が指定されている場合にのみ「背景色：黄色;」のスタイルが適用されます。同じように <code>class=&quot;heading&quot;</code> をもつ <code>th</code>要素（<code>&lt;th class=&quot;heading&quot;&gt;…&lt;/th&gt;</code> があっても、この場合はスタイルの適用対象が <code>h1</code>要素にのみ限られているため <code>th</code>要素に対する指定は無効です。</p>
<dl class="links">
<dt>関連</dt>
<dd><a href="../../xhtml/dic/class"><code>class</code>属性</a></dd>
</dl>
<h2 id="ID">ID（名称）を指定して適用</h2>
<pre>
#ID名 { プロパティ : 値 ; }
要素#ID名 { プロパティ : 値 ; }
</pre>
<p>セレクタとしてハッシュ（<code>#</code>）に続けてID名を指定します。 これで <code>id=&quot;ID名&quot;</code> を追加された要素だけが、スタイルを適用する対象となります。このセレクタを IDセレクタ（ID selectors）、または一意セレクタと呼びます。要素に対して <code>id</code>属性を指定する方法は、<code>class</code>属性と同じですが、<code>class</code>属性は、1つの文書内で同じ <code>class</code>属性の値を複数指定することが可能です。しかし、<code>id</code>属性は1つの文書内で一意でなければならず、文書内で複数の要素が同じ ID名をもつことは文法違反となります。つまり 1つの文書内において同じ ID名を複数（2つ以上）もつ（指定する）ことは許されません。</p>
<p>たとえば、<code>#menu { width: 160px ; color : #f00 ; }</code> と記述した場合、<code>&lt;ul id=&quot;menu&quot;&gt;…&lt;/ul&gt;</code> のように <code>id=&quot;menu&quot;</code> をもつ要素にのみ「横幅：160px; 文字色：赤色;」のスタイルが適用されます。<abbr title="HyperText Markup Language">HTML</abbr> の論理構造上、同じ文書内に複数の同じ ID名があることは文法違反となるため、同じ文書内に <code>id=&quot;menu&quot;</code> をもう一度指定することができないことに注意してください。また、ID名とクラス名を区別するので、ID名ですでに「<code>#menu</code>」を使っていても、クラス名に「<code>.menu</code>」を使用することは可能です。</p>
<dl class="links">
<dt>関連</dt>
<dd><a href="../../xhtml/dic/id"><code>id</code>属性</a></dd>
</dl>
<h2 id="Child">直接の子要素に適用</h2>
<pre>
親要素 &gt; 子要素 { プロパティ : 値 ; }
</pre>
<p>セレクタとして親要素（selector1）に続けて大なり（<code>&gt;</code>）を子要素（selector2）の前につけて指定します。<a href="#Descendant">子孫セレクタ</a>と違うのは、特定の親要素の直接の子要素にのみスタイルを適用できることです。このセレクタを子供セレクタ（Child selectors）と呼びます。</p>
<p>たとえば、<code>body &gt; p { line-height : 1.5 ; }</code> と記述した場合、&quot;<code>&lt;body&gt;</code>&quot; と &quot;<code>&lt;/body&gt;</code>&quot; の間にある直接の子要素となる <code>p</code>要素にのみ「行の高さ：1.5倍;」のスタイルが適用され、<code>body</code>要素間にさらに <code>div</code>要素で囲まれている <code>p</code>要素の場合は、<code>body</code>要素の直接の子要素とはならないためスタイルが適用されません。</p>
<p>*Windows版Internet Explorer 6 と Macintosh版Internet Explorer 5 はともに子供セレクタに対応していません。Windows版Internet Explorer 7 より対応しています。</p>
<h2 id="Adjacent_sibling">2つの要素の前後関係で適用</h2>
<pre>
要素1 + 要素2 { プロパティ : 値 ; }
</pre>
<p>セレクタとして2つ以上の要素をプラス（<code>+</code>）で区切って指定します。これで要素1と要素2が隣接している場合にのみ、要素2にスタイルを適用することができます。要素の並び方によって、装飾を施したい場合に有効です。このセレクタを隣接セレクタ（Adjacent sibling selectors）と呼びます。</p>
<p>たとえば、<code>h1 + h2 { margin-top : 1.5em ; }</code> と記述した場合、<code>&lt;h1&gt;…1&lt;/h1&gt;&lt;h2&gt;…2&lt;/h2&gt;</code> のように <code>h1</code>要素と <code>h2</code>要素が隣接している場合の <code>h2</code>要素にのみ「上のマージン：1.5倍;」のスタイルが適用され、その他の <code>h2</code>要素は <code>h1</code>要素と隣接していなければスタイルが適用されることはありません。</p>
<p>*Windows版Internet Explorer 6 と Macintosh版Internet Explorer 5 はともに隣接セレクタには対応していません。Windows版Internet Explorer 7 より対応しています。</p>
<h2 id="Attribute">属性名・属性値による適用</h2>
<pre>
要素[属性名] { プロパティ : 値 ; }
要素[属性名=&quot;属性値&quot;] { プロパティ : 値 ; }
要素[属性名~=&quot;属性値&quot;] { プロパティ : 値 ; }
要素[属性名|=&quot;属性値&quot;] { プロパティ : 値 ; }
</pre>
<p>セレクタとして要素に続いて大括弧（<code>[ ]</code>）で属性名、さらには属性値を括って指定します。これで要素についている属性によってスタイルの適用対象を指定することができます。このセレクタを属性セレクタ（Attribute selectors）と呼びます。属性セレクタの記述方法には、以下の4通りがあります。</p>
<dl>
<dt>要素[属性名] </dt>
<dd><code>input[type]</code> のように <code>type</code>属性がついている <code>input</code>要素にのみスタイルを適用します</dd>
<dt>要素[属性名=&quot;属性値&quot;]</dt>
<dd><code>input[type=&quot;submit&quot;]</code> のように <code>type</code>属性の値が &quot;<code>submit</code>&quot; の <code>input</code>要素にのみスタイルを適用します</dd>
<dt>要素[属性名~=&quot;属性値&quot;]</dt>
<dd><code>a [rel~=&quot;next&quot;]</code> のように <code>rel</code>属性の値に &quot;<code>next</code>&quot; をもつ、または値が複数で半角スペースで区切られている <code>rel</code>属性の値に &quot;<code>next</code>&quot; をもつ場合（<code>rel=&quot;next section&quot;</code>）の <code>a</code>要素にのみスタイルを適用します</dd>
<dt>要素[属性名|=&quot;属性値&quot;]</dt>
<dd><code>p[xml:lang|=&quot;en&quot;]</code> のように <code>xml:lang</code>属性の値に &quot;<code>en</code>&quot;、またはハイフン（<code>-</code>）で区切られている &quot;<code>en-us</code>&quot; のような値をもつ <code>p</code>要素にのみスタイルを適用します</dd>
</dl>
<p>*Windows版Internet Explorer 6 と Macintosh版Internet Explorer 5 はともに属性セレクタには対応していません。Windows版Internet Explorer 7 より対応しています。</p>
<script type="text/javascript" src="/script/adsense2"></script>
<ul class="link">
<li class="prev"><a href="http://w3g.jp/css/guide/outline" rel="prev" accesskey="P">CSS概論</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/pseudo" 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>セレクタ（selector）</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:12:34+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/selector</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 = '196';
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=196&amp;at=entry&amp;title=W3G" width="1" height="1" alt="" />
</noscript>
</body>
</html>
