50 天学习 50 个项目 - HTMLCSS and JavaScript
day45-Netflix Mobile Navigation(左边侧边栏动态导航)
效果


index.html
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css"integrity="sha512-1PKOgIY59xJ8Co8+NE6FZ+LOAZKjy+KY8iq0G4B3CyeY6wYHN3yt9PW0XpSriVlkMXe40PTKnXrLnZ9+fkDaog=="crossorigin="anonymous" /><link rel="stylesheet" href="style.css" /><title>Netflix Mobile Navigation</title>
</head><body><button class="nav-btn open-btn"><i class="fas fa-bars"></i></button><img src="https://source.unsplash.com/random" alt="Logo" class="logo"><p class="text">手机导航</p><div class="nav nav-black"><div class="nav nav-red"><div class="nav nav-white"><button class="nav-btn close-btn"><i class="fas fa-times"></i></button><img src="https://source.unsplash.com/random" alt="Logo" class="logo"><ul class="list"><li><a href="#">团队</a></li><li><a href="#">位置</a></li><li><a href="#">Netflix的生活</a></li><li><ul><li><a href="#">Netflix文化备忘录</a></li><li><a href="#">工作与生活的平衡</a></li><li><a href="#">包容性与多样性</a></li><li><a href="#">博客</a></li></ul></li></ul></div></div></div><script src="script.js"></script>
</body></html>
style.css
@import url('https://fonts.googleapis.com/css?family=Muli&display=swap');* {box-sizing: border-box;
}body {font-family: 'Muli', sans-serif;display: flex;flex-direction: column;align-items: center;justify-content: center;height: 100vh;
}.logo {width: 150px;
}
.nav-btn {border: none;background-color: transparent;cursor: pointer;font-size: 20px;
}
.open-btn {position: fixed;top: 10px;left: 10px;
}
.nav {position: fixed;top: 0;left: 0;height: 100vh;transform: translateX(-100%);transition: transform 0.3s ease-in-out;
}
.nav.visible {transform: translateX(0);
}
.nav-black {background-color: rgb(71, 209, 117);max-width: 480px;min-width: 320px;transition-delay: 0.4s;
}.nav-black.visible {transition-delay: 0s;
}
.nav-red {background-color: rgb(9, 181, 229);width: 95%;transition-delay: 0.2s;
}.nav-red.visible {transition-delay: 0.2s;
}
.nav-white {background-color: #fff;width: 95%;padding: 40px;position: relative;transition-delay: 0s;
}.nav-white.visible {transition-delay: 0.4s;
}
.close-btn {opacity: 0.3;position: absolute;top: 40px;right: 30px;
}
.list {list-style-type: none;padding: 0;
}.list li {margin: 20px 0;
}.list li a {color: rgb(34, 31, 31);font-size: 14px;text-decoration: none;
}.list ul {list-style-type: none;padding-left: 20px;
}
script.js
const open_btn = document.querySelector('.open-btn')
const close_btn = document.querySelector('.close-btn')
const nav = document.querySelectorAll('.nav')
open_btn.addEventListener('click', () => {nav.forEach(nav_el => nav_el.classList.add('visible'))
})
close_btn.addEventListener('click', () => {nav.forEach(nav_el => nav_el.classList.remove('visible'))
})