もくじ
ハンバーガーメニューをHTMLとCSSだけで作ってみる
WordPressのテーマ選びに失敗して、スマホサイズでメニューがない!とか、wp・テーマ更新したらメニューなくなったけど!という時に。簡単に後付けできるハンバーガーメニューを紹介します。
入れたいところに以下HTMLをコピペ
メニューに直で書き込む感じならこれをコピペ。
<div class="menubox">
<input id="tgl" type="checkbox" value="off">
<label id="hamuicon" for="tgl">≡</label>
<label id="menu" for="tgl"></label>
<div id="ham-menu">
<ul>
<li>メニュー1</li>
<li>メニュー2</li>
<li>メニュー3</li>
</ul>
</div>
</div>
入れてすぐはcssが効いてないのでこんな感じになります。

phpに入れるなら、カテゴリー呼び出ししたほうが更新も楽!
やってることは同じだけど、カテゴリーとして設定したものをすべて呼び出してくれるので、のちのちカテゴリ名の変更や増減があっても、勝手に変えてくれます。おすすめ。
<div class="menubox">
<input id="tgl" type="checkbox" value="off">
<label id="hamuicon" for="tgl">≡</label>
<label id="menu" for="tgl"></label>
<div id="ham-menu">
<ul>
<?php
$args = array(
'orderby' => 'name',
'parent' => 0
);
$categories = get_categories( $args );
foreach ( $categories as $category ) {
echo '<li><a href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a></li>';
}
?>
</ul>
</div>
</div>
入れる場所はheader.php
テーマやサイトによって異なると思いますが、だいたいはヘッダーの中に入れればOK。
このサイトで入れるならこの辺です。
ダッシュボードの外観からheader.phpへ

CSSで動くように調整
.menubox #ham-menu {
background-color: #fff;
box-sizing: border-box;
height: 100%;
padding: 4rem 2rem;
position: fixed;
right: -20rem;
top: 0;
transition: transform 0.3s linear 0s;
width: 20rem;
z-index: 1000;
}
.menubox #menu {
background-color: #333;
display: block;
height: 100%;
opacity: 0;
position: fixed;
right: 0;
top: 0;
transition: all 0.3s linear 0s;
width: 100%;
z-index: -1;
}
.menubox #hamuicon {
background-color: #fff;
border-radius: 1rem;
color: #333;
cursor: pointer;
display: block;
font-size: 3rem;
height: 3rem;
line-height: 3rem;
position: fixed;
right: 2rem;
text-align: center;
top: 5rem;
width: 3rem;
transition: all 0.3s linear 0s;
z-index: 1000;
}
.menubox #tgl {
display: none;
}
#tgl:checked ~ #ham-menu,
#tgl:checked ~ #hamuicon {
transform: translate(-20rem);
}
#tgl:checked ~ #hamuicon {
transform: translate(-17.3rem);
}
#tgl:checked ~ #menu {
opacity: 0.5;
z-index: 999;
}
cssを入れたら、右上にトグルボタンが出てきます。

左上にしたければ、.menubox #hamuiconのrightをleftに変更してください。
ボタンを押してみるとこんな感じで開きます。

右からにゅるっと出てきます。
メニューが全画面に出てくる応用編
さっきのCSSに以下を追加。全画面でメニューをセンターにもってきています。
文字サイズの調整やカラーなどの微調整は必要かも。

以下を追加で入れてくださいね。
.menubox #ham-menu {
background-color: #ffffffcf;
}
div#ham-menu ul {
width: 30rem;
display: block;
margin: 0 auto;
padding: 5rem;
}
#tgl:checked ~ #ham-menu {
width: 100%;
max-width: 100%;
right: 0;
transform: translate(0rem);
}
div#ham-menu ul {
width: 20rem;
display: block;
margin: 0 auto;
padding: 8rem 5rem;
}
div#ham-menu li {
font-size: 2rem;
}
#tgl:checked ~ #hamuicon {
transform: translate(-3rem);
background-color: #fff0;
z-index: 20000;
}
スマホサイズで出てくるようにしたい。
ブレイクポイントを決めてメディアクエリで設定しましょう。
このサイトだと、ブラウザを768px幅にしたときに、ナビゲーションメニューが消えてトグルになります。
そのタイミングがどこか探して、以下を追加。
必要になるまでは消えててくれて、必要なタイミング768px幅から出てきてねという指示を書いておきましょう。
@media screen and (min-width: 769px){
.menubox{
display: none;
}
}
@media screen and (max-width: 768px){
.menubox{
display:block;
}
}