読者です 読者をやめる 読者になる 読者になる

IMUZA.com

Joomla!によるウェブ制作, PHP, Javascript, CSS

はてなブログ

はてなブログ テーマ制作
・とことこ with Menubar
・Simple Responsive with Menubar
・Mobile-First Responsive
・Hyperspace

Joomla!

Joomla! によるウェブ制作
・テンプレート自作
・モジュール自作
・Joomla!でサイト構築

Web Tips

ウェブサイトづくりに役立つかも
・Javascript
・CSS

Windows, Linux

Windows10
Plamo Linux

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

はてなブログ

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

私自身もうまくいかないなあと思いつつ背景イメージでしたので適当にやっていたのですが、ココッチィさんから相談を受けましたので、これを期にといろいろやってみました。



背景画像の構造

ココッチィさんのタイトル画像を借りたテストサイトです。テーマは公式の Evergreen を使っており、分かりやすいように背景を赤にしています。

画像は、切り出しのデフォルトが 1000px × 200px になっていますので、そのサイズの画像をあてた場合です。

f:id:ausnichts:20160928135921j:plain


iPhone5(ブラウザサイズ320px)ですとはみ出してしまいます。

f:id:ausnichts:20160928140130j:plain


どういう構造になっているかといいますと、画像自体は、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;
  }
}


f:id:ausnichts:20160928141843j:plain


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

画像サイズ 1000px × 200px の場合

f:id:ausnichts:20160928144521j:plain

f:id:ausnichts:20160928144723j:plain

次の 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;
  }
}

こうなります。

f:id:ausnichts:20160928145353j:plain

画像サイズ 1200px × 800px の場合

上の画像は公式サイトのものですが、オリジナルは 1200px × 800px のサイズです。

f:id:ausnichts:20160928152013j:plain

これをほぼ中央で切り出し、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;
  }
}