画面全幅ヘッダー画像を設定

Simplicityの特徴 フォーラム Simplicity2に関する話題何でも 画面全幅ヘッダー画像を設定

  • このトピックには4件の返信、1人の参加者があり、最後にHidekichiにより9年、 5ヶ月前に更新されました。
4件の返信スレッドを表示中
  • 投稿者
    投稿
    • #50735
      kkyoisyo
      ゲスト

      先月からSimplicityを使わせてもらっています。
      わかりやすくシンプルな作りで大変気に入っております。

      画面全幅のヘッダー画像を設定しようとしていますが、うまく反映されません。
      https://wp-simplicity.com/how-to-set-big-header-image/に従って、カスタマイザーから行いましたがうまく行きません。
      また、過去のフォーラムのトピックから、`#header {
      background-image: url(“画像のURL”);
      background-position: 0 0;
      background-size: 100% auto;
      height: 150px;
      }`

      を見つけ、試してみましたが不可でした。
      この方法は、子テーマの(style.css)に記述しました。
      css自体が効いていないか、カスタマイザーの設定が優先されているか。という感じです。

      サイトは以下です。
      http://utairui.com/wp/

      原因や修正方法など、ご存知であれば是非ご教示ください。

    • #50736
      kkyoisyo
      ゲスト

      ヘッダー画像を(style.css)のbodyに記述し、以下の指定で一応全画面表示が可能になりましたが、

      background-position: 0 0;
      background-size: 100% auto;
      background-repeat: no-repeat;

      やはり、グローバルナビ以下のコンテンツが、ブラウザ幅の増減の影響を受けて上下してしまい、うまく行きません。

    • #50737
      Hidekichi
      ゲスト

      bodyにflexを入れているのが原因かと。

      body {
          display: flex;
          flex-flow: column;
          justify-content: center;
          background-image: url("http://utairui.com/wp/wp-content/uploads/Boovo-hed-img-big.png");
          background-position: 0 0;
          background-size: 100% auto;
          background-repeat: no-repeat;
      }

      すべて無しにして、

      #header {
          width: 100%;
          background-image: url("http://utairui.com/wp/wp-content/uploads/Boovo-hed-img-big.png");
          background-position: center center;
          background-size: cover;
          background-repeat: no-repeat;
          height: 0;
          padding: 0 0 46.728971963%;
          overflow: hidden;
          margin-bottom: 20px;
      }

      とすれば画面幅100%でいけます。flexは幅指定がないとその子要素の中身のサイズで最大のものに合うため一応目的の1070pxにはなっているわけですが、画面幅いっぱいにするためには解除する必要があります。
      またflex-flow: column wrapや縦並びの設定は何かとおかしくなるため、flex-flow: raw wrap;で横並びにして最大幅が設定したい場合は、max-widthなどをその要素に設定するなどする必要があるかと思います。

      上記の場合、高さは0にしてあるのでpaddingで高さを出します。上記のpaddingの値はボトムに現在の1070x500pxのアスペクト比を入れてあります。x:100%の時のyの値が46.728971963%ということです。これを小さくすれば高さも低くなります。

      background-sizeをcoverにして、background-positionでセンタリングしてあるので、高さを変えればそれに追従しますが、比率で設定してあるため、大きな画面では広くなりすぎます。そのため、メディアクエリで、

      @media screen and (min-width: 80em) {
        #header {
          padding: 0 0 20%;
        }
      }

      というのを書いておくと、80em(≒1280px)以上の時は20%で固定できます。小さい画面の場合は良いかと思うんですけどね。ここらはメディアクエリで調整して下さい。考えるポイントとしては、どの画面幅の時に目的のサイズにするかです。

      またヘッダのclearfixは、Simplicityのデフォルトかと思いますが、

      要素::after {
        content: "";
        display: table;
        clear: both;
      }

      と、中身にfloatが使われている親要素に入れればfixできます。
      ただし、これら高さを正しくもたせるとスクロール追従の動作で、フッターにスクロール要素がめり込むなどの問題が出る場合があるので、気をつけて下さい。

      今の設定のまま行くのであれば、

      #header {
          background-image: url("http://utairui.com/wp/wp-content/uploads/Boovo-hed-img-big.png");
          width: calc(100vw - 16px);
          margin-bottom: 20px;
      }

      というようなことをしてもできるにはできます。100vwはスクロールの幅も含めると思うので、その分を引く必要があります。スクロールの幅がブラウザによってまちまちで16pxでは対応できないような場合は、

      要素 {
        position: relative;
        left: 50%;
        width: 100vw;
        transform: translatex(-50%);
      }

      このようにすれば画像をセンタリングはできるかと思います。

    • #50776
      kkyoisyo
      ゲスト

      遅くなりましたが、大変丁寧なご説明ありがとうございます。
      とても勉強になりました。

      現在は1番目のご指摘の「paddingーbottom」を利用したもので、ブラウザ幅一杯のヘッダー画像を実現できました。
      flexはよく使いますが、理由はわかりませんがおっしゃるように「column」で期待通りの結果が得られないことがあります。

      最後のご指摘のものは、「transform」を使ったことがなくよく解りませんでした。

      ありがとうございました。

    • #50777
      Hidekichi
      ゲスト

      最後のはbodyにflexが質問時のように設定あるとして、#headerに利用します。
      要素の幅を100vwつまりは画面幅にして、leftで画面センターに持ってきますがそれだと画像左端がセンターに合うので、translatexで画面幅の半分だけマイナスすることでセンター寄せにします。

      100vwだと若干小さいかも知れませんが、足りないような場合は101vwとか微調整が必要です。

4件の返信スレッドを表示中
  • このトピックに返信するにはログインが必要です。
スポンサーリンク
アドセンス(大)
アドセンス(大)