menu
menu

キーワード検索

 

最近の投稿

contentで挿入した画像の中心に元要素のテキストを配置する方法

  • Labs

CSS

こんにちは(・∀・)

contentプロパティと疑似要素:beforeで挿入した画像の中心に、元要素のテキストを配置する方法についてご紹介します。

contentプロパティ

contentプロパティを使用して画像を配置する場合、そのままだと画像の真ん中に元になる要素のテキストは来てくれません。そのような時はどうしたら良いのでしょうか。

positionプロパティとネガティブマージンを使用してサクッと解決しましょう。

サンプルデモ

サンプルデモ1・サンプルデモ2・サンプルデモ3・サンプルデモ4と解説はこちら

サンプルデモ1のHTML

<div class="demo">
<h1>見出し1</h1>
</div>
サンプルデモ1のCSS

.demo h1 {
	background: #eee;
	font-size: 120%;
	margin: 1em 0 2em 0;
}
.demo h1:before {
	content: url(h1.png);
}
サンプルデモ2のHTML

<div class="demo2">
<h1>見出し2</h1>
</div>
<div class="demo2">
<h1>見出し2-2<br>見出し2-2</h1>
</div>
サンプルデモ2のCSS

.demo2 h1 {
	position: relative;
	background: #eee;
	font-size: 120%;
	margin: 1em 0 2em 0;
	padding: 6px 0 5px 20px;
}
.demo2 h1:before {
	position: absolute;
	top: 50%;
	left: 0;
	margin-top: -20px;/*画像の高さの半分の数値を指定*/
	content: url(h1.png);
}
サンプルデモ3のHTML

<div class="demo3">
<h1>見出し3</h1>
</div>
<div class="demo2">
<h1>見出し3-2<br>見出し3-2</h1>
</div>
サンプルデモ3のCSS

.demo3 h1 {
	position: relative;
	background: #eee;
	font-size: 120%;
	margin: 1em 0 2em 0;
	padding: 0 0 0 20px;
	height: 40px;/*画像の高さを指定*/
	line-height: 2.2;
}
.demo3 h1:before {
	position: absolute;
	top: 50%;
	left: 0;
	margin-top: -20px;/*画像の高さの半分の数値を指定*/
	content: url(h1.png);
}
サンプルデモ4のHTML

<div class="demo4">
<h1>見出し4</h1>
</div>
サンプルデモ4のCSS

.demo4 h1 {
	font-size: 120%;
	margin: 1em 0 2em 0;
	padding: 0 0 0 20px;
	line-height: 2.2;
	background: #eee url(h1.png) 0 0 repeat-y;
}

いかがでしたでしょうか、contentプロパティと疑似要素:beforeで画像を配置するとき、サンプル2やサンプル3のようにpositionプロパティとネガティブマージンを使えば簡単に元要素のテキストを画像の真ん中に配置することができます。しかしこのような背景画像の使い方をする場合、見出しのテキストが改行される可能性がある場合は、サンプル4のように普通にbackgroundプロパティを使う方が良いと思います。

ちなみに疑似要素:beforeでURLを指定してリンクを作りたいところですが、疑似要素:beforeで配置したオブジェクトには実体がないとみなされてURLを指定することはできません。

関連リンク

content(フォント・テキスト)【CSSリファレンス】

  • カテゴリー:Labs