เคยไหมครับ อุตส่าทำให้เว็ปเป็น responsive ตั้งนาน แต่พอมีความจำเป็นต้อง embed เนื้อหาจากเว็ปอื่นโดยใช้ <iframe> ไอ้ตัว <iframe> เนี่ยแหละที่ทำให้ความเป็น responsive ของเราเสียไป เรามาดูกันว่าจะแก้ไขได้ยังไงบ้าง
แนวคิดในการทำ <iframe> ให้เป็น responsive แบบง่ายๆคือ เราจะใช้ javascript และ jQuery มาช่วยในการ resize HTML element หลังจากที่เนื้อหาในเว็ปโหลดเสร็จ ทำให้เราสามารถคำนวนความกว้าง และความสูง ของเนื้อหาที่จะเอามาใส่ใน <iframe> และปรับขนาด HTML container ให้ตามขนาดของเนื้อหาได้
หลักเลยเราต้องแก้ทั้งหมดสามอย่างคือ
1. jQuery ในส่วนของเว็ปปลายทางที่จะดึงเนื้อหามา
[syntax type=”js”]
[/syntax]
จาก code ด้านบน เรากำหนดให้เมื่อ page load เสร็จ ให้ส่งขนาดของเว็ปไปให้เว็ปต้นทาง (ในที่นี้คือ parent) เพื่อที่จะบอกเว็ปต้นทางว่าขนาดความสูงของเราเป็นเท่าไหร่
2. ที่เว็ปต้นทาง
สำหรับเว็ปต้นทางต้องทำสองอย่างคือ CSS และ jQuery script ที่เอาไว้ปรับขนาดของ HTML container ครับ
CSS
[syntax type=”css”]
.embedContainer {
height: 0;
[/syntax]
ในส่วนของ CSS ก็ไม่มีอะไรมากครับ สังเกตุว่าเรากำหนด ความสูงของ class embedContainer ไว้เป็น 0 เพราะเดี๊ยวจะมาปรับขนาดของ class นี้ด้วย jQuery อีกที
jQuery
[syntax type=”js”]
[/syntax]
ข้างบนจะเห็นว่าเราสร้าง event listener ไว้อันนึง เอาไว้คอยปรับค่าความสูงของเว็ปปลายทาง และเมื่อเว็ปปลายทาง trigger event มาแล้ว เราก็ใช้ jquery ไปปรับขนาดความสูงของ HTML container ที่เราสร้างไว้ใน CSS เท่านั้นเองครับ
ที่นี่เราก็จะได้ <iframe> แบบ responsive มาใช้ละครับ :D
Leave a Reply