퍼블리싱/css
12가지 햄버거메뉴 종류
xhakxh135
2022. 2. 8. 10:04
반응형
SMALL
var burger = $('.menu-trigger');
burger.each(function(index){
var $this = $(this);
$this.on('click', function(e){
e.preventDefault();
$(this).toggleClass('active-' + (index+1));
})
});
<script
src="https://code.jquery.com/jquery-3.6.0.js"
integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="
crossorigin="anonymous"></script>
<a class="menu-trigger" href="#">
<span></span>
<span></span>
<span></span>
</a>
<a class="menu-trigger" href="#">
<span></span>
<span></span>
<span></span>
</a>
<a class="menu-trigger" href="#">
<span></span>
<span></span>
<span></span>
</a>
<a class="menu-trigger" href="#">
<span></span>
<span></span>
<span class="nthtype-04"></span>
</a>
<a class="menu-trigger" href="#">
<span></span>
<span></span>
<span></span>
</a>
<a class="menu-trigger" href="#">
<span></span>
<span></span>
<span></span>
</a>
<a class="menu-trigger type7" href="#">
<span></span>
<span></span>
<span></span>
</a>
<a class="menu-trigger" href="#">
<span></span>
<span></span>
<span></span>
</a>
<a class="menu-trigger" href="#">
<span></span>
<span></span>
<span></span>
</a>
<a class="menu-trigger" href="#">
<span></span>
<span></span>
<span></span>
</a>
<a class="menu-trigger type11" href="#">
<span></span>
<span></span>
<span></span>
</a>
<a class="menu-trigger type12" href="#">
<span></span>
<span></span>
<span></span>
</a>
body {
background-color: #333;
width: 500px;
margin: 30px auto;
}
.menu-trigger {
margin-right: 70px;
margin-bottom: 50px;
}
.menu-trigger,
.menu-trigger span {
display: inline-block;
transition: all .4s;
box-sizing: border-box;
}
.menu-trigger {
position: relative;
width: 50px;
height: 44px;
}
.menu-trigger span {
position: absolute;
left: 0;
width: 100%;
height: 4px;
background-color: #fff;
border-radius: 4px;
}
.menu-trigger span:nth-of-type(1) {
top: 0;
}
.menu-trigger span:nth-of-type(2) {
top: 20px;
}
.menu-trigger span:nth-of-type(3) {
bottom: 0;
}
/* type-01 */
/* 중앙 라인이 고정된 자리에서 투명하게 사라지며 상하라인 회전하며 엑스자 만들기 */
.menu-trigger.active-1 span:nth-of-type(1) {
-webkit-transform: translateY (20px) rotate (-45deg);
transform: translateY(20px) rotate(-45deg);
}
.menu-trigger.active-1 span:nth-of-type(2) {
opacity: 0;
}
.menu-trigger.active-1 span:nth-of-type(3) {
-webkit-transform: translateY(-20px) rotate(45deg);
transform: translateY(-20px) rotate(45deg);
}
/* type-02 */
/* 중앙 라인이 고정된 자리에서 투명하게 사라지며 상하라인 회전하며 엑스자 만들기 */
.menu-trigger.active-2 span:nth-of-type(1) {
-webkit-transform : translateY(20px) rotate(-315deg);
transform : translateY(20px) rotate(-315deg);
}
.menu-trigger.active-2 span:nth-of-type(2) {
opacity : 0;
}
.menu-trigger.active-2 span:nth-of-type(3) {
-webkit-transform : translateY(-20px) rotate(315deg);
transform : translateY(-20px) rotate(315deg);
}
/* type-03 */
/* 메뉴 전체가 회전하면서 엑스자 버튼 만들기 */
.menu-trigger.active-3 {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
.menu-trigger.active-3 span:nth-of-type(1) {
-webkit-transform: translateY(20px) rotate(-45deg);
transform: translateY(20px) rotate(-45deg);
}
.menu-trigger.active-3 span:nth-of-type(2) {
-webkit-transform: translateY(0) rotate(45deg);
transform: translateY(0) rotate(45deg);
}
.menu-trigger.active-3 span:nth-of-type(3) {
opacity: 0;
}
/* type-04 */
/* 메뉴 전체가 회전하면서 엑스자 버튼 만들기 #2 */
.menu-trigger span.nthtype-04,
.menu-trigger.active-4 span:nth-of-type(3) {
transition : none;
}
.menu-trigger.active-4 {
-webkit-transform : rotateX(720deg);
transform : rotateX(720deg);
}
.menu-trigger.active-4 span:nth-of-type(1) {
-webkit-transform : translateY(20px) rotate(-45deg);
transform : translateY(20px) rotate(-45deg);
}
.menu-trigger.active-4 span:nth-of-type(2) {
-webkit-transform : translateY(0) rotate(45deg);
transform : translateY(0) rotate(45deg);
}
.menu-trigger.active-4 span:nth-of-type(3) {
opacity : 0;
}
/* type-05 */
/* 중앙 라인이 밖으로 빠지면서 상하라인 엑스자 만들기 */
.menu-trigger.active-5 span:nth-of-type(1) {
-webkit-transform : translateY(20px) rotate(-45deg);
transform : translateY(20px) rotate(-45deg);
}
.menu-trigger.active-5 span:nth-of-type(2) {
left : 50%;
opacity : 0;
-webkit-animation : active-menu-bar05 .8s forwards;
animation : active-menu-bar05 .8s forwards;
}
@-webkit-keyframes active-menu-bar05 {
100% {
height: 0;
}
}
@keyframes active-menu-bar05 {
100% {
height: 0;
}
}
.menu-trigger.active-5 span:nth-of-type(3) {
-webkit-transform : translateY(-20px) rotate(45deg);
transform : translateY(-20px) rotate(45deg);
}
/* type-06 */
/* 중앙 라인이 밖으로 멀리 날아가듯 빠지면서 상하라인 엑스자 만들기 */
.menu-trigger.active-6 span:nth-of-type(1) {
-webkit-transform : translateY(20px) rotate(-45deg);
transform : translateY(20px) rotate(-45deg);
}
.menu-trigger.active-6 span:nth-of-type(2) {
left : 200%;
opacity : 0;
-webkit-transform : translateY(10px);
transform : translateY(10px);
-webkit-animation : active-menu-bar06 .8s forwards;
animation : active-menu-bar06 .8s forwards;
}
@-webkit-keyframes active-menu-bar06 {
100% {
height : 0;
}
}
@keyframes active-menu-bar06 {
100% {
height : 0;
}
}
.menu-trigger.active-6 span:nth-of-type(3) {
-webkit-transform : translateY(-20px) rotate(45deg);
transform : translateY(-20px) rotate(45deg);
}
/* type-07 */
/* 라인이 하나로 합쳐졌다가 엑스자 만들기 */
.menu-trigger.type7 span:nth-of-type(1) {
-webkit-animation : menu-bar07-01 .75s forwards;
animation : menu-bar07-01 .75s forwards;
}
@-webkit-keyframes menu-bar07-01 {
0% {
-webkit-transform : translateY(20px) rotate(45deg);
}
50% {
-webkit-transform : translateY(20px) rotate(0);
}
100% {
-webkit-transform : translateY(0) rotate(0);
}
}
@keyframes menu-bar07-01 {
0% {
transform : translateY(20px) rotate(45deg);
}
50% {
transform : translateY(20px) rotate(0);
}
100% {
transform : translateY(0) rotate(0);
}
}
.menu-trigger.type7 span:nth-of-type(2) {
transition : all .25s .25s;
opacity : 1;
}
.menu-trigger.type7 span:nth-of-type(3) {
-webkit-animation : menu-bar07-02 .75s forwards;
animation : menu-bar07-02 .75s forwards;
}
@-webkit-keyframes menu-bar07-02 {
0% {
-webkit-transform : translateY(-20px) rotate(-45deg);
}
50% {
-webkit-transform : translateY(-20px) rotate(0);
}
100% {
-webkit-transform : translateY(0) rotate(0);
}
}
@keyframes menu-bar07-02 {
0% {
transform : translateY(-20px) rotate(-45deg);
}
50% {
transform : translateY(-20px) rotate(0);
}
100% {
transform : translateY(0) rotate(0);
}
}
.menu-trigger.active-7 span:nth-of-type(1) {
-webkit-animation : active-menu-bar07-01 .75s forwards;
animation : active-menu-bar07-01 .75s forwards;
}
@-webkit-keyframes active-menu-bar07-01 {
0% {
-webkit-transform : translateY(0) rotate(0);
}
50% {
-webkit-transform : translateY(20px) rotate(0);
}
100% {
-webkit-transform : translateY(20px) rotate(45deg);
}
}
@keyframes active-menu-bar07-01 {
0% {
transform : translateY(0) rotate(0);
}
50% {
transform : translateY(20px) rotate(0);
}
100% {
transform : translateY(20px) rotate(45deg);
}
}
.menu-trigger.active-7 span:nth-of-type(2) {
opacity : 0;
}
.menu-trigger.active-7 span:nth-of-type(3) {
-webkit-animation : active-menu-bar07-02 .75s forwards;
animation : active-menu-bar07-02 .75s forwards;
}
@-webkit-keyframes active-menu-bar07-02 {
0% {
-webkit-transform : translateY(0) rotate(0);
}
50% {
-webkit-transform : translateY(-20px) rotate(0);
}
100% {
-webkit-transform : translateY(-20px) rotate(-45deg);
}
}
@keyframes active-menu-bar07-02 {
0% {
transform : translateY(0) rotate(0);
}
50% {
transform : translateY(-20px) rotate(0);
}
100% {
transform : translateY(-20px) rotate(-45deg);
}
}
/* type-08 */
/* 상하라인이 움직여 화살표 만들기 */
.menu-trigger.active-8 span:nth-of-type(1),
.menu-trigger.active-8 span:nth-of-type(3) {
width : 20px;
}
.menu-trigger.active-8 span:nth-of-type(1) {
-webkit-transform : translate(-1px, 13px) rotate(-45deg);
transform : translate(-1px, 13px) rotate(-45deg);
}
.menu-trigger.active-8 span:nth-of-type(3) {
-webkit-transform : translate(-1px, -13px) rotate(45deg);
transform : translate(-1px, -13px) rotate(45deg);
}
/* type-09 */
/* 전체가 회전하며 화살표 만들기 */
.menu-trigger.active-9 {
-webkit-transform : rotate(360deg);
transform : rotate(360deg);
}
.menu-trigger.active-9 span:nth-of-type(1),
.menu-trigger.active-9 span:nth-of-type(3) {
width : 20px;
}
.menu-trigger.active-9 span:nth-of-type(1) {
-webkit-transform : translate(-1px, 13px) rotate(-45deg);
transform : translate(-1px, 13px) rotate(-45deg);
}
.menu-trigger.active-9 span:nth-of-type(3) {
-webkit-transform : translate(-1px, -13px) rotate(45deg);
transform : translate(-1px, -13px) rotate(45deg);
}
/* type-10 */
/* 메뉴 버튼이 세로로 회전하기 */
.menu-trigger.active-10 {
-webkit-transform : rotate(90deg);
transform : rotate(90deg);
}
/* type-11 */
/* 전체 메뉴를 감싸는 원 파형이 살며시 퍼지며 엑스버튼 만들기 */
.menu-trigger span.type11:nth-of-type(1) {
-webkit-animation : menu-bar11-01 .5s forwards;
animation : menu-bar11-01 .5s forwards;
}
@-webkit-keyframes menu-bar11-01 {
0% {
-webkit-transform : translateY(20px) rotate(-45deg);
}
100% {
-webkit-transform : translateY(0) rotate(0deg);
}
}
@keyframes menu-bar11-01 {
0% {
transform : translateY(20px) rotate(-45deg);
}
100% {
transform : translateY(0) rotate(0deg);
}
}
.menu-trigger span.type11:nth-of-type(2) {
-webkit-animation : menu-bar11-02 .5s forwards;
animation : menu-bar11-02 .5s forwards;
}
@-webkit-keyframes menu-bar11-02 {
0% {
opacity : 0;
}
100% {
opacity : 1;
}
}
@keyframes menu-bar11-02 {
0% {
opacity : 0;
}
100% {
opacity : 1;
}
}
.menu-trigger span.type11:nth-of-type(3) {
-webkit-animation : menu-bar11-03 .5s forwards;
animation : menu-bar11-03 .5s forwards;
}
@-webkit-keyframes menu-bar11-03 {
0% {
-webkit-transform : translateY(-20px) rotate(45deg);
}
100% {
-webkit-transform : translateY(0) rotate(0deg);
}
}
@keyframes menu-bar11-03 {
0% {
transform : translateY(-20px) rotate(45deg);
}
100% {
transform : translateY(0) rotate(0deg);
}
}
.menu-trigger.type11:after {
position : absolute;
top : 50%;
left : 50%;
display : block;
content : '';
width : 30px;
height : 30px;
margin : -16px 0 0 -16px;
border-radius : 50%;
border : 1px solid rgba(255,255,255, 0.3);
transition : all .1s;
opacity : 0;
}
.menu-trigger.active-11:after {
-webkit-animation : circle .5s;
animation : circle .5s;
}
@-webkit-keyframes circle {
0% {
-webkit-transform : scale(0.1);
opacity : 0;
}
50% {
opacity : 1;
}
100 % {
-webkit-transform : scale(3.5);
opacity : 0;
}
}
@keyframes circle {
0% {
transform : scale(0.1);
opacity : 0;
}
50% {
opacity : 1;
}
100% {
transform : scale(3.5);
opacity : 0;
}
}
.menu-trigger.active-11 span:nth-of-type(1) {
-webkit-animation : active-menu-bar11-01 .5s .5s forwards;
animation : active-menu-bar11-01 .5s .5s forwards;
}
@-webkit-keyframes active-menu-bar11-01 {
0% {
-webkit-transform : translateY(0) rotate(0deg);
}
100% {
-webkit-transform : translateY(20px) rotate(-45deg);
}
}
@keyframes active-menu-bar11-01 {
0% {
transform : translateY(0) rotate(0deg);
}
100% {
transform : translateY(20px) rotate(-45deg);
}
}
.menu-trigger.active-11 span:nth-of-type(2) {
-webkit-animation : active-menu-bar11-02 .5s .5s forwards;
animation : active-menu-bar11-02 .5s .5s forwards;
}
@-webkit-keyframes active-menu-bar11-02 {
0% {
opacity : 1;
}
100% {
opacity : 0;
}
}
@keyframes active-menu-bar11-02 {
0% {
opacity : 1;
}
100% {
opacity : 0;
}
}
.menu-trigger.active-11 span:nth-of-type(3) {
-webkit-animation : active-menu-bar11-03 .5s .5s forwards;
animation : active-menu-bar11-03 .5s .5s forwards;
}
@-webkit-keyframes active-menu-bar11-03 {
0% {
-webkit-transform : translateY(0) rotate(0deg);
}
100% {
-webkit-transform : translateY(-20px) rotate(45deg);
}
}
@keyframes active-menu-bar11-03 {
0% {
transform : translateY(0) rotate(0deg);
}
100% {
transform : translateY(-20px) rotate(45deg);
}
}
/* type-12 */
/* 메뉴 전체를 감싸는 원형을 만들면서 엑스자버튼 만들기 */
.menu-trigger.type12:after {
position : absolute;
top : 50%;
left : 50%;
display : block;
content : '';
width : 84px;
height : 84px;
margin : -45px 0 0 -45px;
border-radius : 50%;
border : 4px solid transparent;
transition : all .75s;
}
.menu-trigger.active-12 span:nth-of-type(1) {
-webkit-transform : translateY(20px) rotate(-45deg);
transform : translateY(20px) rotate(-45deg);
}
.menu-trigger.active-12 span:nth-of-type(2) {
left : 60%;
opacity : 0;
-webkit-animation : active-menu-bar12-01 .8s forwards;
animation : active-menu-bar12-01 .8s forwards;
}
@-webkit-keyframes active-menu-bar12-01 {
100% {
height : 0;
}
}
@keyframes active-menu-bar12-01 {
100% {
height : 0;
}
}
.menu-trigger.active-12 span:nth-of-type(3) {
-webkit-transform : translateY(-20px) rotate(45deg);
transform : translateY(-20px) rotate(45deg);
}
.menu-trigger.active-12:after {
-webkit-animation : circle-12 .4s .25s forwards;
animation : circle-12 .4s .25s forwards;
}
@-webkit-keyframes circle-12 {
0% {
border-color : transparent;
-webkit-transform : rotate(0deg);
}
25% {
border-color : transparent #fff transparent transparent;
}
50% {
border-color : transparent #fff #fff transparent;
}
75% {
border-color : transparent #fff #fff #fff;
}
100% {
border-color : #fff;
-webkit-transform : rotate(-680deg);
}
}
@keyframes circle-12 {
0% {
border-color : transparent;
transform : rotate (0deg);
}
25% {
border-color : transparent #fff transparent transparent;
}
50% {
border-color : transparent #fff #fff transparent;
}
75% {
border-color : transparent #fff #fff #fff;
}
100% {
border-color : #fff;
transform : rotate (-680deg);
}
}
반응형
LIST