弹窗还是正常的写,如果想要页面整体被弹出的抽屉推开,那么可以使用 transform: translateX() 属性来实现。下面是一个简单的实现Demo👇,因为懒得写JS了,所以直接用 Checkbox + CSS来实现了,你在实际开发的过程中自行使用JS实现。<style> /* 重置默认样式 */ body, html { width: 100vw; height: 100vh; padding: 0; margin: 0; overflow-x: hidden; } .wrap { transition: transform 0.3s ease-out; } .navbar { background-color: #001529; padding: 10px; display: flex; align-items: center; } .logo { color: #fff; font-size: 24px; font-weight: bold; } .menu-btn { color: #fff; cursor: pointer; padding: 10px; } #menu-checkbox { display: none; } #menu-checkbox:checked ~ .drawer { transform: translateX(0); } #menu-checkbox:checked ~ .wrap { transform: translateX(200px); } #menu-checkbox:checked ~ .wrap .menu-btn::after{ content: ''; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.8); position: fixed; left: 0; top: 0; display: block; } .drawer { width: 200px; height: 100vh; background-color: #111; position: fixed; top: 0; left: 0; z-index: 1; overflow-x: hidden; transform: translateX(-100%); transition: transform 0.3s ease-out } .menu { list-style-type: none; padding: 0; margin: 20px; } .menu li { color: #fff; font-size: 18px; margin-bottom: 10px; } </style> <body> <input type="checkbox" id="menu-checkbox"> <div class="wrap"> <nav class="navbar"> <div class="logo">Logo</div> <label for="menu-checkbox" class="menu-btn">展开抽屉</label> </nav> </div> <div class="drawer"> <ul class="menu"> <li>菜单项1</li> <li>菜单项2</li> <li>菜单项3</li> <li>菜单项4</li> </ul> </div> </body>
弹窗还是正常的写,如果想要页面整体被弹出的抽屉推开,那么可以使用 transform: translateX() 属性来实现。
下面是一个简单的实现Demo👇,因为懒得写JS了,所以直接用
Checkbox
+CSS
来实现了,你在实际开发的过程中自行使用JS实现。