contentプロパティを調べてみる
この記事は2015年2月25日に書かれたもので、内容が古い可能性がありますのでご注意ください。
::before疑似要素や::after疑似要素で使用するcontentプロパティ。
あまり深く調べたことが無いので調べてみました。
※疑似要素はIE8から対応していますが疑似要素の書き方は【:before】【:after】となります。
contentプロパティ関連の一覧です。
引用符に必要なquotesプロパティも含めています。
プロパティ名 | 指定値 | 説明 |
content | “文字列” | 指定した文字列を追加する |
url(URI) | 指定したURIの画像等を追加する | |
counter(カウンタ名) | counter-incrementで指定したカウンタ名を入れる | |
counters(カウンタ名, "文字列", list-style-type) | 入れ子になった時に、カウンタを指定された文字列で区切った値で返す。list-style-typeは省略可 | |
attr(属性名) | 指定した属性の値を表示する | |
open-quote | quotesプロパティで設定されている開始引用符を挿入する | |
close-quote | quotesプロパティで設定されている終了引用符を挿入する | |
no-open-quote | 引用符の入れ子の深さが一階深くなる | |
no-close-quote | 引用符の入れ子の深さが一階層浅くなる | |
counter-increment | カウンタ名 整数値 | contentプロパティで追加された連番の値を進める。また整数値は半角スペースで区切って整数値を指定すると、カウンタの値がその数だけ前後し省略が可能 |
counter-reset | カウンタ名 | contentプロパティで追加された連番の値を初期化する |
quotes | “文字列” “文字列” | 開始引用符と終了引用符の文字列をペアで指定 |
まずは基本となるcontentの”文字列”から。
比較的多い米マークをリストの前に配置するサンプルです。
<ul class="type1"> <li>テキストテキストテキストテキスト</li> <li>テキストテキストテキストテキスト</li> </ul>
ul.type1 { list-style-type: none; } ul.type1 li::before { content: "※"; }
続いてURLのサンプル。サイズなど調整するのが面倒なので使用頻度は少なそう。
同じ画像を出すならcontentを空にしてdisplayとbackground-imageで出すほうが融通がきいていいような気がします。
<p class="type2">テキストテキストテキストテキスト</p>
p.type2::before { content: url(http://placehold.jp/14x14.png); }
次はcounter(カウンタ名)です。
米マークの後に連番を表示させるサンプルです。
因みに入れ子にしているのには次のサンプルに理由があります。
<ol class="type3"> <li>テキストテキストテキストテキスト</li> <li>テキストテキストテキストテキスト <ol class="type3"> <li>テキストテキストテキストテキスト</li> <li>テキストテキストテキストテキスト</li> </ol> </li> <li>テキストテキストテキストテキスト</li> </ol>
ol.type3 { list-style-type: none; } ol.type3 li { counter-increment: type3; } ol.type3 li::before { content: "※" counter(type3); }
上記では入れ子にしても数字が進みますが、counter-resetを使う数字をリセットすることが可能です。
<ol class="type4"> <li>テキストテキストテキストテキスト</li> <li>テキストテキストテキストテキスト <ol class="type4"> <li>テキストテキストテキストテキスト</li> <li>テキストテキストテキストテキスト</li> </ol> </li> <li>テキストテキストテキストテキスト</li> </ol>
ol.type4 { counter-reset: type4; list-style-type: none; } ol.type4 li { counter-increment: type4; } ol.type4 li::before { content: "※" counter(type4); }
counter-incrementに整数値【2】を入れると【2】【4】【6】・・と2ずつ増えます。
因みに整数値なので負の値も可能です。
<ol class="type5"> <li>テキストテキストテキストテキスト</li> <li>テキストテキストテキストテキスト</li> <li>テキストテキストテキストテキスト</li> <li>テキストテキストテキストテキスト</li> </ol>
ol.type5 { list-style-type: none; } ol.type5 li { counter-increment: type5 2; } ol.type5 li:before { content: "※" counter(type5); }
続いてcounters(カウンタ名, “文字列”, list-style-type)。
約款などで使用できそうなサンプルです。
<ol class="type6"> <li>テキストテキストテキストテキスト</li> <li>テキストテキストテキストテキスト <ol class="type6"> <li>テキストテキストテキストテキスト</li> <li>テキストテキストテキストテキスト <ol class="type6"> <li>テキストテキストテキストテキスト</li> </ol> </li> <li>テキストテキストテキストテキスト</li> </ol> </li> <li>テキストテキストテキストテキスト</li> </ol>
ol.type6 { counter-reset: type6; list-style-type: none; } ol.type6 li { counter-increment: type6; } ol.type6 li::before { content: counters(type6, " - ", lower-alpha); }
attr(属性名)です。サンプルはhrefですがtitleやaltなども可能です。
下記のサンプルは印刷用cssでURLを表示させると印刷時のユーザビリティ的によいのかもしれません。
<ul> <li><a href="https://www.google.co.jp/" class="type7">グーグル</a></li> <li><a href="http://www.yahoo.co.jp/" class="type7">ヤフー</a></li> </ul>
a.type7::after { content: attr(href); }
ここからは中々想定する使い方は思いつかないのですが、open-quoteとclose-quoteです。
quotesは開始と終了をセットで指定します。サンプルのように複数も可能です。
<p>テキスト<q class="type8">テキスト<q class="type8">テキスト</q>テキスト</q>テキスト</p>
q.type8 { quotes: '「' '」' '『' '』'; } q.type8::before { content: open-quote; } q.type8::after { content: close-quote; }
no-open-quoteとno-close-quoteです。
サンプルはno-open-quoteになります。
<p>テキスト<q class="type9">テキスト<q class="type9">テキスト</q>テキスト</q>テキスト</p>
q.type9 { quotes: '「' '」' '『' '』'; } q.type9::before { content: no-open-quote; } q.type9::after { content: close-quote; }
ads