はてなブログで、レスポンシブデザインのテーマを使い、ヘッダに画像を当てるとその配置に結構苦労します。特に背景イメージではなくタイトルですと、スマホでタイトルがはみ出したりします。
私自身もうまくいかないなあと思いつつ背景イメージでしたので適当にやっていたのですが、これを機にといろいろやってみました。
01背景画像の構造
ココッチィさんのタイトル画像を借りたテストサイトです。テーマは公式の Evergreen を使っており、分かりやすいように背景を赤にしています。
画像は、切り出しのデフォルトが 1000px × 200px になっていますので、そのサイズの画像をあてた場合です。
iPhone5(ブラウザサイズ320px)ですとはみ出してしまいます。
どういう構造になっているかといいますと、画像自体は、id="blog-title-inner"
にインラインでスタイルが設定してあります。
<div id="blog-title-inner" style="background-image: url('画像'); background-position: center 0;"> <div id="blog-title-content"> <h1 id="title"><a href="サイトURL">テストサイト</a></h1> <h2 id="blog-description">はてなブログテーマ テスト用</h2> </div> </div>
CSS はこうなっています。
.header-image-only #blog-title #blog-title-inner { background-repeat: no-repeat; position: relative; height: 200px; }
.header-image-only
は「画像だけ表示」を選択した場合のクラスです。
02メディアクエリを使って調整してみる
スマホ用の CSS を 480px で切っている場合は、次の CSS の 120px を適当なサイズに調整して追加すればうまくおさまります。
@media (max-width: 480px) { .header-image-only #blog-title #blog-title-inner { background-size: auto 120px; height: 120px; } }
(9/29)height
さえ指定すればbackground-size: cover;
でいけますね。
@media (max-width: 480px) { .header-image-only #blog-title #blog-title-inner { background-size: cover; height: 120px; } }
03背景イメージをデスクトップとスマホで同じように配置する
画像サイズ 1000px × 200px の場合
次の CSS を追加すると、
@media (max-width: 480px) { .header-image-enable #blog-title #blog-title-inner { background-size: auto 120px; height: 120px; } .header-image-enable #title { padding-top: 30px; } }
こうなります。
画像サイズ 1200px × 800px の場合
上の画像は公式サイトのものですが、オリジナルは 1200px × 800px のサイズです。
これをほぼ中央で切り出し、id="blog-title-inner"
のインラインスタイルが次の場合は、
<div id="blog-title-inner" style="background-image: url('画像'); background-position: center -300px;"> <div id="blog-title-content"> <h1 id="title"><a href="サイトURL">テストサイト</a></h1> <h2 id="blog-description">はてなブログテーマ テスト用</h2> </div> </div>
これでほぼ同じような配置になります。
@media (max-width: 480px) { .header-image-enable #blog-title #blog-title-inner { height: 170px; margin-top: -50px; } .header-image-enable #title { padding-top: 75px; } }