cssのアニメーションで 「ハンバーガーメニュー」 アイコンを作成してみました。
クリックするとメニューが動きます。
mouseoverの記述ですが、iPhoneでこれがあるとフォーカスが外れないようで動きが止まってしまいましたので、コメントアウトしました。
ソース
html
<div id="svg_box_01" class="svg_box">
<input type="checkbox" class="menu_open" name="menu_open_01" id="menu_open_01">
<label class="menu_open_button menu_button_01" for="menu_open_01" id="menu_open_button_01">
<span class="hamburger hamburger_1"></span>
<span class="hamburger hamburger_2"></span>
<span class="hamburger hamburger_3"></span>
</label>
</div>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter id="filter_01">
<fegaussianblur in="SourceGraphic" stdDeviation="10" result="blur" />
<fecolormatrix in="blur" mode="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 19 -9" result="filter_01" />
<fecomposite in="SourceGraphic" in2="filter_01" operator="atop"/>
</filter>
</defs>
</svg>
css
svg {
position: absolute;
top: 0;
left: 0;
width: 0;
height: 0;
}
.svg_box {
position: relative;
display: block;
text-align: center;
margin: 0;
width: 160px;
height: 160px;
}
.menu_open {
display: none;
}
.menu_open_button {
position: absolute;
top: 0;
left: 0;
width: 160px;
height: 160px;
color: #fff;
text-align: center;
line-height: 160px;
background: #39a9d6;
border-radius: 100%;
-webkit-transition-timing-function: ease;
transition-timing-function: ease;
-webkit-transition-duration: 400ms;
transition-duration: 400ms;
-webkit-transform: scale(1.0, 1.0) translate3d(0, 0, 0);
transform: scale(1.0, 1.0) translate3d(0, 0, 0);
cursor: pointer;
}
.hamburger {
display: block;
position: absolute;
top: 50%;
left: 50%;
margin-left: -30px;
margin-top: -3px;
width: 60px;
height: 3px;
background: #fff;
-webkit-transition: -webkit-transform 200ms;
transition: transform 200ms;
}
.hamburger_1 {
-webkit-transform: translate3d(0, -24px, 0);
transform: translate3d(0, -24px, 0);
}
.hamburger_2 {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.hamburger_3 {
-webkit-transform: translate3d(0, 24px, 0);
transform: translate3d(0, 24px, 0);
}
#svg_box_01 {
-webkit-filter: url("#filter_01");
filter: url("#filter_01");
}
/* checkbox */
#menu_open_01:checked + #menu_open_button_01 .hamburger_1 {
-webkit-transform: translate3d(0, 0, 0) rotate(45deg) scale(1.2, 1.2);
transform: translate3d(0, 0, 0) rotate(45deg) scale(1.2, 1.2);
}
#menu_open_01:checked + #menu_open_button_01 .hamburger_2 {
-webkit-transform: translate3d(0, 0, 0) scale(0.1, 1);
transform: translate3d(0, 0, 0) scale(0.1, 1);
}
#menu_open_01:checked + #menu_open_button_01 .hamburger_3 {
-webkit-transform: translate3d(0, 0, 0) rotate(-45deg) scale(1.2, 1.2);
transform: translate3d(0, 0, 0) rotate(-45deg) scale(1.2, 1.2);
}
/* mouseover */
/*
.menu_button_01:hover .hamburger_1 {
-webkit-transform: translate3d(0, 0, 0) rotate(45deg) scale(1.2, 1.2);
transform: translate3d(0, 0, 0) rotate(45deg) scale(1.2, 1.2);
}
.menu_button_01:hover .hamburger_2 {
-webkit-transform: translate3d(0, 0, 0) scale(0.1, 1);
transform: translate3d(0, 0, 0) scale(0.1, 1);
}
.menu_button_01:hover .hamburger_3 {
-webkit-transform: translate3d(0, 0, 0) rotate(-45deg) scale(1.2, 1.2);
transform: translate3d(0, 0, 0) rotate(-45deg) scale(1.2, 1.2);
}
*/
