Chapter04 セレクタとボックス

概要と目標 便利なセレクタと
ボックスの概念を理解する。

CSSの様々なセレクタやボックスの概念について学習しよう。

今回のゴール

RERUN

様々なセレクタ セレクタは、どこに適用するかを理解する。

CSSのセレクタには、Chapter01で紹介した基本セレクタ以外にも、
属性セレクタや、擬似クラス疑似要素結合子など、 便利なセレクタがいっぱいある。

基本セレクタ

基本はタイプセレクタ、classセレクタ、IDセレクタ。

基本セレクタ
セレクタ 適用対象 詳細度 IE6 IE7 IE8
* ユニバーサルセレクタ。
全称セレクタとも呼ばれ、全ての要素に適用
(例: * { color: red })
-
要素名 タイプセレクタ。
【要素名】の要素に適用
(例: p { color: red })
要素名.クラス名 classセレクタ。
class属性に【クラス名】を持つ、【要素名】に適用
(例: div.main { color: red })
要素名を省略した場合、「*」を指定したことと同等となり、
そのclass属性を持つ全ての要素 に適用
(例: .main { color: red })
要素名#ID名 IDセレクタ。
ID属性に【ID名】を持つ、【要素名】に適用
(例: div#content { color: red })
要素名を省略した場合、「*」を指定したことと同等となり、
そのID属性を持つ全ての要素に 適用される
(例: #content { color: red })

属性セレクタ

属性セレクタを使えば、
特定の属性が指定されている要素や、 特定の属性に特定の属性値が指定されている要素など、
属性が指定されている要素に対してスタイルを適用出来る。

属性セレクタ
セレクタ 適用対象 詳細度 IE6 IE7 IE8
要素[属性名] 【属性名】の属性が指定されている要素に適用
(例: p[lang] { color: red })
要素[属性名="属性値"] 【属性名】の属性に【属性値】が指定されている要素に適用
(例: p[lang="en"] { color: red })
要素[属性名~="属性値"] 【属性名】の属性の値が半角スペースで区切られた項目であり、そのいずれ かが、【属性値】と一致している要素に適用
(例: p[lang~="en-us"] { color: red })
要素[属性名|="属性値"] 【属性名】の属性の値がハイフンで区切られた値であり、その前半が、【属性値】と一致している要素に適用
(例: p[lang|="en"] { color: red })
要素[属性名^="属性値の始め"] 【属性名】の属性が【属性値の始め】から始まる要素に適用 CSS3 新
(例: a[href^="http"] { color: red })
要素[属性名$="属性値の終り"] 【属性名】の属性が【属性値の終り】で終わる要素に適用 CSS3 新
(例: a[href$="com"] { color: red })
要素[属性名*="属性値の一部"] 【属性名】の属性に【属性値の一部】を含む要素に適用 CSS3 新
(例: a[href="product"] { color: red })

擬似クラス

擬似クラスは、要素が特定の状況の時にスタイルを適用するセレクタで、
例えば、その要素にマウスが乗った時や、マウスがクリックされた時などがある。
他にも、先頭の子要素として配置された時など特定の場所に配置された時だけスタイルを適用するものある。

リンク擬似クラス、ユーザーアクション擬似クラス
セレクタ 適用対象 詳細度 IE6 IE7 IE8
要素:link 【要素】のリンク先をまだ訪問していない時に適用
(例: a:link { color: red })
要素:visited 【要素】のリンク先を既に訪問済みの時に適用
(例: a:visited { color: red })
要素:hover 【要素】にカーソルが乗っている時に適用
(例: a:hover { color: red })
要素:active 【要素】をクリック中の時に適用
(例: a:active { color: red })
要素:focus 【要素】がフォーカスされている時に適用
(例: input:focus { color: red })
構造擬似クラス
セレクタ 適用対象 詳細度 IE6 IE7 IE8
要素:first-child 【要素】が最初の子要素の時に適用
(例: h2:first-child { color: red })
要素:last-child 【要素】が最後の子要素の時に適用 CSS3 新
(例: p:last-child { color: red })
要素:first-of-type 子要素の中で最初の【要素】に適用 CSS3 新
(例: p:first-of-type { color: red })
要素:last-of-type 子要素の中で最後の【要素】に適用 CSS3 新
(例: p:last-of-type { color: red })
要素:nth-child(式) 【要素】が先頭から【式】(○個目)に一致する子要素の時に適用 CSS3 新
(例: p:nth-child(2n+1) { color: red })
要素:nth-last-child(式) 【要素】が最後から【式】(○個目)に一致する子要素の時に適用 CSS3 新
(例: p:nth-last-child(2n+1) { color: red })
要素:nth-of-type(式) 先頭から【式】(○個目)に一致する【要素】に適用 CSS3 新
(例: p:nth-of-type(2n+1) { color: red })
要素:nth-last-of-type(式) 最後から【式】(○個目)に一致する【要素】に適用 CSS3 新
(例: p:nth-last-of-type(2n+1) { color: red })
要素:only-child 【要素】が唯一の子要素の時に適用 CSS3 新
(例: p:only-child { color: red })
要素:only-of-type 子要素の中で唯一の【要素】に適用 CSS3 新
(例: a:only-of-type { color: red })
要素:root ルート要素(html要素)に適用 CSS3 新
(例: :root { color: red })
要素:empty 【要素】の中が空の時に適用 CSS3 新
(例: p:empty { color: red })
式は、「○個目から△個おき」を示すもので、基本的には、「an+b」という形式で表す。
「n」は 0 から 1 ずつ増える整数。「a」と「b」の部分に整数を当てはめて、「a × n + b」の式を作る。
例えば、「2n+1」という式の場合、「n」は最初 0 なので、「2 × 0 + 1」で「1」となり、
次は、「n」が1になるので、「2 × 1 + 1」で「3」となり、その次は、「n」が「2」になるので、
「2 × 2 + 1」で「5」となり、奇数個目(1個目から2個おき)を表す式となる。
また、「an」の部分を省略して、特定の個数目の要素にだけを表すことも可能。
なお、奇数と偶数に関しては、「odd(奇数)、「even(偶数)というキーワードも使える。
UI要素状態疑似クラス
セレクタ 適用対象 詳細度 IE6 IE7 IE8
要素:checked 【要素】(ラジオボタンやチェックボックス)が選択されている時に適用 CSS3 新
(例: input:checked { color: red })
要素:disabled 【要素】がdisabled属性で無効になっている時に適用 CSS3 新
(例: input:disabled { color: red })
要素:enabled 【要素】が有効の時に適用 CSS3 新
(例: input:enabled { color: red })
その他の疑似クラス
セレクタ 適用対象 詳細度 IE6 IE7 IE8
要素:lang(言語コード) 【言語コード】の言語に設定されている【要素】に適用
(例: p:lang(ja) { color: red })
要素:target 「#○○」が指定されているリンクをクリックした際の対象となる【要素】に適用 CSS3 新
(例: div:target { color: red })
要素:not(セレクタ) 【セレクタ】以外の【要素】に適用 CSS3 新
(例: p:not(.text) { color: red })

疑似要素

疑似要素は、要素内の情報を追加したり、
先頭の行などの範囲にスタイルを適用する。

疑似要素
セレクタ 適用対象 詳細度 IE6 IE7 IE8
要素::first-line 【要素】(ブロックレベル要素)の1行目に適用
(例: p::first-line{ color: red })
要素::first-letter 【要素】(ブロックレベル要素)の1文字目に適用
(例: p::first-letter { color: red })
要素::before 【要素】の内容直前にコンテンツを追加
(例: p::before { content: ''})
要素::after 【要素】の内容直後にコンテンツを追加
(例: p::after { content: ''})

※. IE8以下に対応する場合は、「:」を1つにする必要がある。


結合子

結合子は、セレクタを組み合わせる事で、複数の要素にスタイルを適用したり、
適用する要素を絞り込むことができる。

結合子
セレクタ 適用対象 IE6 IE7 IE8
要素A, 要素B 要素Aと要素Bにスタイルを適用
(例: h2, p{ color: red })
要素A 要素B 子孫セレクタ。要素Aの中に配置されている要素Bにスタイルを適用
(例: div p{ color: red })
要素A + 要素B 隣接セレクタ。要素Aに隣接している要素Bにスタイルを適用
(例: h2 + p{ color: red })
要素A > 要素B 要素Aに直接挟まれている要素Bにスタイルを適用
(例: ul > li{ color: red })
要素A ~ 要素B 【要素Aより後にある要素Bにスタイルを適用 CSS3 新
(例: h2 ~ p{ color: red })

様々なセレクタを使ってみよう。

  1. 「css-lessons」 › 「chapter04」 › 「selectors」フォルダ内の「index.html」をテキストエディタで開く
  2. HTMLの内容を確認
chapter04/selectors/index.html
<h1>セレクタの練習</h1>

<section id="box1">
  <h2>ボックス1</h2>
  <p>
    ここはp要素でマークアップされており、<br>
    親のsection要素にid属性「<em>box1</em>」が指定されています。<br>
    <a href="#">これはアンカーテキストです。</a>
  </p>
</section>
<!-- /#box -->

<section id="box2">
  <h2>ボックス2</h2>
  <p>
    ここはp要素でマークアップされており、<br>
    親のsection要素にid属性「<em>box2</em>」が指定されています。<br>
    <a href="#">これはアンカーテキストです。</a>
  </p>
</section>
<!-- /#box2 -->
  1. 「css-lessons」 › 「chapter04」 › 「selectors」フォルダ内の「style.css」をテキストエディタで開く
  2. 様々なセレクタを使って」スタイルを変更
chapter04/selectors/style.css
/* ===========================
  基本セレクタ
=========================== */
/* 全称セレクタ */
* {
  font-size: 100%;
}

/* ===========================
  擬似クラス
=========================== */
/* 未訪問の時 */
a:link {
  color: blue;
}

/* 訪問済みの時 */
a:visited {
  color: green;
}

/* マウスが乗った時 */
a:hover {
  color: red;
}

/* クリックしている時 */
a:active {
  text-decoration: none;
}

/* ===========================
  結合子
=========================== */
/* グループセレクタ */
h1, h2 {
  font-family: serif;
}

/* 子孫セレクタ */
#box1 p {
 color: #666;
}
  1. 上書き保存
  2. 「css-lessons」 › 「chapter04」› 「selectors」フォルダ内の「index.html」をダブルクリック。
  3. 様々なセレクタが適用されているかを確認
ブラウザでの表示例

RERUN


詳細度 どのセレクタを使うかで、
スタイルの優先度が変わる。

同じ適用対象に対して、複数箇所で異なる指定がされた場合の優先度のことを詳細度という。
詳細度はセレクタの種類によって決まっており、 より詳細度が高いセレクタのスタイルが適用される。
なお、結合子を使って複数のセレクタを使っている場合は、
それぞれのセレクタの数を数えて、もっとも詳細度が高いスタイルが適用される。
詳細度が同じ場合は、後から記述されたスタイルが適用される。

  1. !important
  2. インラインスタイル
  3. IDセレクタ
  4. クラスセレクタ、属性セレクタ、擬似クラス
  5. タイプセレクタ、疑似要素
  6. 全称セレクタ

詳細度の計算

セレクタを構成する種類ごとに数を数え、それによって作られた3桁の数が大きい方が優先度が高くなる。

3桁目 2桁目 1桁目
IDセレクタの数 classセレクタ、属性セレクタ、
擬似クラスの数
タイプセレクタ、疑似要素の数

ユニバーサルセレクタの数は計算しません。
「:not()」擬似クラスは、()内のセレクタの数はカウントしますが、「:not()」自身は擬似クラスとしては、カウントしません。

※.この3桁の数字の各桁は、たとえ該当するセレクタが10個以上あっても、繰り上がらないものとして考えます。
つまり、仮にクラスセレクタが10個以上あっても、IDセレクタが1つある方が詳細度は高くなります。


ボックスの概念 HTMLの要素は箱のような
ボックスになっている。

HTMLの要素はボックスと呼ばれる四角い領域がある。

ボックスの概念

widthプロパティ

width(ウィズ)は、ボックスの要素内容を表示する幅を指定するプロパティ。
主に、センタリングする要素や、横並びする要素に指定する。

初期値 値の継承 適用対象 相対値の基準
auto しない 全要素 (表の行、行グループ、非置換インライン要素を除く) 包含ブロックの幅
主な値
指定できる値 説明
auto 内容によって自動で合わせる
(ブロック:横幅一杯、インラインブロック:img要素は画像の幅、その他はブラウザによる)
実数 + 単位 実数に単位を付けて固定値を指定 (例: 690px)
パーセンテージ 親要素の幅に対する割合 (例: 50%)

widthプロパティを使ってみよう。

  1. 「css-lessons」 › 「chapter04」 › 「box」フォルダ内の「index.html」をテキストエディタで開く
  2. HTMLの内容を確認
chapter04/box/index.html
<header>
  <h1>ボックス関連のプロパティ</h1>
</header>
<main>
  <div class="container">
    <section class="section">
      <h2>セクション1</h2>
      <p>
        ここはp要素でマークアップされており、<br>
        親のsection要素のclass属性に「<em>section</em>」が指定されています。
      </p>
    </section>

    <section class="section">
      <h2>セクション2</h2>
      <p>
        ここはp要素でマークアップされており、<br>
        親のsection要素のclass属性に「<em>section</em>」が指定されています。
      </p>
    </section>
  </div>
  <!-- /.container-->
</main>
<footer>
  <p>ここはフッターです。</p>
</footer>
  1. 「css-lessons」 › 「chapter04」 › 「box」フォルダ内の「style.css」をテキストエディタで開く
  2. class名「container」の横幅を変更するCSSを記述
chapter04/box/style.css
body {
  background-color: #eee;
}

h1, h2 {
  font-size: 1em;
}

p {
  font-size: .875em;
}

header {
  background-color: #333;
  color: #fff;
}

footer {
  background-color: #333;
  color: #ccc;
}

.container {
  width: 90%;
}

.section {
  background-color: #fff;
}
  1. 上書き保存
  2. 「css-lessons」 › 「chapter04」› 「box」フォルダ内の「index.html」をダブルクリック。
  3. 横幅が変更されたかを確認
ブラウザでの表示例

RERUN


高さ heightプロパティ

height(ハイト)は、ボックスの要素内容を表示する高さを指定するプロパティ。
基本的にはあまり使用しない方が無難。

初期値 値の継承 適用対象 相対値の基準
auto しない 全要素 (表の行、行グループ、非置換インライン要素を除く) 包含ブロックの幅
主な値
指定できる値 説明
auto 内容によって自動で合わせる (ブロック:横幅一杯、インラインブロック:img要素は画像の幅、その他はブラウザよる)
実数 + 単位 実数に単位を付けて固定値を指定 (例: 320px)
パーセンテージ 親要素の幅に対する割合 (親要素の高さが指定されてない場合は「auto」になる)
例: 50%

heightプロパティを使ってみよう。

  1. 「css-lessons」 › 「chapter04」 › 「box」フォルダ内の「style.css」をテキストエディタで開く
  2. header要素」に高さ行間を指定
    (高さと同じ大きさの行間を指定すると天地の中央揃えが出来る。ただし文字が2行になる場合は不可。)
chapter04/box/style.css
body {
  background-color: #eee;
}

h1, h2 {
  font-size: 1em;
}

p {
  font-size: .875em;
}

header {
  background-color: #333;
  color: #fff;
  height: 48px;
  line-height: 48px;
}

footer {
  background-color: #333;
  color: #ccc;
}

.container {
  width: 90%;
}

.section {
  background-color: #fff;
}
  1. 上書き保存
  2. 「css-lessons」 › 「chapter04」› 「box」フォルダ内の「index.html」をダブルクリック。
  3. 高さが変更されたかを確認
ブラウザでの表示例

RERUN


間隔 marginプロパティ

margin(マージン)は、ボックスの外側の間隔を指定するプロパティ。
(margin-topmargin-rightmargin-bottommargin-leftのショートハンド)
ただし、上下に隣接するマージンがある場合は、相殺され大きい方の値だけが有効になる。

初期値 値の継承 適用対象 相対値の基準
0 しない 全要素 (表の行、行グループ、列、列グループ、セル要素を除く) 包含ブロックの幅
主な値
指定できる値 説明
auto 適切な値に置換えられる
実数 + 単位 実数に単位を付けて指定 (マイナスの値も許可されている)
(例: 40px
パーセンテージ 親要素の幅に対する割合 (例: 50%

値の数による適用場所の違い

  • 値が「1」つの場合は、「上下左右」全てに適用 ・・・ 例: margin: 10px;
  • 値が「2」つの場合は、「上下」、「左右」の順で適用 ・・・ 例: margin: 10px 20px;
  • 値が「3」つの場合は、「上」、「左右」、「下」の順で適用 ・・・ 例: margin: 10px 20px 5px;
  • 値が「4」つの場合は、「上」、「右」、「下」、「左」の順で適用 ・・・ 例: margin: 10px 20px 5px 15px;

marginプロパティを使ってみよう。

  1. 「css-lessons」 › 「chapter04」 › 「box」フォルダ内の「style.css」をテキストエディタで開く
  2. ブラウザのCSSによって指定されたマージンをリセット」し、各ブロック間の間隔を開け
    class名「container」をセンタリングする
chapter04/box/style.css
body {
  background-color: #eee;
  margin: 0;
}

h1, h2 {
  font-size: 1em;
  margin: 0;
}

p {
  font-size: .875em;
  margin: 0;
}

header {
  background-color: #333;
  color: #fff;
  height: 48px;
  line-height: 48px;
  margin-bottom: 16px;
}

footer {
  background-color: #333;
  color: #ccc;
}

.container {
  width: 90%;
  margin: 0 auto;
}

.section {
  background-color: #fff;
  margin-top: 16px;
  margin-bottom: 16px;
}
  1. 上書き保存
  2. 「css-lessons」 › 「chapter04」› 「box」フォルダ内の「index.html」をダブルクリック。
  3. 間隔が変更されたかを確認
ブラウザでの表示例

RERUN


余白 paddingプロパティ

padding(パディング)は、ボックスの内側の余白を指定するプロパティ。
(padding-toppadding-rightpadding-bottompadding-leftのショートハンド)

初期値 値の継承 適用対象 相対値の基準
0 しない 全要素 (表の行、行グループ、列、列グループ、セル要素を除く) 包含ブロックの幅
主な値
指定できる値 説明
実数 + 単位 実数に単位を付けて指定 (例: 40px
パーセンテージ 親要素の幅に対する割合 (例: 50%

値の数による適用場所の違い

  • 値が「1」つの場合は、「上下左右」全てに適用 ・・・ 例: padding: 10px;
  • 値が「2」つの場合は、「上下」、「左右」の順で適用 ・・・ 例: padding: 10px 20px;
  • 値が「3」つの場合は、「上」、「左右」、「下」の順で適用 ・・・ 例: padding: 10px 20px 5px;
  • 値が「4」つの場合は、「上」、「右」、「下」、「左」の順で適用 ・・・ 例: padding: 10px 20px 5px 15px;

paddingプロパティを使ってみよう。

  1. 「css-lessons」 › 「chapter04」 › 「box」フォルダ内の「style.css」をテキストエディタで開く
  2. 各ブロックに余白を設定
chapter04/box/style.css
body {
  background-color: #eee;
  margin: 0;
}

h1, h2 {
  font-size: 1em;
  margin: 0;
}

p {
  font-size: .875em;
  margin: 0;
}

header {
  background-color: #333;
  color: #fff;
  height: 48px;
  line-height: 48px;
  margin-bottom: 16px;
  padding-left: 16px;
  padding-right: 16px;
}

footer {
  background-color: #333;
  color: #ccc;
  padding: 8px 16px;
}

.container {
  width: 90%;
  margin: 0 auto;
}

.section {
  background-color: #fff;
  margin-top: 16px;
  margin-bottom: 16px;
  padding: 16px;
}
  1. 上書き保存
  2. 「css-lessons」 › 「chapter04」› 「box」フォルダ内の「index.html」をダブルクリック。
  3. 余白が変更されたかを確認
ブラウザでの表示例

RERUN


境界線の種類 border-styleプロパティ

border(ボーダー)-style(スタイル)は、ボックスの境界線のスタイルを指定するプロパティ。
(border-top-styleborder-right-styleborder-bottom-styleborder-left-styleのショートハンド)

初期値 値の継承 適用対象
none しない 全要素 (表の行、行グループ、列、列グループ、セル要素を除く)
主な値
指定できる値 説明
none 枠線なし (ボーダーの幅は 0 になる)
hidden 枠線なし (ボーダーの幅は 0 になる)
solid 実線
double 2重線
dotted 点線
dashed 破線
groove 立体枠 (窪み)
ridge 立体枠 (隆起)
inset 立体枠 (内側全体が窪み)
outset 立体枠 (内側全体が隆起)

値の数による適用場所の違い

  • 値が「1」つの場合は、「上下左右」全てに適用 ・・・ 例: border-style: solid;
  • 値が「2」つの場合は、「上下」、「左右」の順で適用 ・・・ 例: border-style: solid dotted;
  • 値が「3」つの場合は、「上」、「左右」、「下」の順で適用 ・・・ 例: border-style: solid dotted dashed;
  • 値が「4」つの場合は、「上」、「右」、「下」、「左」の順で適用 ・・・ 例: border-style: solid dotted dashed dashed;

border-styleのサンプル
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>ボーダースタイル</title>
  <link rel="stylesheet" href="style.css">
  <style type="text/css">
    p {
      padding: 16px;
    }

    .none {
      border-style: none;
    }

    .hidden {
      border-style: hidden;
    }

    .solid {
      border-style: solid;
    }

    .double {
      border-style: double;
    }

    .dotted {
      border-style: dotted;
    }

    .dashed {
      border-style: dashed;
    }

    .groove {
      border-style: groove;
    }

    .ridge {
      border-style: ridge;
    }

    .inset {
      border-style: inset;
    }

    .outset {
      border-style: outset;
    }
  </style>
</head>
<body>
  <h1>ボーダースタイル</h1>
  <p class="none">none</p>
  <p class="hidden">hidden</p>
  <p class="solid">solid</p>
  <p class="double">double</p>
  <p class="dotted">dotted</p>
  <p class="dashed">dashed</p>
  <p class="groove">groove</p>
  <p class="ridge">ridge</p>
  <p class="inset">inset</p>
  <p class="outset">outset</p>
</body>
</html>
ブラウザでの表示例

RERUN


境界線の幅 border-widthプロパティ

border(ボーダー)-width(ウィズ)は、ボックスの境界線の幅を指定するプロパティ。
(border-top-widthborder-right-widthborder-bottom-widthborder-left-widthのショートハンド)

初期値 値の継承 適用対象
medium しない 全要素 (表の行、行グループ、列、列グループ、セル要素を除く)
主な値
指定できる値 説明
実数 + 単位 実数に単位を付けて指定 (例: 4px
thin 細い
medium 標準
thick 太い

値の数による適用場所の違い

  • 値が「1」つの場合は、「上下左右」全てに適用 ・・・ 例: border-width: 10px;
  • 値が「2」つの場合は、「上下」、「左右」の順で適用 ・・・ 例: border-width: 10px 20px;
  • 値が「3」つの場合は、「上」、「左右」、「下」の順で適用 ・・・ 例: border-width: 10px 20px 5px;
  • 値が「4」つの場合は、「上」、「右」、「下」、「左」の順で適用 ・・・ 例: border-width: 10px 20px 5px 15px;

border-widthのサンプル
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>ボーダーの幅</title>
  <link rel="stylesheet" href="style.css">
  <style type="text/css">
    p {
      padding: 16px;
      border-style: solid;
    }

    .border1 {
      border-width: 1px;
    }

    .border2 {
      border-width: thick thin;
    }
  </style>
</head>
<body>
  <h1>ボーダーの幅</h1>
  <p class="border1">border1</p>
  <p class="border2">border2</p>
</body>
</html>
ブラウザでの表示例

RERUN


境界線の色 border-colorプロパティ

border(ボーダー)-color(カラー)は、ボックスの境界線の色を指定するプロパティ。
(border-top-colorborder-right-colorborder-bottom-colorborder-left-colorのショートハンド)

初期値 値の継承 適用対象
color の値 しない 全要素 (表の行、行グループ、列、列グループ、セル要素を除く)
主な値
指定できる値 説明
color値 境界線のcolor値 (例: #808080 など)
transparent 透明

値の数による適用場所の違い

  • 値が「1」つの場合は、「上下左右」全てに適用 ・・・ 例: border-color: #ccc;
  • 値が「2」つの場合は、「上下」、「左右」の順で適用 ・・・ 例: border-color: #ccc #000;
  • 値が「3」つの場合は、「上」、「左右」、「下」の順で適用 ・・・ 例: border-color: #ccc #000 red;
  • 値が「4」つの場合は、「上」、「右」、「下」、「左」の順で適用 ・・・ 例: border-color: #ccc #000 red blue;

border-colorのサンプル
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>ボーダーの色</title>
  <link rel="stylesheet" href="style.css">
  <style type="text/css">
    p {
      padding: 16px;
      border-style: solid;
    }

    .border1 {
      border-color: #ddd;
    }

    .border2 {
      border-color: #000 #666 #ccc #eee;
    }
  </style>
</head>
<body>
  <h1>ボーダーの色</h1>
  <p class="border1">border1</p>
  <p class="border2">border2</p>
</body>
</html>
ブラウザでの表示例

RERUN


境界線の一括設定 borderプロパティ

border(ボーダー)は、ボーダー関連のプロパティを一括で指定するプロパティ。
(border-topborder-rightborder-bottomborder-leftのショートハンド)
指定したいプロパティの値を順不同で半角スペース区切りで指定する。
ただし省略したプロパティは、「初期値」にリセットされる。

初期値 値の継承 適用対象
各プロパティに準ずる しない 全要素 (表の行、行グループ、列、列グループ、セル要素を除く)
主な値
指定できる値 説明
border-style の値 border-style に指定できる値
border-width の値 border-width に指定できる値
border-color の値 border-color に指定できる値

値の数による適用場所の違い

  • border の場合は、「上下左右」全てに適用 ・・・ 例: border: 1px solid #ddd;
  • border-top の場合は、「上」に適用 ・・・ 例: border-top: 1px solid #ddd;
  • border-right の場合は、「右」に適用 ・・・ 例: border-right: 1px solid #ddd;
  • border-bottom の場合は、「下」に適用 ・・・ 例: border-bottom: 1px solid #ddd;
  • border-left の場合は、「左」に適用 ・・・ 例: border-left: 1px solid #ddd;

borderプロパティを使ってみよう。

  1. 「css-lessons」 › 「chapter04」 › 「box」フォルダ内の「style.css」をテキストエディタで開く
  2. class名「section」や、class名「section」内のh2要素境界線を設定する
chapter04/box/style.css
body {
  background-color: #eee;
  margin: 0;
}

h1,h2 {
  font-size: 1em;
  margin: 0;

}
p {
  font-size: .875em;
  margin: 0;
}

header {
  background-color: #333;
  color: #fff;
  height: 48px;
  line-height: 48px;
  margin-bottom: 16px;
  padding-left: 16px;
  padding-right: 16px;
}

footer {
  background-color: #333;
  color: #ccc;
  padding: 8px 16px;
}

.container {
  width: 90%;
  margin: 0 auto;
}

.section {
  background-color: #fff;
  margin-top: 16px;
  margin-bottom: 16px;
  padding: 16px;
  border: 1px solid #ddd;
}

.section h2 {
  border-left: 4px solid #333;
  border-bottom: 1px solid #ddd;
  padding-left: 8px;
  padding-bottom: 4px;
  margin-bottom: 16px;
}
  1. 上書き保存
  2. 「css-lessons」 › 「chapter04」› 「box」フォルダ内の「index.html」をダブルクリック。
  3. 境界線が設定されたかを確認
ブラウザでの表示例

RERUN


練習問題 今回の理解度をチェック。

「chapter04」 › 「training」フォルダ内に「style.css」を作成し、
下記の問題を解いて下さい。

ブラウザでの完成例

RERUN

    • ファイル名: style.css
  1. プロパティ
    文字のサイズ 1em
    間隔 (上下左右) 0
    余白 (上下左右) 0
  2. プロパティ
    文字の書体 「游明朝」なければ、「ヒラギノ明朝 ProN W3」なければ、
    「HG明朝E」なければ、 明朝系
    行間 1.5
    背景画像 「images」フォルダ内の「bg-washi.png」
    文字の色 #333333
  3. プロパティ
    960px
    間隔 (上下) 0
    間隔 (左右) 自動
  4. プロパティ
    背景色 #1A1A1A
    文字の色 #FFFFFF
    余白 (上下) 24px
  5. プロパティ
    余白 (上下) 40px
  6. プロパティ
    境界線の幅 (左) 4px
    境界線のスタイル (左) 実線
    境界線の色 (左) #1A1A1A
    余白 (左) 8px
    間隔 (下) 1em
    文字サイズ 1.25em
  7. プロパティ
    文字の色 #64B5F6
    テキストの装飾 なし
  8. プロパティ
    背景の色 #FFFFFF
    間隔 (上) 1em
    余白 (上下左右) 16px
    境界線の幅 (上下左右) 1px
    境界線のスタイル (上下左右) 実線
    境界線の色 (上下左右) #DDDDDD
  9. プロパティ
    背景の色 #1A1A1A
    文字の色 #CCCCCC
    余白 (上下) 16px
    文字のサイズ 0.75em
解答例
chapter04/training/index.html
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>架空温泉 だみい屋</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <header id="header">
    <div class="container">
      <h1>架空温泉 だみい屋</h1>
    </div>
    <!-- /.container -->
  </header>

  <main>
    <section class="section">
      <div class="container">
        <h2 class="heading">大切な人と「ゆったり」過ごすお部屋。<br>ワンちゃんと「たっぷり」遊ぶお部屋。</h2>
        <p>
          だみい屋はビジネスや家族連れのお客様におすすめなスタンダードタイプのお部屋はもちろん、 カップルにおすすめの
          <em>離れ</em>や、わんちゃん連れにおすすめな<em>ドッグラン付き</em>のお部屋をご用意致しております。
        </p>
        <section class="item">
          <h3>ビジネスにおすすめ<br>スタンダード10畳</h3>
          <p>一番多い部屋数があるスタンダードの10畳のお部屋です。</p>
          <p><a href="#">スタンダード10畳の詳細を見る</a></p>
        </section>
        <section class="item">
          <h3>カップルにおすすめ<br>離れ</h3>
          <p>プライベートな空間でゆったりできる、家族風呂付きの離れのお部屋です。</p>
          <p><a href="#">離れの詳細を見る</a></p>
        </section>
        <section class="item">
          <h3>ワンちゃんにおすすめ<br>ドッグラン付き客室</h3>
          <p>ワンちゃんと一緒に旅行を楽しめる。ドッグラン付きのお部屋です。</p>
          <p><a href="#">ドッグラン付き客室の詳細を見る</a></p>
        </section>
      </div>
      <!-- /.container -->
    </section>

    <section class="section">
      <div class="container">
        <h2>お客様の声</h2>
        <p>だみい屋に寄せられた「お客様の声」の一部をご紹介します。</p>
        <article class="item">
          <h3>抜群のコストパフォーマンス!</h3>
          <p>部屋が広いくて料理もおいしい。繁華街からも近くてこの値段なら文句もないですね。</p>
          <footer>
            <p>S・Y さん</p>
          </footer>
        </article>
        <article class="item">
          <h3>ドッグラン付きがうれしい!</h3>
          <p>
            温泉旅館で、ドッグランがついてる部屋があるのが嬉しいです。 ただ、畳は少し凸凹してました。ワンちゃんがお部屋の中で走ってるからかな? まぁ私にとっては大満足な旅館でした。
          </p>
          <footer>
            <p>山田 さん</p>
          </footer>
        </article>
      </div>
      <!-- /.container -->
    </section>
  </main>

  <footer id="footer">
    <div class="container">
      <address>
        架空温泉 だみい屋<br>
        〒56X-00XX<br>
        大阪府架空市架空区架空1-1-1
      </address>
      <p><small>© 2018 架空温泉 だみい屋.</small></p>
    </div>
    <!-- /.container -->
  </footer>
</body>
</html>
chapter04/training/style.css
* {
  font-size: 1em;
  margin: 0;
  padding: 0;
}

body {
  font: 1em/1.5 游明朝, "ヒラギノ明朝 ProN W3", HG明朝E, serif;
  background-image: url(images/bg-washi.png);
  color: #333;
}

.container {
  width: 960px;
  margin: 0 auto;
}

#header {
  background-color: #1a1a1a;
  color: #fff;
  padding: 24px 0;
}

.section {
  padding: 40px 0;
}

.section h2 {
  border-left: 4px solid #1a1a1a;
  padding-left: 8px;
  margin-bottom: 1em;
  font-size: 1.25em;
}

.section a:hover {
  color: #64B5F6;
  text-decoration: none;
}

.item {
  background-color: #fff;
  margin-top: 1em;
  padding: 16px;
  border: 1px solid #ddd;
}

#footer {
  background-color: #1a1a1a;
  color: #ccc;
  padding: 16px 0;
  font-size: .75em;
}

解答例は全問題のチェックボックスが on になるとご覧いただけます。

まとめ だんだんCSSが難しくなってきた。

CSSには様々なセレクタがあり、使いこなすと容易に各要素を識別できる。
また、ボックスの概念のプロパティはレイアウトを行う際に重要な役割を担う。

  • セレクタは様々な種類があるが、classセレクタが一番便利
  • ボックスは、widthheight
    marginpaddingborderで成り立つ。
  • heightは、基本使わない