質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

  • HTML

    9571questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • CSS

    6200questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

  • Bootstrap

    1037questions

    BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

bootstrap / navbar ハンバーガーメニューカスタム

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,479

DarkAnt80000

score 2

現在bootstrapにてナビゲーションを作成中です。何点かうまくいかない点がありますので、ご教授お願いいたします。

・bootstrapでは標準指定されていない、670px以下にウィンドウの幅がなった時にハンバーガーメニューを表示したい。

・ハンバーガーアイコンの見た目を下記の画像のようにしたい。
イメージ説明

・ハンバーガーメニューを表示した際に以下の画像のようにしたい。
イメージ説明

<!doctype html>
<html lang="en">

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="copyright" content="Copyright (C) dotinstall.com">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB"
        crossorigin="anonymous">

    <style>
        /* navigation */

        body {
            color: #333;
            text-align: left;
            margin: 0;
            padding: 0;
            background: #fff;
            word-wrap: break-word;
            overflow: visible;
            font-family: Verdana, sans-serif !important;
            /* font-family: Verdana, sans-serif; */
            font-size: 16px;
            line-height: 1.5;
            letter-spacing: 0;
            max-width: 940px;
        }

        /* 全体の幅 */

        .inner-section {
            width: 940px;
            padding: 0;
            margin: 0 auto;
        }

        /* トップページを非表示 */

        .disp-sp {
            display: none !important;
        }

        nav {
            padding: 0;
        }

        .logo img {
            width: 208px;
        }

        li.top_nav {
            padding-right: 14px;
            padding-left: 14px;
        }

        li.top_nav a {
            font-size: 15px;
            margin-top: 22px;
            height: 58px;
        }

        li.top_nav a:hover {
            color: #168eea !important;
        }

        span {
            text-align: center;
            letter-spacing: 0.15em;
            font-size: 10px;
            color: #dcdcdc;
        }

        @media screen and (max-width: 670px) {
            /* 全体の幅 */
            .inner-section {
                width: auto;
            }
            /* トップページを表示 */
            .disp-sp {
                display: block !important;
            }
            /* spanクラスを非表示 */
            .disp-pc {
                display: none !important;
            }

            li.top_nav a {
                display: block !important;
                padding: 13px 0 !important;
                color: #666 !important;
                text-decoration: none !important;
                font-weight: normal !important;
                font-size: 17px !important;
                line-height: 1 !important;
            }
            li.top_nav a:hover {
                color: #000 !important;
            }
        }
    </style>
</head>

<body>

    <!-- navigation -->

    <div class="inner-section">
        <nav class="navbar navbar-light bg-light navbar-expand-sm py-0 px-0">
            <!-- クラスを2つ追加 -->

            <!-- ナビロゴ -->
            <a class="logo navbar-brand" href="step3_2.html">
                <img src="images/logo.png" alt="">
            </a>

            <!-- メニューアイコン -->
            <button class="navbar-toggler" data-toggle="collapse" data-target="#menu">
                <span class="navbar-toggler-icon"></span>
            </button>

            <!-- メニュー -->
            <div id="menu" class="collapse navbar-collapse justify-content-end">
                <ul class="nav navbar-nav">
                    <li class="top_nav nav-item text-center">
                        <a class="nav-link" href="#">会社情報
                            <span class="disp-pc navbar-text d-block py-0">COMPANY</span>
                        </a>

                    </li>
                    <li class="top_nav nav-item text-center">
                        <a class="nav-link" href="#">運営サービス
                            <span class="disp-pc navbar-text d-block py-0">SERVICE</span>
                        </a>

                    </li>
                    <li class="top_nav nav-item text-center">
                        <a class="nav-link" href="#">お知らせ
                            <span class="disp-pc navbar-text d-block py-0">NEWS</span>
                        </a>

                    </li>
                    <li class="top_nav nav-item text-center">
                        <a class="nav-link" href="#">採用情報
                            <span class="disp-pc navbar-text d-block py-0">RECRUIT</span>
                        </a>

                    </li>
                    <li class="top_nav nav-item text-center">
                        <a class="nav-link " href="">お問合わせ
                            <span class="disp-pc navbar-text d-block py-0">CONTACT</span>
                        </a>

                    </li>
                    <li class="disp-sp top_nav nav-item text-center">
                        <a class="nav-link" href="">トップページ</a>
                    </li>
                </ul>
            </div>

        </nav>
    </div>
    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
        crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
        crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js" integrity="sha384-smHYKdLADwkXOn1EmN1qk/HfnUcbVRZyYmZ4qpPea6sjB/pTJ0euyQp0Mk8ck+5T"
        crossorigin="anonymous"></script>
</body>

</html>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

+1

bootstrapでは標準指定されていない、670px以下にウィンドウの幅がなった時にハンバーガーメニューを表示したい。

Bootstrap 4では、navbar-expand-*クラスでハンバーガーメニューの表示、非表示の設定が行われています。
Bootstrapにあるのはnavbar-expand-smnavbar-expand-mdnavbar-expand-lgnavbar-expand-xlクラスのみで、質問者さんが実現したい670px以下というのは用意されていません(参考)。そこで、navbar-expand-customクラスとして、671px以上でハンバーガーメニューを非表示にするようなCSSを用意します。

@media screen and (min-width: 671px) {
    .navbar-expand-custom {
        flex-flow: row nowrap;
        justify-content: flex-start;
    }

    .navbar-expand-custom .navbar-toggler {
        display: none;
    }

    .navbar-expand-custom .navbar-collapse {
        display: flex !important;
        flex-basis: auto;
    }

    .navbar-expand-custom .navbar-nav {
        flex-direction: row;
    }

    .navbar-expand-custom .navbar-toggler {
        display: none;
    }
}


そして、これをnavbar-expand-*クラスの代わりに設定すれば、670px以下のウィンドウ幅でハンバーガーメニューが表示されるようになるはずです(動作確認用リンク)。

ハンバーガーアイコンの見た目を下記の画像のようにしたい。

ハンバーガーメニューのボーダー用にicon-barクラスを用意することで行えます。また、詳細は省略しますが、navbar-toggler-iconクラスのスタイルを変更することでも実現出来ると思います。

.navbar-toggler {
    padding: 10px;
}

.icon-bar {
    display: block;
    width: 3em;
    height: .5em;
    border-radius: 1px;
    background: #000;
}

.icon-bar + .icon-bar {
    margin-top: 3px;
}


このクラスを設定する上で、HTMLにも多少変更を加える必要があります。

<!doctype html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <meta name="copyright" content="Copyright (C) dotinstall.com">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css">
    <style>
        body {
            color: #333;
            text-align: left;
            margin: 0;
            padding: 0;
            background: #fff;
            word-wrap: break-word;
            overflow: visible;
            font-family: Verdana, sans-serif !important;
            font-size: 16px;
            line-height: 1.5;
            letter-spacing: 0;
            max-width: 940px;
        }

        .inner-section {
            width: 940px;
            padding: 0;
            margin: 0 auto;
        }

        .disp-sp {
            display: none !important;
        }

        nav {
            padding: 0;
        }

        .logo img {
            width: 208px;
        }

        li.top_nav {
            padding-right: 14px;
            padding-left: 14px;
        }

        li.top_nav a {
            font-size: 15px;
            margin-top: 22px;
            height: 58px;
        }

        li.top_nav a:hover {
            color: #168eea !important;
        }

        span {
            text-align: center;
            letter-spacing: 0.15em;
            font-size: 10px;
            color: #dcdcdc;
        }

        @media screen and (min-width: 671px) {
            .navbar-expand-custom {
                flex-flow: row nowrap;
                justify-content: flex-start;
            }

            .navbar-expand-custom .navbar-toggler {
                display: none;
            }

            .navbar-expand-custom .navbar-collapse {
                display: flex !important;

                flex-basis: auto;
            }

            .navbar-expand-custom .navbar-nav {
                flex-direction: row;
            }

            .navbar-expand-custom .navbar-toggler {
                display: none;
            }
        }

        @media screen and (max-width: 670px) {
            .inner-section {
                width: auto;
            }

            .disp-sp {
                display: block !important;
            }

            .disp-pc {
                display: none !important;
            }

            li.top_nav a {
                display: block !important;
                padding: 13px 0 !important;
                color: #666 !important;
                text-decoration: none !important;
                font-weight: normal !important;
                font-size: 17px !important;
                line-height: 1 !important;
            }

            li.top_nav a:hover {
                color: #000 !important;
            }

            .navbar-toggler {
                padding: 10px;
            }

            .icon-bar {
                display: block;
                width: 3em;
                height: .5em;
                border-radius: 1px;
                background: #000;
            }

            .icon-bar + .icon-bar {
                margin-top: 3px;
            }
        }
    </style>
</head>
<body>

<!-- navigation -->

<div class="inner-section">
    <nav class="navbar navbar-light bg-light navbar-expand-custom py-0 px-0">
        <!-- クラスを2つ追加 -->

        <!-- ナビロゴ -->
        <a class="logo navbar-brand" href="step3_2.html">
            <img src="images/logo.png" alt="">
        </a>

        <!-- メニューアイコン -->
        <button class="navbar-toggler" data-toggle="collapse" data-target="#menu">
            <span class="icon-bar"> </span>
            <span class="icon-bar"> </span>
            <span class="icon-bar"> </span>
        </button>

        <!-- メニュー -->
        <div id="menu" class="collapse navbar-collapse justify-content-end">
            <ul class="nav navbar-nav">
                <li class="top_nav nav-item text-center">
                    <a class="nav-link" href="#">会社情報
                        <span class="disp-pc navbar-text d-block py-0">COMPANY</span>
                    </a>

                </li>
                <li class="top_nav nav-item text-center">
                    <a class="nav-link" href="#">運営サービス
                        <span class="disp-pc navbar-text d-block py-0">SERVICE</span>
                    </a>

                </li>
                <li class="top_nav nav-item text-center">
                    <a class="nav-link" href="#">お知らせ
                        <span class="disp-pc navbar-text d-block py-0">NEWS</span>
                    </a>

                </li>
                <li class="top_nav nav-item text-center">
                    <a class="nav-link" href="#">採用情報
                        <span class="disp-pc navbar-text d-block py-0">RECRUIT</span>
                    </a>

                </li>
                <li class="top_nav nav-item text-center">
                    <a class="nav-link " href="">お問合わせ
                        <span class="disp-pc navbar-text d-block py-0">CONTACT</span>
                    </a>

                </li>
                <li class="disp-sp top_nav nav-item text-center">
                    <a class="nav-link" href="">トップページ</a>
                </li>
            </ul>
        </div>
    </nav>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"</script>
</body>
</html>

ハンバーガーメニューを表示した際に以下の画像のようにしたい。

具体的にどのようにしたいのかがわからないため、記述のしようがありません。
実現したいことを整理して、別質問として投稿してください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • HTML

    9571questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • CSS

    6200questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

  • Bootstrap

    1037questions

    BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。