CSSでエントリータイトルに画像を表示する
エントリータイトルの先頭に画像に表示する方法を紹介します。ここでは公開テンプレート(Movable Type)を用いた説明になりますが、HTMLとCSSの設定による一般的なテクニックですので、どのようなテンプレート(あるいはHTML)でも利用可能です。 以下カスタマイズ方法です。なお、リスト形式(ul - li)で画像を表示する場合はリストマークの画像のずれを修正するを参照ください。 |
1.テンプレートの修正
Movable Type の公開テンプレートではエントリータイトルを下記のように設定しています(分かりやすくするために一部省略しています)。
<h3 class="entry-header">●<$MTEntryTitle$></h3>
<$MTEntryTitle$> が実際にはエントリータイトルに変換されます。「●」は私が勝手につけたもので、エントリータイトルの先頭に付与されます。
この「●」を削除して、
<h3 class="entry-header"><$MTEntryTitle$></h3>
としてください。テンプレートの修正はこれだけです。他のテンプレートをお使いの方は、エントリータイトルを囲むタグに
class="entry-header"
が設定されていればOKです。
この entry-header を利用して次項でスタイルを設定しますが、補足しておくと entry-header という class 属性は不要で、
<h3><$MTEntryTitle$></h3>
として、hx(ここでは h3)タグに直接スタイルを設定することも可能です。ここでは h3 を h2 や h1 に変更する時の利便性を考慮してこのような設定にしていますが、hx タグにスタイルを設定する手法が本来的と思われます(同じ hx に異なるスタイルを設定する場合は class 属性を与えます)。
2.CSSの修正
スタイルシートで、エントリータイトル部分のスタイルを指定する entry-header に青色のプロパティを追加します。公開テンプレートを誤使用でない方も、青色部分のプロパティ設定は同じです。
/* エントリータイトル */
.entry-header {
margin: 15px 0 0;
color: #444444;
font-size: 12px;
font-weight: bold;
padding-left: 17px;
background: url(http://hogehoge/images/image.gif) no-repeat 0px 0.2em;
}
padding-left プロパティはテキストタイトルの左側に余白を作り、そこに画像を表示させるために設定します。
background プロパティで画像を表示させます。後続の設定の意味は下記の通りです。
- url(?)
- 表示させたい画像のURL(background-image)
- no-repeat
- 画像を繰り返さない(指定しないと繰り返し表示されます)(background-repeat)
- 0px
- 画像の左端からの表示位置(background-position)
*単に"0"でもOKですが値を設定する場合を考慮して単位を付与しています - 0.2em
- 画像の上端からの表示位置(background-position)
カッコ内はプロパティを別々に設定した時に対応する名称です。
テキストタイトルのパディングと画像の表示位置は画像サイズによって変動するため、適宜調整してください。"17px" および "0.2em" という値を変えることで微調整できます。
またここでは説明を割愛しますが、画像をエントリーのテキスト全体に背景として表示させることも可能です。
3.非推奨
画像を表示する場合、img タグをテンプレートに設定して
<h3 class="entry-header"><img src="http://hogehoge/images/image.gif"><$MTEntryTitle$></h3>
とする手もありますが、ウェブスタンダード的には
- 文書構造とデザインの混在
- 転送バイト数の増加
の点からお勧めではありません。
具体的には、画像を他の画像に変更したい場合、HTMLに img タグを直接記述していると文書構造を表すHTMLを変更しなければなりません。また、エントリータイトルが同一ページに複数存在する場合、img タグがエントリー数分必要となるため転送バイト数が増加し、僅かですが表示速度のパフォーマンスに影響します。
- YouTube動画にキャプションをつけてテキストを回り込ませる方法
- 画像を下揃えにしてテキストを回り込ませる方法
- style要素にCSSの擬似要素は記述可能か?
- position:relativeを設定すると他の要素がずれる場合の対処
- CSSでタブ切り替えする方法
- :target擬似クラスのまとめ
- CSSでヘッダを固定したスクロールテーブルを作る方法
- レスポンシブウェブデザインで画像を縮小する方法
- disabledなボタンのhoverのスタイルを無効にする方法
- HTML要素を別の要素を基点にしてCSSで絶対配置する方法
- :not擬似クラスでCSS3のサポートをチェックする方法
- :checked擬似クラスでチェックボックスに連動して要素を表示させる方法
- ol要素の入れ子で親の番号を子に割り当てる方法
- チェックボックスやラジオボタンを大きくする方法
- CSSで中央に配置する方法
≫ CSSでエントリータイトルに画像を表示する と、更新マーク from チームニゴイでございます。
いつもお世話になってる小粋空間さんのエントリー「CSSでエントリータイトルに画像... [続きを読む]
お世話になります。こんにちは。
ウチは思い切り悪い例です(^^ゞ
後日修正したいと思います。。。(^O^)
勉強になります(^^ゞ
お世話になります。こんにちは(^O^)
早速やってみました。意外と簡単で助かりました!ありがとうございました。
というわけでエントリーしてトラバさせていただきましたm(_ _)m
>くんぞーさん
こんばんは。
早速のご利用&トラックバックありがとうございました。
説明不足でしたが、くんぞーさんの元の設定からすると、h3 タグに直接スタイルを設定されても大丈夫ではないかと思います。よろしければお試しください。
ではでは!
yujiroさんこんにちは(^O^)
そうですよねぇ(^O^)
更新マークと差し替える方法があれしか思い浮かばなくて(^^ゞありがとうございましたm(_ _)m
>くんぞーさん
こんばんは。
すいません。そこまで読め切れてませんでした。
class 名を変更するのはグッドアイデアですね。
こんにちは(^O^)
yujiroさんにそう言っていただけると安心します(^_^)b
これからもよろしくお願い致しますm(_ _)m
>くんぞーさん
こちらこそ。
ではでは!
いつもお世話になっております
こちらの方法を使わせていただいておりますが
画像をエントリー名の左に載せる際、テキストよりも大きかった場合その分切れて表示されてしまうのですがこれを回避する方法はありますか?
>CHOBIさん
こんにちは。
ご質問の件ですが、貴サイトの場合であれば、.entry-header に height プロパティ、または line-height プロパティを設定すれば大丈夫と思われます。
それではよろしくお願い致します。
yujiro様、こんばんわ。
そしていろんなところで質問ばかりですみません。
以前はタイトル画像をつけることが出来たのですが、今回は出来ません。
まず、画像の大きさは37×15なので、padding-left: は一応40px;にしました。
位置的には納得したのですが、いろいろなところを削除したりしたのですが、元のテンプレートの縦棒を消すことができません。
そしてこの記事の最初の方で言っているテンプレートの●の削除。
ここが全くわかりません。
正直どのテンプレートをさわれば良いのかから「?」なのです。
完成品としてはpenでサラサラと書いている画像だけをイメージしているのですが、どうすれば良いのでしょうか?
たびたび申し訳ありませんがよろしくお願いいたします。
yujiro様、おはようございます。
いろいろとテンプレートを直したり、CSSを見直したりしましたが、今朝ボーっとやっていたらグレーの縦棒が消え、自分のアップデートした画像のみが表示されました。
いろいろお騒がせいたしましたが、無事解決に至った訳です。
また、helpコメントを出すかもしれませんが、その時はよろしくお願い致します。
こんにちは。
fc2ブログでお世話になっているBlendです。
素敵なテンプレートを使わせていただいています。
早速ですが、エントリータイトルの画像高さ50pxなのですが、
上記のやり方ですと、画像が入りきらないですよね?
画像をこれ以上はあまり小さくしたくないのです。
どうしたら全部映るようにできますか?
http://xxxblendxxx.blog.fc2.com/
よろしくお願い致します。
>crazy_blendさん
こんばんは。
テンプレートご利用ありがとうございます。
ご質問の件ですが、以下のようにしてみていただけますでしょうか。
.entry-header { background: url("http://blog-imgs-54-origin.fc2.com/x/x/x/xxxblendxxx/starbucks.jpg") no-repeat scroll 0 0 transparent; font-size: 100%; font-weight: bold; height: 55px; margin: 15px 0 0; padding-left: 45px; padding-top: 15px; }
画像がすべて表示されて、記事タイトルは画像の中央に表示されると思います。
それではよろしくお願い致します。