
簡単!CSSだけで作るメガメニュー
最近よく見るメガメニューですが、簡単なものならCSSだけで実装できます。
まずは下記で動作をご確認ください。
デモ
ABOUTとCOMPANYにマウスを乗せるとメガメニューが開きます。
フェード
フェードイン・フェードアウトのアニメーションです。
See the Pen megaMenu by leo (@leo-trym) on CodePen.
アコーディオン
ちょっと工夫すればアコーディオンのような動きも可能です。
See the Pen megaMenuAcc by leo (@leo-trym) on CodePen.
サンプル
HTML
HTMLの構造は簡単です。
メインメニューの中にサブメニューが入ります。
<nav id="gnav">
<ul>
<li><a href="">HOME</a></li>
<li class="toggle">
<a href="">ABOUT</a>
<div class="menu">
<ul class="menu_inner">
<li><a href="">ABOUT SUB 01</a></li>
<li><a href="">ABOUT SUB 02</a></li>
<li><a href="">ABOUT SUB 03</a></li>
</ul>
<ul class="menu_inner">
<li><a href="">ABOUT SUB 04</a></li>
<li><a href="">ABOUT SUB 05</a></li>
<li><a href="">ABOUT SUB 06</a></li>
</ul>
</div>
</li>
<li><a href="">NEWS</a></li>
<li class="toggle">
<a href="">COMPANY</a>
<div class="menu">
<ul class="menu_inner">
<li><a href="">COMPANY SUB 01</a></li>
<li><a href="">COMPANY SUB 02</a></li>
<li><a href="">COMPANY SUB 03</a></li>
</ul>
</div>
</li>
<li><a href="http://shopblog.onward.co.jp/brand/jpress-men" target="_blank">BLOG</a></li>
</ul>
</nav>
CSS
メインメニューの:hover擬似クラスでサブメニューを表示します。
#gnav > ul {
display: table;
padding-left: 50px;
}
#gnav > ul > li {
display: table-cell;
margin-right: 2em;
}
#gnav > ul > li:hover {
color: #fff;
background-color: #19192b;
}
#gnav > ul > li:hover > a {
color: #fff;
}
#gnav > ul > li:hover .menu {
max-height: 9999px;
opacity: 1;
}
#gnav > ul > li > a {
display: block;
padding: 25.5px 1em 15.5px;
transition: all .2s ease-in;
}
#gnav > ul .menu {
transition: all .2s ease-in;
max-height: 0;
opacity: 0;
overflow: hidden;
width: 100%;
left: 0;
text-align: center;
position: absolute;
background-color: #19192b;
}
#gnav > ul .menu .menu_inner {
padding: 1em 0;
}
#gnav > ul .menu .menu_inner li {
display: inline-block;
margin: 0 .5em;
}
#gnav > ul .menu a {
color: #fff;
}
CSSのアニメーションで display: none から display: block には出来ないので、
max-heightを使って表示非表示をコントロールしています。
Writer
KO
誕生日に会社のみんなから『世界文学全集』をプレゼントしてもらった読書好きフロントエンド・エンジニアです。WordPressとMovableTypeが得意ですが、本当の特技は薪割りです。







































