Cześć,
wie ktoś może jak mogę schować ikonki razem z menu, gdzie element z ciemniejszym kolorem (menu) chowa się idąc do góry, ale niestety nie wiem jak zrobić aby ikonki schowały się razem z nim.
Codepen: https://codepen.io/anon/pen/rZErvK
To nie działa do końca jak należy, ale kierunek słuszny.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous"> </head> <body> <header> <i class="fas fa-bars"></i> <div class="menu"> <i class="social fab fa-instagram"></i> <i class="social fab fa-facebook"></i> <i class="social fab fa-twitter"></i> </div> </header> </body> </html>
* { margin: 0; padding: 0; } header { display: flex; justify-content: flex-end; position: relative; width: 100%; height: 100vh; background-color: teal; overflow-x: hidden; } .menu { position: absolute; top: -100%; width: 40%; height: 100vh; background-color: rgb(9, 105, 105); transition:all 1s linear; text-align: center; } .fas{ position: fixed; z-index: 9; top: 20px; right: 20px; font-size: 40px; color: #fff; cursor: pointer; } i.social{ display: block; margin-left: 1000px; margin-top: 18vh; font-size: 60px; color: #fff; cursor: pointer; } .slideLeft{ animation: slideLeft 2s forwards; } .slideUp{ top: 0; } @keyframes slideLeft{ from{ margin-left: 1000px; } to{ margin-left: 0; } }
var menu = document.querySelector('.menu'); var fas = document.querySelector('.fas'); var icon = document.querySelectorAll('.social'); fas.addEventListener("click", function (){ menu.classList.toggle("slideUp"); icon.forEach(function(icon){ setTimeout(function(){ icon.classList.toggle("slideLeft"); }, 1500); }); });
Teraz jest ok.
Dołożyłem 'debouncing', czyli reakcja na zdarzenie występuje dopiero gdy przestaniemy klikać,oraz ustawienie flagi na false jeżeli menu nie zostało do końca zamknięte żeby ikonki nie chowały się na otwartym.
var menu = document.querySelector('.menu'); var fas = document.querySelector('.fas'); var icon = document.querySelectorAll('.social'); var timeout; var flag = false; fas.addEventListener("click", function (){ flag = (!flag)?true:false; clearTimeout(timeout); menu.classList.toggle("slideUp"); if(flag){ timeout = setTimeout(function(){ icon.forEach(function(icon){ icon.classList.toggle("slideLeft"); flag = false; }); }, 1500); } });
93,381 zapytań
142,380 odpowiedzi
322,535 komentarzy
62,738 pasjonatów
Motyw:
Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡
Oto polecana książka warta uwagi.Pełną listę książek znajdziesz tutaj