レスポンシブデザインの時にハンバーガーメニューを入れる場面に直面することがあると思います。今回は普段実装に使うレスポンシブとワードプレスにも実装できる内容を紹介します。
まずはhtmlの実装です。
<header id="top-head"> <div class="inner"> <div id="mobile-head"> <h1 class="logo"></h1> <div id="nav-toggle"> <div> <span></span> <span></span> <span></span> </div> </div> </div><!---mobile-head end --> <nav id="global-nav" role="navigation"> <div id="gnav-container"> <ul id="gnav-ul" class="clearfix"> <li><a href="#">html</a></li> <li><a href="#">css</a></li> <li><a href="#">jquery</a></li> <li><a href="#">unity</a></li> <li><a href="#">javascript</a></li> </ul> </div> </nav> </div><!---inner end------> </header>
.inner { width: 980px; margin: 0 auto; position: relative; } .inner:after { content:""; clear: both; display: block; } /*--------header-----------*/ #top-head { top: -100px; position: absolute; width: 100%; margin: 100px auto 0; padding: 30px 0 0; line-height: 1; z-index: 999; } #top-head a, #top-head { color: #fff; text-decoration: none; } #top-head .inner { position: relative; } #top-head .logo { float: left; position: relative; font-size: 36px; height: 50px; } #top-head .logo a { position: absolute; width: 100%; height: 50px; } #global-nav ul { list-style: none; position: absolute; top: 20px; right: 0; font-size: 14px; } #global-nav ul li { float: left; padding:0 30px; border-left: 1px solid #000; } #global-nav ul li a { padding: 5px 5px; position: relative; display: inline-block; } #global-nav ul li a::after { content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 2px; -webkit-transform: scaleX(0); -ms-transform: scaleX(0); transform: scaleX(0); background-color: #fff; -webkit-transition: all .3s ease; transition: all .3s ease; } #global-nav ul li a:hover::after { -webkit-transform: scaleX(1); -ms-transform: scaleX(1); transform: scaleX(1); } nav span{ background:#666; height:2px; display:block; position:relative; width:50px; left:0; } /*--------固定化されたときのCSS-----------*/ #top-head.fixed { margin-top: 0; top: 0; position: fixed; padding-top: 10px; background: #fff; background: rgba(255,255,255,.7); transition: top 0.65s ease-in; -webkit-transition: top 0.65s ease-in; -moz-transition: top 0.65s ease-in; } #top-head.fixed .logo { position: relative; font-size: 24px; color: #333; } #top-head.fixed .logo a { position: absolute; width: 100%; height: 30px; } #top-head.fixed #global-nav ul li a { color: #333; padding: 0 20px; padding-bottom: 10px; } /*-----------スマホのトグルボタンのCSS-------------*/ #nav-toggle { display: none; position: absolute; right: 12px; top: 14px; width: 34px; height: 36px; cursor: pointer; z-index: 101; } #nav-toggle div { position: relative; } #nav-toggle span { display: block; position: absolute; height: 4px; width: 100%; background: #000; left: 0; -webkit-transition: .35s ease-in-out; -moz-transition: .35s ease-in-out; transition: .35s ease-in-out; } #nav-toggle span:nth-child(1) { top: 0; } #nav-toggle span:nth-child(2) { top: 11px; } #nav-toggle span:nth-child(3) { top: 22px; } /*---------gnav sp--------------*/ /*-----------スマホ-------------*/ @media screen and (max-width: 767px) { .head-inner { display: none; } .slick-next { right: 0; } #top-head, .inner { width: 100%; padding: 0; } #top-head { top: 0; position: fixed; margin-top: 0; } /* Fixed reset */ #top-head.fixed { padding-top: 0; background: transparent; } #mobile-head { background: #fff; width: 100%; height: 56px; z-index: 999; position: relative; } #top-head.fixed .logo, #top-head .logo { position: absolute; left: 13px; height: 50px; top: 15px; color: #333; font-size: 26px; } #global-nav { position: absolute; /* 開いてないときは画面外に配置 */ top: -500px; background: #000; width: 100%; text-align: center; padding: 10px 0; -webkit-transition: .5s ease-in-out; -moz-transition: .5s ease-in-out; transition: .5s ease-in-out; } #global-nav ul { list-style: none; position: static; right: 0; bottom: 0; font-size: 14px; } #global-nav ul li { float: none; position: static; padding: 18px 0; color: #fff; } #top-head #global-nav ul li a, #top-head.fixed #global-nav ul li a { width: 100%; display: block; color: #fff; padding: 18px 0; } #nav-toggle { display: block; } /* #nav-toggle 切り替えアニメーション */ .open #nav-toggle span:nth-child(1) { top: 11px; -webkit-transform: rotate(315deg); -moz-transform: rotate(315deg); transform: rotate(315deg); } .open #nav-toggle span:nth-child(2) { width: 0; left: 50%; } .open #nav-toggle span:nth-child(3) { top: 11px; -webkit-transform: rotate(-315deg); -moz-transform: rotate(-315deg); transform: rotate(-315deg); } /* #global-nav スライドアニメーション */ .open #global-nav { /* #global-nav top + #mobile-head height */ -moz-transform: translateY(556px); -webkit-transform: translateY(556px); transform: translateY(556px); } } /*------------タブレット用------------------*/ @media screen and (max-width: 1024px) { .head-inner { display: none; } .slick-next { right: 0; } #top-head, .inner { width: 100%; padding: 0; } #top-head { top: 0; position: fixed; margin-top: 0; } /* Fixed reset */ #top-head.fixed { padding-top: 0; background: transparent; } #mobile-head { background: #fff; width: 100%; height: 70px; z-index: 999; position: relative; } #top-head.fixed .logo, #top-head .logo { position: absolute; left: 13px; height: 50px; top: 15px; color: #333; font-size: 26px; } #global-nav { position: absolute; /* 開いてないときは画面外に配置 */ top: -500px; background: #000; width: 100%; text-align: center; padding: 10px 0; -webkit-transition: .5s ease-in-out; -moz-transition: .5s ease-in-out; transition: .5s ease-in-out; } #global-nav ul { list-style: none; position: static; right: 0; bottom: 0; font-size: 14px; } #global-nav ul li { float: none; position: static; padding: 18px 0; color: #fff; } #top-head #global-nav ul li a, #top-head.fixed #global-nav ul li a { width: 100%; display: block; color: #fff; padding: 18px 0; } #nav-toggle { display: block; right: 25px; top: 20px; } /* #nav-toggle 切り替えアニメーション */ .open #nav-toggle span:nth-child(1) { top: 11px; -webkit-transform: rotate(315deg); -moz-transform: rotate(315deg); transform: rotate(315deg); } .open #nav-toggle span:nth-child(2) { width: 0; left: 50%; } .open #nav-toggle span:nth-child(3) { top: 11px; -webkit-transform: rotate(-315deg); -moz-transform: rotate(-315deg); transform: rotate(-315deg); } /* #global-nav スライドアニメーション */ .open #global-nav { /* #global-nav top + #mobile-head height */ -moz-transform: translateY(556px); -webkit-transform: translateY(556px); transform: translateY(556px); } }
参考サイト:http://llc-beready.com/2016/07/30/post-358/