แท็ก <frame> ใน HTML คืออะไร?
แท็ก <frame> ใช้สร้าง เฟรม (Frame) ซึ่งเป็นหน้าต่างย่อยภายใน <frameset> แสดงหน้าเว็บอีกหน้าหนึ่ง แต่ แท็กนี้ล้าสมัย (Deprecated) ใน HTML5 แล้ว ควรใช้ <iframe> แทน
แอตทริบิวต์ของ <frame> (สำหรับการอ้างอิงเท่านั้น)
| แอตทริบิวต์ | คำอธิบาย |
|---|---|
| frameborder | แสดงเส้นขอบรอบเฟรม |
| longdesc | หน้าที่มีรายละเอียดยาวของเนื้อหาในเฟรม |
| marginheight | ระยะห่างบน-ล่างในเฟรม |
| marginwidth | ระยะห่างซ้าย-ขวาในเฟรม |
| name | ชื่อของเฟรม (สำหรับ target) |
| noresize | ห้ามปรับขนาดเฟรม |
| scrolling | แสดง scrollbar หรือไม่ |
| src | URL ของหน้าที่จะแสดงในเฟรม |
ตัวอย่าง (โค้ดเก่า - ไม่ควรใช้ในโปรเจกต์ใหม่)
<!DOCTYPE html> <html> <frameset cols="30%,30%,20%,20%"> <frame src="https://www.example.com/page1.html"> <frame src="https://www.example.com/page2.html"> <frame src="https://www.example.com/page3.html"> <frame src="https://www.example.com/page4.html"> </frameset> </html>
ตัวเลือกแทนที่: <iframe>
<!-- HTML5 มาตรฐาน -->
<iframe src="https://www.example.com/page1.html"
width="300" height="200"
style="border: none;"></iframe>
ทำไมต้องเลิกใช้ <frame> และ <frameset>?
- ปัญหา SEO: สูตรค้นหาเข้าถึงเนื้อหาในเฟรมยาก
- ปัญหา Accessibility: Screen reader อ่านไม่ถูกต้อง
- ปัญหา UX: URL ไม่เปลี่ยน ไม่บุ๊กมาร์กได้ ไม่แชร์ลิงก์ได้
- ไม่รองรับ Responsive Design
- ลบออกจากมาตรฐาน HTML5 แล้ว
สรุป
ใช้ <iframe> แทนสำหรับการฝังหน้าเว็บอื่น และใช้ CSS Layout (Flexbox, Grid) สำหรับการจัดหน้าแทน Frameset