SWELL│960px付近のヘッダーの表示崩れ対策

SWELLはブレイクポイント959pxからのハンバーガーメニューが出るまでの間、ギリギリの960pxで表示が崩れることが多いです。

SWELLがデフォルトの状態が前提です。

フォントを小さくするとか、メディアクエリを細かく入れるとかの対策は嫌なので、まずは余白をなんとかする方向で考えてみました。

さっさとなんとかしたい人向けです。

こちらをコピペすればOKです。

/* ヘッダー全体の左右の余白 */
@media (min-width: 960px) and (max-width: 1200px) {
    :root {
        --swl-pad_container: 16px;
    }
}

/* ロゴ全体の右の余白 */
@media (min-width: 960px) {
    .-series .l-header__logo {
        margin-right: 0;
    }
}

/* ロゴパーツの右の余白 */
@media (min-width: 960px) and (max-width: 1100px) {
    .-series .c-headLogo {
        margin-right: 0;
    }
}

/* ヘッダー内部とメニューとの余白 */
.-series-right .w-header {
    margin-left: 6px;
}

/* ヘッダー内部に残りの余白を使う */
.w-header.pc_ {
    flex-shrink: 0;
}
目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

960px付近のヘッダーメニューの表示崩れ対策をする

全体のフォントサイズを下げてもいいのですが、今回は余白を調整してみます。

左右の端のpaddingを減らす

デフォルトです。

@media (min-width: 960px) {
    :root {
        --swl-pad_container: 32px;
    }
}

となっているので、少し減らすと良いです。

@media (min-width: 960px) and (max-width: 1200px) {
    :root {
        --swl-pad_container: 16px;
    }
}

ちなみにデフォルトでは1200px以上から48pxtと左右の表示間隔が広がります。

@media (min-width: 1200px) {
    :root {
        --swl-pad_container: 48px;
    }
}

ロゴの右余白を減らす(2箇所)

デフォルトでmargin-right: 24px;の値が入っています。

@media (min-width: 960px) {
    .-series .l-header__logo {
        margin-right: 24px;
    }
}

メニューの表示にもよりますが、右寄せにしているならpaddingは0でも問題ないです。

@media (min-width: 960px) {
    .-series .l-header__logo {
        margin-right: 0;
    }
}

こちらも減らせそうなので減らします。

@media (min-width: 960px) {
    .-series .c-headLogo {
        margin-right: 16px;
    }
}

0にしました。

※キャッチフレーズがある場合は余白が欲しいので1100pxとしています。

@media (min-width: 960px) and (max-width: 1100px) {
    .-series .c-headLogo {
        margin-right: 0;
    }
}

ヘッダー内部の要素にできる左の余白を調整する

ウィジェットのヘッダー内部にボタンを入れるとメニューとの間に余白ができます。

@media (min-width: 960px) {
    .-series-right .w-header {
        margin-left: 12px;
    }
}

削ります。

.-series-right .w-header {
    margin-left: 0;
}
調整するのはお勧めしない箇所

✖️メニューの左の余白は削らない

メニューの左側もautoとなっていて、少し減らせますが、右寄せが消えてしまうのでNG

@media (min-width: 960px) {
    .-series-right .c-gnavWrap {
        margin-left: auto;
    }
}

✖️メニュー同士の間隔を狭めない

タップしづらくなるので、あまりやりたくないのですが、メニュー同士の間隔を狭めることは可能です。

デフォルト

@media (max-width: 1080px) {
    .c-gnav>.menu-item>a {
        padding: 0 8px;
    }
}

今回はやめておきます。

削った結果

というような感じで削ると、画面幅960pxでもフォントのサイズを変えずにメニューが入りました。

最終的に調整したCSS

要するにこちらをコピペすればOKです。

/* ヘッダー全体の左右の余白 */
@media (min-width: 960px) and (max-width: 1200px) {
    :root {
        --swl-pad_container: 16px;
    }
}

/* ロゴ全体の右の余白 */
@media (min-width: 960px) {
    .-series .l-header__logo {
        margin-right: 0;
    }
}

/* ロゴパーツの右の余白 */
@media (min-width: 960px) and (max-width: 1100px) {
    .-series .c-headLogo {
        margin-right: 0;
    }
}

/* ヘッダー内部とメニューとの余白 */
.-series-right .w-header {
    margin-left: 6px;
}

/* ヘッダー内部に残りの余白を使う */
.w-header.pc_ {
    flex-shrink: 0;
}

キャッチフレーズも入れる場合

キャッチフレーズもある場合も、960pxでやはり崩れてしまいます。

しかしキャッチフレーズは折り返されるので、出来た残りの余白をボタン(ヘッダー内部のウィジェット)に集めれば良さそうです。

.w-header.pc_ {
    flex-shrink: 0;
}

最大幅を設定するのであれば、下記のように記載してもOKです。

.w-header.pc_ {
    flex: 1;
    max-width: 156px;
}

なんとかヘッダーメニューおさまりました。

まとめ

めちゃめちゃマニアックな記事ですが…

SWELLの元々のCSSを調整すれば、ある程度のメニュー量でも崩れずに表示できます。

  • URLをコピーしました!
目次