CSSの実習(4) - 枠線の指定。

お詫び(平成23年11月12日)
本コンテンツでサンプルとしている HTML 文書に以下のマークアップ漏れがありました。

平成23年11月10日以降に本コンテンツをご利用の方は、訂正した HTML 文書に差し替えてご利用ください。

ご迷惑をお掛け致しました事を深くお詫び申し上げます。

前回の実習(3) - 余白の指定では、各要素に余白を与えました。

今度は、枠線を指定してみましょう。

枠線関連のプロパティは枠線関連の主なプロパティに纏めておきましたので、そちらも適宜参照してください。

枠線の指定で出来る事。

CSS を用いる事で、各要素の上下左右に個別に

  • 枠線の色
  • 枠線の形(実線か鎖線か点線か等)
  • 枠線の幅(太さ)

を指定する事が出来ます。

枠線を引く事で、更に要素が見やすくなったり目立たせたりする事も可能になります。

また、枠線の概念から外れると思われるかも知れませんが、以下のような使い方も可能です。

  • 見出しの場合、左だけに太い枠線を引く事で、見出しの左に長方形のマーカの代わりにする事も出来ます。
  • テキストに対して、下の枠線を下線代わりにする事も出来ます。

    しかも、下枠線を用いる方法なら、text-decorationプロパティで引く下線と違い、色や形もより多彩に定める事が出来ます。

    • 但し、携帯電話のモバイルブラウザや少し前のブラウザなどでは、テキスト等のインライン要素に枠線が引かれない場合もあります。

また、<hr>要素(段落間の区切り)も枠線を用いて実現されるものです。

  • HTML 4/XHTML 1 まででは、<hr>要素は横罫線と定義されておりましたが、HTML 5 では段落間の区切りと再定義されました。
  • 正確には<hr>要素を表現する横罫線は枠線とは言えないのですが、現在のところ横罫線に相当するCSSのプロパティが正式に定義されていないため、現状では枠線で実現すると言う実装になっております。

今回やりたい事。

今回は、以下の事をしてみましょう。

  1. <h2>要素(第二等級見出し)について、黄土色の枠線を引きます。
  2. <dfn>要素(定義語)について、下に黄土色の枠線を引く事で、下線代わりにします。
  3. その他の要素には枠線は付けません。

但し、<hr>要素(段落間の区切り)は、通常枠線を用いて実現しております。

  • 現時点では<hr>要素を表現している横罫線に相当するプロパティが存在しないためです。

このため、<hr>要素についても、ねずみ色の枠線で実現する事とします。

以上を纏めると、以下のようになります。

基本となる余白の設定
特に指定の無い限り自動的に適用される基本となるスタイルとしては、
  • 枠線は一切引かない

事とします。

<h2>要素(第二等級見出し)
以下の太さの黄土色の実線を枠線として引きます。
  • 上が 1ピクセル
  • 下が 4ピクセルズ
  • 左右が 2ピクセルズ
<dfn>要素(定義語)
下に 2ピクセルズの黄土色の実線を下線代わりに引きます。
<hr>要素(段落間の区切り)
上下左右に 1ピクセルずつのねずみ色の実線を引く事で横罫線を実現します。

ここでは、実習としてやりたい事を挙げておりますが、もし読者の方がここで挙げているスタイルではなく、別のスタイルにしてみたいと思うのであれば、それを実際にやってみるのが何よりの実習です。

是非挑戦してみてください

実際のスタイル定義。

さて、これから実際に前回までのスタイル定義ファイル style.css にスタイルを追記していきましょう。

まず、基本スタイルでは枠線を引かないように。

CSS の仕様では枠線のデフォルト値は幅は零、つまり枠線なしとなっておりますが、実際のウェブブラウザではそのようになっているかどうかは分かりません。

実際にブラウザのデフォルトスタイルで枠線を与える事は余りありませんが、絶対無いとも断言出来ません。

  • 何故なら、HTMLの仕様でデフォルトスタイルで枠線を引くなとは書かれていないからです。

そこで、念のため、初めに決めた通りの基本スタイルとして枠線の定義を打消してやります。

スタイル定義ファイル style.css 内の全称セレクタに対するプロパティ定義に、以下のように追記する事で新たなプロパティを指定します。

* {
    background-color: transparent;
    color: #000;
    margin: 0;
    padding: 0;
    border: none 0;
    background-color: #fff;
    color: #000;
    font-family: "MS Pゴシック", sans-serif;
    font-size: 100%;
    font-style: normal;
    text-decoration: none;
    font-weight: normal;
    text-align: left;
    line-height: 1.5em;
    text-indent: 0;
    }

ここで、border プロパティは上下左右の枠線の全ての属性を一括指定する記法で、枠線なし・幅零と言う値を与えております。

  • 実は片方だけで枠線は消せる筈なのですが、稀に片方だけだと巧く行かないウェブブラウザがあるようですので、念のために双方書いております。

<h2>要素(第二等級見出し)へ枠線を。

続いて、<h2>要素(第二等級見出し)の枠線です。

初めに決めた<h2>要素へのスタイルとして

  • 上は細く( 1ピクセル)、
  • 下は太く( 4ピクセルズ)、
  • そして左右は中くらい( 2ピクセルズ)

の黄土色の実線を引きたいと思います。

そこで、スタイル定義ファイル style.css 内の<h2>要素の要素セレクタに対するプロパティ定義に、以下のように追記する事で新たなプロパティを指定します。

h2 {
    margin: 3em 0 1em;
    border-color: #cc0;
    border-style: solid;
    border-width: 1px 2px 4px;
    background-color: #fff;
    color: #090;
    font-size: 120%;
    line-height: 1.2em;
    }

ここで、

  1. border-color プロパティは枠線の色
  2. border-style プロパティは枠線の形
  3. border-width プロパティは枠線の幅

を指定するものです。

いずれも、上下左右に個別に値を与える事も出来ますが、ここでは枠線の幅だけが上下左右で異なっているため、これだけ個別に値を与えるものとします。

<hr>要素(段落の区切り)を枠線で実現。

基本となるスタイルでは、枠線を引かないように定義しました。

しかし、<hr>要素(段落の区切り)は多くのウェブブラウザで枠線で実現しているので、基本となるスタイルのままだと<hr>要素が画面から消えてしまいます。

そこで、初めに決めた<hr>要素へのスタイルとして、

  • 上下左右に 1ピクセルずつのねずみ色の実線

を<hr>要素のスタイルとします。

スタイル定義ファイル style.css 内の<hr>要素の要素セレクタに対するプロパティ定義に、以下のように追記する事で新たなプロパティを指定します。

hr {
    margin: 3em 0 1em;
    border: 1px solid #888;
    }

ここでは、<hr>要素のスタイルとして、上下左右 1ピクセルずつで、ねずみ色の実線を引く事にしました。

<dfn>要素(定義語)へ下線代わりの枠線を。

初めに決めた通り、<dfn>要素(定義語)には下線代わりに

  • 下に幅 2ピクセルズの黄土色の実線

を引く事としました。

そこで、スタイル定義ファイル style.css 内の<dfn>要素の要素セレクタに対するプロパティ定義に、以下のように追記する事で新たなプロパティを指定します。

dfn {
    border-bottom: 2px solid #cc0;
    color: #090;
    }

ここで、border-bottomプロパティは下枠線の色・形・幅を一括指定する記法で、ここでは、黄色で幅 2ピクセルズの実線の下枠線を指定しております。

ここまででのスタイル定義ファイルの纏め。

以上のスタイルを纏めると、スタイル定義ファイル style.css は以下のようになっているでしょう。

@charset "shift_jis";

* {
    background-color: transparent;
    color: #000;
    margin: 0;
    padding: 0;
    border: none 0;
    background-color: #fff;
    color: #000;
    font-family: "MS Pゴシック", sans-serif;
    font-size: 100%;
    font-style: normal;
    text-decoration: none;
    font-weight: normal;
    text-align: left;
    line-height: 1.5em;
    text-indent: 0;
    }

html {
    background-color: #fff;
    padding: 2em 1em;
    }

h1 {
    margin-bottom: 1em;
    background-color: #ff0;
    color: #090;
    font-style: italic;
    font-weight: bold;
    font-size: 200%;
    line-height: 1.2em;
    text-align: center;
    }

h2 {
    margin: 3em 0 1em;
    border-color: #cc0;
    border-style: solid;
    border-width: 1px 2px 4px;
    background-color: #fff;
    color: #090;
    font-size: 120%;
    line-height: 1.2em;
    }

p {
    margin: 1em 0 0 2em;
    text-indent: 1em;
    }

ul {
    margin: 1em 0 0 4em;
    }

figure {
    margin: 1em 0 0 2em;
    }

hr {
    margin: 3em 0 1em;
    border: 1px solid #888;
    }

a:link {
    color: #090;
    text-decoration: underline;
    }

a:visited {
    color: #000;
    text-decoration: underline;
    }

dfn {
    border-bottom: 2px solid #cc0;
    color: #090;
    }

em {
    color: #f00;
    }

このスタイル定義ファイルを適用したHTML文書を表示させると以下のようになります。

前回までのスタイル定義の場合
<h2>要素に枠線は無く、また<dfn>要素にも下線は引かれておりません。
今回のスタイルを適用した場合
<h2>要素に黄土色の枠線が引かれ、また<dfn>要素にも黄土色の下線は引かれました。

スタイルの修正 - 枠線とテキストの間隔を調整する。

さて、今回枠線を引いてみたのですが、一つだけ気になる事がありました。

それは、<h2>要素の左の枠線とテキストがちょっとくっ付き過ぎている事です。

この場合、枠線の内側の余白、すなわちパディングを指定する事で適切に引き離す事が出来ます。

そこで、スタイル定義ファイル style.css 内の<h2>要素の要素セレクタに対するプロパティ定義に、以下のように paddingプロパティを追記しましょう。

@charset "shift_jis";

* {
    background-color: transparent;
    color: #000;
    margin: 0;
    padding: 0;
    border: none 0;
    background-color: #fff;
    color: #000;
    font-family: "MS Pゴシック", sans-serif;
    font-size: 100%;
    font-style: normal;
    text-decoration: none;
    font-weight: normal;
    text-align: left;
    line-height: 1.5em;
    text-indent: 0;
    }

html {
    background-color: #fff;
    padding: 2em 1em;
    }

h1 {
    margin-bottom: 1em;
    background-color: #ff0;
    color: #090;
    font-style: italic;
    font-weight: bold;
    font-size: 200%;
    line-height: 1.2em;
    text-align: center;
    }

h2 {
    margin: 3em 0 1em;
    padding: 0 6px;
    border-color: #cc0;
    border-style: solid;
    border-width: 1px 2px 4px;
    background-color: #fff;
    color: #090;
    font-size: 120%;
    line-height: 1.2em;
    }

p {
    margin: 1em 0 0 2em;
    text-indent: 1em;
    }

ul {
    margin: 1em 0 0 4em;
    }

hr {
    margin: 3em 0 1em;
    border: 1px solid #888;
    }

a:link {
    color: #090;
    text-decoration: underline;
    }

a:visited {
    color: #000;
    text-decoration: underline;
    }

dfn {
    border-bottom: 2px solid #cc0;
    color: #090;
    }

em {
    color: #f00;
    }

この修正したスタイル定義ファイルを適用したHTML文書を表示させると以下のようになります。

修正前のスタイル定義の場合
<h2>要素の左枠線とテキストの左端がくっ付いております。
修正後のスタイルを適用した場合
<h2>要素の左枠線とテキストの左端が適切に引き離されました。

これで、問題点が解決されました。