เทคนิคการทำ Underline Effect บน Navigation Links เมื่อ Hover หรือ Active ใช้ border-bottom แทน text-decoration เพื่อควบคุมระยะห่างและสไตล์ได้ดีกว่า
ตัวอย่างโค้ด
<!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:60px; padding: 0px; } nav{ position: fixed; top:0; width: 100%; background-color: rgb(251, 255, 196); overflow: auto; height: auto; } .links { display: inline-block; text-align: center; padding: 14px; color: rgb(0, 0, 0); text-decoration: none; font-size: 17px; font-weight: bolder; } .links:hover { border-bottom: 2px solid purple; } .selected{ border-bottom: 2px solid purple; } </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> </nav> <h1>Hover on the above links</h1> </body> </html>
ทำไมใช้ border-bottom?
- ควบคุม ระยะห่าง ระหว่างข้อความและเส้นได้ (ผ่าน padding)
- ควบคุม ความหนา สี สไตล์ (solid, dashed, dotted) ได้อิสระ
- ไม่กระทบ
line-heightหรือการจัดบรรทัดข้อความ - ทำ Animation transition ได้สวยงาม
เพิ่ม Animation
.links {
border-bottom: 2px solid transparent;
transition: border-color 0.3s;
}
.links:hover { border-color: purple; }
ผลลัพธ์
เมนูสีเหลืองอ่อน Hover/Active แสดงเส้นใต้สีม่วงหนา 2px สลมلسmooth