#javascript #jquery #css
Всем привет. Была задачка сделать такой бургер меню. У меня почти все готово но вот никак не получаеться сделать круговое открытие этого меню. Как показано на ссылке.У меня весь меню скрывается и открывается только в хедере.И не круговой.Вот codepen ссылка. Заранее прошу извинить если CSS кода слишком много больше сократить свой код я не смог потому что по другому не получилось бы показать суть проблемы.Если кто та может работать с SCSS то в codepen ссылке которой я указал наверху там весь SCSS можете там изменить и отправить ссылку суда. const toggleAnimation = () => { $('#droplet').toggleClass('active'); $('#menu').toggleClass('active'); $('#burger').toggleClass('active'); } let below = false; $(window).scroll(() => { const Ypos = $(window).scrollTop(); if(Ypos > 50 && !below) { below = true; toggleAnimation(); } else if(Ypos < 50 && below) { below = false; toggleAnimation(); } }); $(".menu-trigger").click(function() { $(this).toggleClass('actived'); $("ul.menu li").slideToggle('fast'); }) body { margin: 0; padding: 0; height: 1000px; } .header { height: 47px; position: relative; width: 100%; z-index: 5000; font-family: "Poppins", Arial, Helvetica, sans-serif; font-weight: normal; letter-spacing: 3.4px; text-align: center; } @media only screen and (max-width: 992px) { .header { font-size: 14px; } } .header h1 { margin: 0; margin-left: 60px; } .header h1 a { float: left; line-height: 1.5; width: auto; max-height: 47px; color: #fff; } .header h1 a img { width: auto; height: 47px; } .header nav { width: 60%; margin: 0 auto; position: relative; z-index: 5000; } @media only screen and (max-width: 992px) { .header nav { width: 70%; } } .header nav .menu { position: relative; display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex; text-decoration: none; -ms-flex-pack: distribute; justify-content: space-around; list-style-type: none; margin: 0; height: 47px; line-height: 3; } .header nav .menu li a { text-decoration: none; color: #fff; } .header nav .menu #artistbtn a .fas { left: 8%; } .header nav .menu #mediabtn { position: relative; } .header nav .menu #mediabtn a .fas { right: 37.5%; } .actived span { background-color: red !important; -webkit-transition: background-color 0.2s ease-in-out; -o-transition: background-color 0.2s ease-in-out; transition: background-color 0.2s ease-in-out; } .actived span:after { top: -1px !important; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); -webkit-transition: 0.5s ease-in-out; -o-transition: 0.5s ease-in-out; transition: 0.5s ease-in-out; } .actived span:before { top: -1px !important; -webkit-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); -webkit-transition: 0.5s ease-in-out; -o-transition: 0.5s ease-in-out; transition: 0.5s ease-in-out; } .menu-trigger { width: 40px; height: 40px; border-radius: 50%; background: #444444; position: fixed; /*Opacity start*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter: alpha(opacity=80); -moz-opacity: 0.80; -khtml-opacity: 0.8; opacity: 0.8; /*Opacity end*/ top: 3px; right: 30px; z-index: 5001; display: none; } @media only screen and (max-width: 768px) { .menu-trigger { display: block; } } .menu-trigger span { top: 45%; left: 25%; -webkit-transition: background-color 0.2s ease-in-out; -o-transition: background-color 0.2s ease-in-out; transition: background-color 0.2s ease-in-out; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } .menu-trigger span:after { top: 6px; -webkit-transition: 0.5s ease-in-out; -o-transition: 0.5s ease-in-out; transition: 0.5s ease-in-out; left: 0%; } .menu-trigger span:before { top: -6px; -webkit-transition: 0.5s ease-in-out; -o-transition: 0.5s ease-in-out; transition: 0.5s ease-in-out; left: 0%; } .menu-trigger span, .menu-trigger span:after, .menu-trigger span:before { width: 20px; height: 2px; background-color: #aaa; position: absolute; content: ''; } .header { background-color: #191919; /*Opacity start*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter: alpha(opacity=80); -moz-opacity: 0.80; -khtml-opacity: 0.8; opacity: 0.8; /*Opacity end*/ } .header nav .menu #artistbtn a .fas, .header nav .menu #mediabtn a .fas { position: absolute; top: 55%; color: #c9ac8c; line-height: 20px; } #burger { -webkit-transform: rotate(0deg); -ms-transform: rotate(0deg); transform: rotate(0deg); } #droplet.active { -webkit-animation: droplet 0.5s forwards; animation: droplet 0.5s forwards; } @keyframes droplet { 0% { top: 10px; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; -webkit-transform: rotate(0deg); -ms-transform: rotate(0deg); transform: rotate(0deg); } 25% { top: 10px; border-top-left-radius: 0px; border-top-right-radius: 40px; border-bottom-left-radius: 40px; border-bottom-right-radius: 30px; } 30% { -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); } 60% { top: 34px; } 100% { top: 15px; border-top-left-radius: 37px; border-top-right-radius: 37.5px; border-bottom-left-radius: 37.5px; border-bottom-right-radius: 37.5px; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); } } .header.active { animation: burger 0.5s forwards; } @keyframes burger { 0% { -webkit-transform: rotate(0deg); -ms-transform: rotate(0deg); transform: rotate(0deg); opacity: 0; } 30% { -webkit-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); } 20% { opacity: 0; } 100% { -webkit-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); opacity: 1; } } #burger.active { -webkit-animation: burger 0.5s forwards; animation: burger 0.5s forwards; } @keyframes burger { 0% { transform: rotate(0deg); opacity: 0; } 30% { transform: rotate(-45deg); } 20% { opacity: 0; } 100% { transform: rotate(-45deg); opacity: 1; } } .header.active > nav { animation: menuCover 0.2s forwards; } .header.active { animation: menu 0.2s forwards; } @keyframes menu { 0% { opacity: 1; } 80% { opacity: 1; } 100% { opacity: 0; } } @keyframes menuCover { 0% { border-radius: 0px; top: 98px; height: 0px; } 75% { border-radius: 500px / 50px; top: 25px; } 100% { border-radius: 0px; top: 0px; height: 100px; opacity: 0; } }Помогите очень прошу.
Ответы
Ответ 1
Круговое раскрытие можно сделать через clip-path. $('.menu-btn').click(function(){ $('.header__nav').toggleClass('header__nav_fixed'); }) *{ box-sizing:border-box; } body{ margin:0; background-color:#555; } .menu-btn{ position:relative; z-index:2; margin:0 0 0 auto; } header{ display:flex; align-items:center; justify-content:space-between; padding:10px 15px; background-color:#fff; } .header__nav{ display:flex; flex-wrap:wrap; align-items:baseline; list-style:none; margin:0; padding:0; } .header__nav li{ margin:0 10px 0 0; } .header__nav_fixed{ position:fixed; top:0; left:0; width:100%; height:100%; padding:30px; display:block; background-color:#fff; text-align:center; animation:circle 2s linear; animation-fill-mode:forwards; clip-path:circle(20px at calc(100% - 20px) 20px); } .header__nav_fixed li{ margin:0 0 10px; } @keyframes circle{ to{ clip-path:circle(1000vw at calc(100% - 20px) 20px); } }
Комментариев нет:
Отправить комментарий