CSSの小技として、<blockquote>要素で使えるスタイルです。
多くの視覚系のユーザエージェントでは、<blockquote>要素を前後左右に余白を入れる事で引用である事が分かるようにしております。
しかしながら、CSSを用いた場合は、いろいろなスタイルを適用させる事が出来ます。
ここでは、幾つかご紹介します。
本来、引用に於いては引用元に関する情報を提示する事が必須となっております。
HTML 4.01以降では、<blockquote>要素にcite属性を与える事で引用元文書のURIを明示する事が可能になりました。
cite属性やtitle属性で与えられる情報は現在のところ多くのユーザエージェントでのデフォルトスタイルでは非表示になっておりますが、CSSで:before擬似要素及び:after擬似要素を活用すれば、これらの属性に依る情報を表示させる事が可能です。
ここでは、その事を実際に行ってみましょう。
具体的には、<blockquote>要素の前か後ろで自動的に引用元の情報をスタイルシートが出力するようにします。
にcontentプロパティで出せるようにします。
例として、当サイトが平成18年 6月20日現在利用しているスタイルをご紹介します。
当サイトでは<blockquote>要素のデフォルトスタイルとして、
このためのCSSでの記述は、以下のように:before擬似要素及び:after擬似要素を利用したものとなります。
/* <blockquote>要素の基本スタイル */blockquote {margin: 1.5em 0 1.5em 1em;padding: 1em 1.5em;text-indent: 0;border: solid 2px #090;/* 緑の枠 */}/* <blockquote>要素の前の基本スタイル */blockquote:before {display: block;/* 下に付ける山吹色の枠を幅一杯に描くため、 ブロックレヴェル要素扱いとします。 */line-height: 1.6em;color: #090;border-bottom: #fd0 2px solid;/* 下に山吹色の枠 */margin-bottom: 1em;content: "以下引用。";/* この文字が表示されます */}/* <blockquote>要素にcite属性がある場合 */blockquote[cite]:before {/* cite属性がある場合に限る */display: block;/* 下に付ける山吹色の枠を幅一杯に描くため、 ブロックレヴェル要素扱いとします。 */line-height: 1.6em;color: #090;border-bottom: #fd0 2px solid;/* 下に山吹色の枠 */margin-bottom: 1em;content: "以下引用。\A" "URI: " attr(cite);/* 二行に亘り「以下引用。」「URI: …」が表示されます */}/* <blockquote>要素の後ろの基本スタイル */blockquote:after {display: block;/* 上に付ける山吹色の枠を幅一杯に描くため、 ブロックレヴェル要素扱いとします。 */line-height: 1.6em;color: #090;border-top: #fd0 2px solid;/* 上に山吹色の枠 */margin-top: 1em;text-align: right;content: "引用ここまで。";/* この文字が表示されます */}
尚、インターネットエクスプローラでは:before擬似要素及び:after擬似要素などをサポートしていないため、一番初めの基本スタイル(緑の枠をつける表示)のみが有効となります。
メールや掲示板などでは、長文引用には行頭に「>」を付ける事でそのように表す場合が多いです。
これをCSSでやってみましょう。
HTMLでは、長文引用(正しくはブロックレヴェルでの引用)には、<blockquote>要素を用いる事となっており、よって、この要素に適切なスタイルを当てれば良い事となります。
blockquote>* {margin: 0 0 0 0.5em;padding: 0;border: none;}blockquote>*:before {display: inline;margin: 0 0 0 -0.5em;padding: 0;content: ">";}
スタイルを当てる際に抑えておきたい事として、まず<blockquote>要素の直下は必ずブロックレヴェル要素となるため(ブロックレヴェルでの引用なので当り前ですが)、直下セレクタで指定された要素は全てブロックレヴェル要素となる筈です(不正なマークアップがされている場合はこの限りではありませんが…)。
一方、:before擬似要素は、当該セレクタによって指定される対象の直前を対象とした擬似要素です。
ここでは、<blockquote>要素の直下となっている要素の直前に関してスタイルを当てております。
displayプロパティでこの擬似要素をインライン方式としておき、contentプロパティで「>」を出力させております。
こうする事で、<blockquote>要素直下の全ブロックレヴェル要素の先頭に「>」が附与されるようになる訳です。