เทคนิคการทำให้ Navigation Bar เลื่อนได้แนวนอน (Horizontal Scroll) เมื่อเมนูมีมากเกินความกว้างหน้าจอ ใช้ white-space: nowrap และ overflow: auto
ตัวอย่างโค้ด
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> body{ margin:0px; margin-top:10px; padding: 0px; } nav{ width: 100%; background-color: rgb(39, 39, 39); overflow: auto; height: auto; white-space: nowrap; } .links { display: inline-block; text-align: center; padding: 14px; color: rgb(178, 137, 253); text-decoration: none; font-size: 17px; } .links:hover { background-color: rgb(100, 100, 100); } .selected{ background-color: rgb(0, 18, 43); } </style> </head> <body> <nav> <a class="links selected" href="#"> Home</a> <a class="links" href="#"> Login</a> <a class="links" href="#"> Register</a> <a class="links" href="#">Contact Us</a> <a class="links" href="#">More Info</a> <a class="links" href="#">Our Social Links</a> <a class="links" href="#">Visit Us</a> </nav> </body> </html>
คำอธิบาย
- white-space: nowrap - ไม่ให้ลิงก์ขึ้นบรรทัดใหม่ บังคับอยู่บรรทัดเดียว
- overflow: auto - แสดง Scrollbar เมื่อเนื้อหาเกินกว้าง
- display: inline-block - เรียงลิงก์ติดกันแนวนอน
ปรับปรุง UX
- เพิ่ม
scrollbar-width: thin;และ style scrollbar ให้สวย - เพิ่ม Shadow ด้านข้างบ่งชี้ว่ามีเนื้อหาต่อ (
box-shadow: inset 20px 0 20px -20px rgba(0,0,0,0.3);) - บน Mobile ใช้ Touch Scroll ได้โดยธรรมชาติ
ผลลัพธ์
เมนูสีเข้ม 7 รายการ บนหน้าจอแคบจะเลื่อนซ้าย-ขวาได้ มี Scrollbar แสดง