บทความสอนการทำเมนูสำหรับเว็บ Single Page หรือ One Page เมื่อกดที่เมนูแล้ว animation ไปตามเนื้อหาที่เรากำหนด เว็บแบบนี้เหมาะสำหรับทำเป็นเว็บส่วนบุคคล แสดงผลงานหรือประวัติส่วนบุคคลหรือเว็บที่มีข้อมูลไม่มาก
เริ่มจากตัวอย่างกันครับ
จากตัวอย่างจะประกอบไปด้วยกัน 3 ส่วน
1 ตัวเมนูจะเป็น HTML (ส่วน CSS ผมไม่ขอพูดถึงนะครับ สามารถ Download Source เต็มไปลองเล่นดูครับ)
<div id="menu"> // ใส่ ID ชื่อ menu เพิ่อ link กับ javascript และ css <a href="#home">HOME</a> // attribute href เป็นส่วนที่บอก ID ของเนื้อหาที่ต้องการไป เช่น #home คือให้ไปใน element id home <a href="#about">ABOUT US</a> <a href="#product">PRODUCT</a> <a href="#service">SERVICE</a> <a href="#contact">CONTACT</a> </div>
2 ในส่วนของเนื้อหาที่จะใช้กับเมนูด้านบน
<div id="home" class="section" style="background:red;"> // เราจะใส่ id สำหรับเนื้องหาเพื่ออ้างอีงกับเมนู เช่น อันนี้ ใส่ id = home <div style="padding-top:250px;font-size:3em;">HOME</div> </div> <div id="about" class="section" style="background:blue;"> <div style="padding-top:250px;font-size:3em;">ABOUT</div> </div> <div id="product" class="section" style="background:green;"> <div style="padding-top:250px;font-size:3em;">PRODUCT</div> </div> <div id="service" class="section" style="background:gray;"> <div style="padding-top:250px;font-size:3em;">SERVICES</div> </div> <div id="contact" class="section" style="background:black;"> <div style="padding-top:250px;font-size:3em;">CONTACT</div> </div>
3 ส่วนนี้เป็น Jquery ที่ใช้ในการใส่ EVENT ให้กับเมนูตอน Click
$(document).ready(function() { $("#menu a").click(function(event){ // จับ Event เมื่อมีการ Click tag a ใน id menu var full_url = this.href; // ดึง attribute href เช่น #home var parts = full_url.split("#"); // หลังจากนั้นนำมาตัดออก var target_offset = $("#"+parts[1]).offset(); // นำมาหาค่าความสูงของ Element เนื้อหา จากบนสุดถึงเนื้อหา var target_top = (target_offset.top); // นำค้าไปเป็นไว้ในตัว แปร $('html, body').animate({scrollTop:target_top}, 1200); // ใช้ jquery animation ลงไปยังนำแหน่ง return false; }); });
จริงๆแล้วจะมี JavaScript library มากมายสำหรับการทำ Single Page Web แต่บางครั้งอาจไม่ตรงกับความต้องการทั้งหมดหรือมากเกินไป
แต่ถ้าเข้าใจหลักการเบื้องต้นน่าจะทำให้เราสามารถปรับแต่โค้ดจาก library ที่มีอยู่หรือเขียนขึ้นมาเองได้