【はてなブログ】ヘッダの背景画像の位置調整(レスポンシブデザインの場合)

【はてなブログ】ヘッダの背景画像の位置調整(レスポンシブデザインの場合)

はてなブログで、レスポンシブデザインのテーマを使い、ヘッダに画像を当てるとその配置に結構苦労します。特に背景イメージではなくタイトルですと、スマホでタイトルがはみ出したりします。

私自身もうまくいかないなあと思いつつ背景イメージでしたので適当にやっていたのですが、これを機にといろいろやってみました。

背景画像の構造

ココッチィさんのタイトル画像を借りたテストサイトです。テーマは公式の 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は「画像だけ表示」を選択した場合のクラスです。

メディアクエリを使って調整してみる

スマホ用の 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;
  }
}

背景イメージをデスクトップとスマホで同じように配置する

画像サイズ 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;
  }
}