ปรับ layout หน้าเว็บไซต์อัตโนมัติตามขนาดของ browser
ผมไปเจอเว็บไซต์นี้มา http://themes.themegoods.com/?theme=Poseidon
และเมื่อลองปรับลด-ขยายขนาดของ browser ดู พบว่าหน้าเว็บสามารถปรับเปลี่ยนตามขนาดของ browser ได้
เทคนิคแบบนี้ เค้าใช้อะไรทำหรอครับ ขอคำแนะนำด้ว้ยครับ
และเมื่อลองปรับลด-ขยายขนาดของ browser ดู พบว่าหน้าเว็บสามารถปรับเปลี่ยนตามขนาดของ browser ได้
เทคนิคแบบนี้ เค้าใช้อะไรทำหรอครับ ขอคำแนะนำด้ว้ยครับ
ส่วนวิธีอื่นๆ ก้เช่น ถ้าใช้ tableless เช่น การใช้ div เป็น layout ก็สามารถกำหนด width เป็น 100% ได้ใช้กัน แต่การรักษารูปเว็บเช่น ตำแหน่งของ sidebar จะยากกว่าการใช้ table
วิธีอื่นๆอีกคือใช้ Javascript ครับ แต่ปัจจุบันไม่ตค่อยนิยมแล้ว
จริงๆแล้วไม่ว่าวิธีไหนก้แล้วแต่ ไม่ได้มีวิธีสำเร็จรูปครับ เพราะ layout หน้าตาเว็บแต่ละแบบ อาจต้องการ การกำหนด css ที่แตกต่างกันไป ไม่สามารถกำหนดของเขตุและวิธีที่ชัดเจนได้ ดังนั้น ถ้าคิดจะทำก็คงต้องกำหนด css ให้ดีครับ โดยมีกฎเพียงข้อเดียวว่า ถ้าต้องการขนาดของ layout ที่ปรับเปลี่ยนไปตามขนาดของหน้าจอ ให้กำหนดความกว้างทั้งหมดให้เป็น % ครับ
สังเกตุจาก โลโก้ที่อยู่ริมซ้าย พอย่อ browser ก็มาอยู่ตรงกลาง , เมนู พอย่อ browser ก็เปลี่ยนเป็น combo box แทนครับ
กรณีข้างต้น แสดงว่าเขาก็คงใช้ Javcascript แหละครับไม่มีตัวเลือกอื่น เพราะ CSS ธรรมดาคงไม่สามารถทำแบบนี้ได้
วิธีการที่ใช้กันทั่วไป แบบง่ายสุดก้คือการตรวจจับความกว้างของ document ครับ ถ้า หากความกว้างของ document น้อยกว่าที่กำหนด ก็ให้แสดง layout ในแบบหนึ่ง หากปกติก็ใช้แบบหนึ่ง
หรือเอาง่ายๆคือ ใช้ javascript ตรวจสอบว่า ความกว้าง น้อยกว่า 500px ให้กำหนด class ให้ body=mobile และถ้า ขนาดความกว้างปกติ ก็กำหนด class=desktop เป็นต้น
หลังจากนั้นก็เขียน CSS แยก ออกเป็น 2 ส่วน คือ css ภายใต้ body.mobile และ body.desktop
ส่วนเมนูที่เห็น อาจใช้วิธีเตรียมไว้ก่อน และใช้ วิธีซ่อนเอาตาม class ของ body ก้ได้ครับ เช่น
body.mobile div#logo {
text-align: center;
}
body.desktop div#logo {
text-align: left;
}