如何创建:全屏覆盖式导航
学习如何创建全屏覆盖导航菜单。
单击下面的按钮查看其工作方式:
创建全屏覆盖导航
第一步 - 添加 HTML:
<!-- 覆盖层 --> <div id="myNav" class="overlay"> <!-- 可关闭叠加导航的按钮 --> <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">×</a> <!-- Overlay content --> <div class="overlay-content"> <a href="#">About</a> <a href="#">Services</a> <a href="#">Clients</a> <a href="#">Contact</a> </div> </div> /* ใช้องค์ประกอบใดก็ได้เพื่อเปิด/แสดงเมนูนำทางเสริม */ <span onclick="openNav()">open</span>
ขั้นที่สอง - เพิ่ม CSS:
/* เขตครอบงำ (พื้นหลัง) */ .overlay { /* ความสูงและความกว้างขึ้นอยู่กับวิธีการแสดงเขตครอบงำที่คุณต้องการ (ดู JS ด้านล่าง) */ height: 100%; width: 0; position: fixed; /* อยู่ในตำแหน่งเดียวกัน */ z-index: 1; /* อยู่ด้านบน */ left: 0; top: 0; background-color: rgb(0,0,0); /* สีดำดั้งเดิม */ background-color: rgba(0,0,0, 0.9); /* สีดำที่สว่างลง */ overflow-x: hidden; /* ปิดการเลื่อนระนาบทางนอกเมื่อแสดงเนื้อหา */ transition: 0.5s; /* ภาพรวม 0.5 วินาที ทำให้เขตครอบงำเลื่อนขึ้นหรือลง (ความสูงหรือความกว้างขึ้นอยู่กับวิธีการแสดง) */ } /* จัดตำแหน่งเนื้อหาภายในเขตครอบงำ */ .overlay-content { position: relative; top: 25%; /* 25% จากด้านบน */ width: 100%; /* 100% ของกว้าง */ text-align: center; /* ตั้งตำแหน่งข้อความ/ลิงก์ในตำแหน่งกลาง */ margin-top: 30px; /* ขอบเขตด้านบนนอก 30 พิกเซล เพื่อป้องกันการชนกับปุ่มปิดบนหน้าจอเล็ก */ } /* ทำให้ลิงก์การนำทางภายในเขตครอบงำ */ .overlay a { padding: 8px; text-decoration: none; font-size: 36px; color: #818181; display: block; /* แสดงบล็อคแทน inline */ transition: 0.3s; /* ภาพรวมสีเมื่อเปลี่ยนหมุนเมาส์ (สี) */ } /* แก้ไขสีของข้อความเมื่อเปลี่ยนหมุนเมาส์บนลิงก์การนำทาง */ .overlay a:hover, .overlay a:focus { color: #f1f1f1; } /* ตั้งตำแหน่งปุ่มปิด (ฝั่งบนขวา) */ .overlay .closebtn { position: absolute; top: 20px; right: 45px; font-size: 60px; } แก้ไขขนาดตัวอักษรของลิงก์และเปลี่ยนตำแหน่งปุ่มปิดเมื่อความสูงของหน้าจอต่ำกว่า 450 พิกเซล เพื่อที่ไม่ให้เกิดการปิดกัน /* แก้ไขขนาดตัวอักษรของลิงก์และเปลี่ยนตำแหน่งปุ่มปิดเมื่อความสูงของหน้าจอต่ำกว่า 450 พิกเซล เพื่อที่ไม่ให้เกิดการปิดกัน */ @media screen and (max-height: 450px) { .overlay a {font-size: 20px} .overlay .closebtn { font-size: 40px; top: 15px; right: 35px; } }
ขั้นที่สาม - เพิ่ม JavaScript:
ในตัวอย่างด้านล่างนี้ แผงคลุมนาฬิกาจะเลื่อนเข้ามาจากด้านซ้ายไปทางขวา (จาก 0 ถึง 100% ความกว้าง) เมื่อมีการกระตุ้น:
เลื่อนเข้ามาจากด้านข้าง
/* เปิดเมนูเมื่อคนกดส่วนแบบ span */ function openNav() { document.getElementById("myNav").style.width = "100%"; } /* ปิดเมนูเมื่อคนกดสัญลักษณ์ "x" ในแผงคลุม */ function closeNav() { document.getElementById("myNav").style.width = "0%"; }
ในตัวอย่างด้านล่างนี้ แผงคลุมนาฬิกาจะเลื่อนลงจากด้านบน (จาก 0 ถึง 100% ความสูง):
แจ้งเตือน:ในตัวอย่างนี้ โปรดจำได้ว่า CSS นั้นต่างจากตัวอย่างที่ผ่านมาเล็กน้อย (ความสูงเริ่มต้นเป็น 0 ความกว้าง 100% และ overflow-y คือ hidden ห้ามเลื่อนตัวในแนวตั้ง ยกเว้นจอเล็ก):
เลื่อนลงจากด้านบน
/* เปิด */ function openNav() { document.getElementById("myNav").style.height = "100%"; } /* ปิด */ function closeNav() { document.getElementById("myNav").style.height = "0%"; }
ตัวอย่างนี้ไม่ใช้อนิมาชั่นเมื่อเปิดเมนูนาฬิกา:
เปิดเมนูโดยไม่มีอนิมาชั่น
/* เปิด */ function openNav() { document.getElementById("myNav").style.display = "block"; } /* ปิด */ function closeNav() { document.getElementById("myNav").style.display = "none"; }
相关页面
教程:CSS 导航栏