CSSの小技として、最近ウェブログなどで見られる、大きな画像の中にある見出し文字を実現する方法を解説します。
まず、注意しておきたい事は、大きな画像の中に小さな見出し文字を入れるにはで書いておりますので、そちらをもう一度ご覧下さい。
また、これに加えて、サブタイトルのマークアップにはいろいろな方法が考えられます。
ここでは、そのうちの一つのみを解説致しますので、ご了承下さい。
ここでは、話しを具体的にするために、以下のサンプルを用意しました。
HTML文書としては、以下のようなものとします。
<title>大きな画像の中にある見出しとサブタイトル。</title><h1>しらぎくさいと。<small class="subTitle">〜 HTMLとCSSの便利な関係 〜</small></h1><p>タネも仕掛けもありません。</p><p>強いて言えば、paddingプロパティの使い方でしょう。</p>
サブタイトルに関してはいろいろなマークアップ方法が考えられますが、ここでは、<h1>要素の一部としてマークアップするものとしております。
サブタイトル部分はclass="subTitle"属性を与えた<small>要素でマークアップしておりますが、物理要素である<small>要素の利用に抵抗がある方は、<span>要素など別の要素にすれば良いでしょう。
多くのウェブログでは、表題となる<h1>要素とサブタイトルとなる<h1>要素を一つの<div>要素に纏め、その<div>要素にbackground-imageプロパティで背景画像を当てているようですが、この目的に対しては、そのような事をする必要は全くありません。サブタイトルを含んだ<h1>要素にbackground-imageプロパティで背景画像を当てるだけで充分実現出来ます。
画像は大きな画像の中に小さな見出し文字を入れるにはで使っているものをそのまま使うものとします。
念のため解説すると、<h1>要素は以下の画像「h1Image.GIF」の中に表示させるものとしております。
実際に書かれるべきスタイルシートは以下のようになるでしょう。
body {text-align: center;}h1 {background: #fff url('h1Image.GIF') no-repeat;width: 600px;margin: 1em auto 0;line-height: 10px;padding-top: 70px;padding-bottom: 70px;padding-left: 0;padding-right: 0;font-size: 100%;color: #090;text-align: center;}h1 small.subTitle {display: block;margin-top: 1em;line-height: 1em;margin-bottom: -2em;padding: 0;font-size: 75%;color: #000;background: transparent;text-align: center;}p {width: 600px;margin: 1em auto 0;text-align: left;}
このスタイルを適用すると、以下のようになります。
このスタイル定義は、大きな画像の中に小さな見出し文字を入れるにはで書いたスタイルシートに「<h1>要素の中にあるclass="subTitle"属性を与えた<small>要素」へのスタイル定義を書き加えただけに過ぎませんので、この箇所についてのみ解説しておきます。
尚、書き加えた箇所は以下のようになっております。
h1 small.subTitle {display: block;margin-top: 1em;line-height: 1em;margin-bottom: -2em;padding: 0;font-size: 75%;color: #000;background: transparent;text-align: center;}
そして、この部分の記述は以下のようになります。
まず、<h1>要素の中にあるclass="subTitle"属性を与えた<small>要素は、セレクタで言えば h1 small.subTitle となります。
しらぎくさいと。」から改行されるようになります。更に、下の余白を、上の余白と行の高さ分マイナスにした値をmargin-bottomプロパティで一文字分とします。
あとは、サブタイトル文字そのもののスタイルに関して、
などと言った定義を行います。
今回は制作者のマークアップ作法に依りましたが、もっと別の方法でマークアップする方もいるかも知れません。
例えば、サブタイトルを<h2>要素やclass="subTitle"属性を与えた<h1>要素でマークアップするなどです。
そういったマークアップの場合、今回解説した方法ではなく、もっと別の方法でスタイル定義を行う事になるでしょう。
ここでは具体的な記述法は割愛させていただきますが、興味のある方は挑戦してみると良いでしょう。