ให้เรตสมาชิก: 3 / 5

ดาวใช้งานดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

Adaptive Images (อแดปทีพ อิมเมจ) : Picture Element (พิคเจอ อเลเม้น) และ Srcset Attribute (เอสอาซีเซ็ท แอทริบิ้ว) คืออะไร

 Adaptive Images : Picture Element และ Srcset Attribute คืออะไร

 

      ในการทำ responsive web design (เรสป้อนซีพ เว็บ ดีไซน์) หากพูดถึงการใช้รูปต่างๆ ในหน้าเว็บแล้ว เราอาจจะต้องเลือกใช้รูปขนาดใหญ่สุดเพื่อที่จะสามารถแสดงผลได้อย่างคมชัดบน desktop (เดสท็อป) เเต่ด้วยข้อจำกัดของ responsive web design ทำให้เว็บในแต่ละเวอร์ชั่นนั้นจะใช้โค้ดร่วมกัน ไม่ว่าจะเป็น mobile (โมบาย), tablet (เเท็ปเล็ต) หรือ desktop ก็ตาม ด้วยเหตุนี้เอง จึงทำให้เกิดปัญหาที่ว่า mobile อาจจะต้องมาโหลดรูปขนาดใหญ่โดยไม่จำเป็นหรือผู้ที่ใช้ retina display (เรติน่า ดิสเพลย์) อาจจะพบว่ารูปที่โหลดมานั้นไม่คมชัดเท่าไรนัก เนื่องจากเป็นรูปที่ไม่ได้รองรับหน้าจอความละเอียดสูงนั่นเอง

      ปัญหาเกี่ยวกับรูปใน responsive web (เรสปอนซีฟ เว็บ) นี้ กลายเป็นปัญหาสำคัญ จึงทำให้เกิดการแก้ปัญหาที่เรียกว่า “Adaptive images (อแดปทีพ อิมเมจ)” ขึ้นมา โดยจุดประสงค์ก็คือ การทำให้ผู้ใช้งานโหลดเฉพาะรูปที่เหมาะสมกับสภาพแวดล้อมของผู้ใช้งานในขณะนั้นๆ แทนที่จะบังคับให้ผู้ใช้งานโหลดรูปขนาดใหญ่สุดไป แต่วิธีนี้นั้นค่อนข้างจะซับซ้อนและทำได้ยาก

picture element (พิคเจอร์ เอเลเม้น) ของ RICG (อาร์ไอซีจี) (Responsive Images Community Group (เรสปอนซีพ อิมเมจ คอมมูนิตี้ กรุ๊ป)) นั้นได้แรงบันดาลใจมาจาก video element (วีดีโอ เอเลเม้น) ซึ่ง RICG มองว่า pattern (เเพทเทริน) แบบนี้ authors(ออเทอร์) น่าจะคุ้นเคยกันเป็นอย่างดี จุดเด่นของ picture element (พิคเจอร์ เอเลเม้น) ก็คือการรองรับ media queries (มีเดีย คิวรี่) ซึ่งนั่นก็หมายความว่าเราสามารถกำหนดเงื่อนไขของการเลือกรูปมาแสดงได้ด้วยตัวเอง นอกจากนี้ picture element (พิคเจอร์ เอเลเม้น) ยังมี fallback (ฟอลเเบ็ค) สำหรับ web browsers (เว็บ บราวเซอร์) ที่ยังไม่รองรับอีกด้วย ซึ่งเป็นหลักการเดียวกับ video element นั่นเอง

 Adaptive Images : Picture Element และ Srcset Attribute คืออะไร

 

อย่างไรก็ดี picture element (พิคเจอร์ เอเลเม้น) อาจจะมีปัญหาอยู่บ้างในเรื่องของ performance (เพอฟอร์มแมน) เนื่องจาก parser (พาเซอร์) ของ web browsers (เว็บ บราวเซอร์) จะต้องมาเสียเวลาหา </picture> ให้เจอเสียก่อน จึงจะสามารถคำนวณได้ว่าควรเลือกรูปไหนมาแสดง

Srcset Attribute ไอเดียของ Edward O’Connor กันบ้าง เขาเลือกที่จะใช้ adaptive images (อแดปทิพ อิมเมจ) กับ img element (ไอเอ็มจี เอเลเม้น) เหมือนเดิม แทนที่จะสร้าง html element ขึ้นมาใหม่ เพียงแต่ว่าเขาเสนอให้เพิ่ม attribute เข้ามาอีกอันหนึ่ง ซึ่งก็คือ srcset นั่นเอง

 

Adaptive Images : Picture Element และ Srcset Attribute คืออะไร 

จากตัวอย่างการใช้ srcset attribute ด้านบน จะเห็นว่า srcset นั้นจะประกอบไปด้วยรูปเวอร์ชั่นต่างๆ ที่เราได้เตรียมไว้ โดยจะมี comma (คอมม่า) คั่นอยู่ จุดเด่นของ srcset attribute ก็คือเราจะสามารถใส่ “hint(คำใบ้)” ให้กับแต่ละเวอร์ชั่นได้ด้วยว่าเราอยากให้ web browsers เลือกรูปนี้มาแสดงเมื่อใด hint (ฮิ้น) ของ srcset attribute นั้นมีอยู่ 3 แบบ ด้วยกัน คือ w, h และ x โดย x นั้นจะหมายถึง pixel density ของ device นั้นๆ นั่นเท่ากับว่า เราสามารถเลือกแสดงรูปให้เหมาะสมกับหน้าจอความคมชัดสูงอย่าง retina display ได้แล้ว ส่วน w กับ h นั้นจะหมายถึงขนาดของ viewport ที่ใหญ่ที่สุด หรือ max-width และ max-height นั่นเอง ลองดูตัวอย่างต่อไปนี้

 

Adaptive Images : Picture Element และ Srcset Attribute คืออะไร 

จากตัวอย่างด้านบนจะเห็นว่า hint แบบ w นั้นจะอ้างอิงกับ max-width ไม่ใช่ min-width โดยรูปขนาดใหญ่ที่สุดที่เราจะใช้กับ infinite width (อินฟินิตี้ วาย) นั้นให้เราใส่ hint เป็น 1x ซึ่ง web browsers จะรู้เองว่ามันควรใช้รูปนี้มาแสดงผล หาก viewport (วิวพอร์ท) มีความกว้างมากกว่า 1280 p จะเห็นว่า srcset attribute นั้นมีข้อดีตรงที่เราไม่ต้องมาเขียน query (คิวรี่) เองว่าจะเลือกรูปไหนมาแสดงผล เราเพียงแต่ใส่ hint เข้าไปเท่านั้น ที่เหลือก็ปล่อยให้ web browsers (เว็บ บราวเซอร์) ตัดสินใจเองว่าจะเลือกรูปไหนมาใช้ซึ่งมันจะเลือกรูปที่ “เหมาะสม” ที่สุดในสภาพแวดล้อมนั้นๆ มาแสดงโดยอัตโนมัติ โดยมันจะดูจากปัจจัยหลายๆ อย่าง ไม่ว่าจะเป็น network speed (เน็ตเวริค สปีด) , latency (เลเทนซี่) รวมไปถึง orientation (โอเลี่ยนชัน)

ทำไมต้องมีทั้ง picture element และ srcset attribute ? 

      คำตอบง่ายๆ เลยก็คือ ทั้ง 2 solutions (โซโลลูชัน) ต่างก็ยังไม่สามารถตอบโจทย์ของ adaptive images ได้ครบในทุกๆ use cases (ยูส เคส) บ่อยครั้งที่เราพบว่ารูปใน mobile (โมบาย) นั้นเล็กจนดูไม่รู้เรื่อง ทั้งนี้เป็นเพราะว่าคนส่วนใหญ่จะลดขนาดของรูปลงให้สัมพันธ์กับขนาดของหน้าจอ พวกเขาอาจลืมไปว่าในบางครั้ง จุดโฟกัสนั้นไม่ได้อยู่ที่กึ่งกลางของรูป การกำหนดขนาดของรูปให้เป็น % โดยอิงตาม container (คอนเทนเนอร์) นั้นอาจทำให้ใจความสำคัญของรูปเสียไป หรืออาจเล็กลงมากจนดูไม่รู้เรื่องเมื่อดูในหน้าจอขนาดเล็ก

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
Q สอบถามเรื่องการกำหนดตัวแปร ให้สามารถแสดงเป็นภาษาไทย-อังกฤษครับ
โดย birdkritsna ส 05 ต.ค. 2019 11:00 am บอร์ด Programming - PHP
3
111
พฤ 10 ต.ค. 2019 2:18 pm โดย birdkritsna
ผมทำการติดตั้ง pip install flask บน windows 10 ใน pycharm แล้ว error แบบด้านล่างเป็นเพราะอะไร
โดย jirawoot ส 05 ต.ค. 2019 10:40 am บอร์ด Programming - C/C++ & java & Python
3
86
ส 05 ต.ค. 2019 12:05 pm โดย mindphp
ทำยังไงถึงจะบันทึกข้อมูลที่มี single quote (') ลงฐานข้อมูลได้ครับ
โดย jamepiyawat ศ 04 ต.ค. 2019 3:50 pm บอร์ด SQL - Database
3
109
ศ 04 ต.ค. 2019 4:18 pm โดย jamepiyawat
มีโค้ดที่ตัด string ตามที่เรากำหนดไว้ไหมครับ
โดย jamepiyawat ศ 04 ต.ค. 2019 2:37 pm บอร์ด Programming - PHP
3
93
ศ 04 ต.ค. 2019 2:44 pm โดย Ittichai_chupol
จะ Default หน้าเว็บ joomla ให้เข้ามาที่ภาษาไทย เมนูเป็นไทย ทำยังไงค่ะ
โดย thatsawan ศ 04 ต.ค. 2019 1:34 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
1
61
ศ 04 ต.ค. 2019 2:46 pm โดย mindphp
ลิงค์ไปยังตัวเลือกใน select option
โดย Anonymous ศ 04 ต.ค. 2019 1:27 pm บอร์ด Programming - PHP
0
64
ศ 04 ต.ค. 2019 1:27 pm โดย บุคคลทั่วไป
Microsoft Surface Duo สมาร์ทโฟนจอคู่ ระบบปฏิบัติการ Android
โดย chatee supasand ศ 04 ต.ค. 2019 11:06 am บอร์ด Microsoft Office Knowledge & line & Etc
0
55
ศ 04 ต.ค. 2019 11:06 am โดย chatee supasand
สอบถามการใช้เงื่อนไข ในการ insert ลงฐานข้อมูลคนละตาราง
โดย birdkritsna พฤ 03 ต.ค. 2019 3:59 pm บอร์ด Programming - PHP
4
120
พฤ 03 ต.ค. 2019 5:46 pm โดย birdkritsna
จะทำอย่างไรให้การแสดงตารางข้อข้อมูลบนมือถือต่างกันได้ในแนวตั้งแนวนอน ครับ
โดย jamepiyawat พฤ 03 ต.ค. 2019 3:36 pm บอร์ด Programming - PHP
4
84
พฤ 03 ต.ค. 2019 4:20 pm โดย jamepiyawat
Skype for Business และ Microsoft Teams
โดย Atomseed Suckseed พฤ 03 ต.ค. 2019 2:56 pm บอร์ด Software Review
0
56
พฤ 03 ต.ค. 2019 2:56 pm โดย Atomseed Suckseed
"ถ้าตั้งคำถามถูกต้อง ก็เท่ากับเดินมา เกินครึ่งทางของการค้นหาคำตอบแล้ว."
โดย mindphp พฤ 03 ต.ค. 2019 12:52 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
57
พฤ 03 ต.ค. 2019 12:52 pm โดย mindphp
สอบถามปัญหาการใช้ Form submit อันเดียว แต่มีแถบหน้าเมนูหลายอัน เวลากรอกแค่แถบเมนูอันแรก ไม่สามารถกด submit ได้ครับ
โดย birdkritsna พฤ 03 ต.ค. 2019 10:52 am บอร์ด Programming - PHP
14
148
พฤ 03 ต.ค. 2019 4:05 pm โดย birdkritsna
ขอสเตนส์เม้นออนไลน์
โดย Wattanaphon Khomsompact พ 02 ต.ค. 2019 7:58 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
0
62
พ 02 ต.ค. 2019 7:58 pm โดย Wattanaphon Khomsompact
Q อยากทราบวิธีการบันทึกข้อมูลลงฐานข้อมูล ตามแถบเมนูฟอร์มที่กรอก
โดย birdkritsna พ 02 ต.ค. 2019 11:42 am บอร์ด Programming - PHP
5
150
พฤ 03 ต.ค. 2019 4:30 pm โดย birdkritsna
Q อยากทราบการนำไฟล์ html ที่เก็บไว้ในโฟลเดอร์ ส่งไปยัง web service ครับ
โดย birdkritsna พ 02 ต.ค. 2019 10:53 am บอร์ด Programming - PHP
3
93
ส 05 ต.ค. 2019 5:35 pm โดย thatsawan
อยากทราบวิธีการส่งไฟล์ image ไปที่ web service เพื่อให้แปลงเป็นไฟล์ pdf
โดย birdkritsna พ 02 ต.ค. 2019 10:41 am บอร์ด Programming - PHP
2
79
พ 02 ต.ค. 2019 11:10 am โดย birdkritsna
Facebook Horizon คืออะไร ทำไมถึงน่าสนใจ
โดย birdkritsna อ 01 ต.ค. 2019 6:32 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
116
พ 02 ต.ค. 2019 12:32 pm โดย Pannarai2015
ทำไมผมถึง Discover Extensions ใน joomla ครับ
โดย jamepiyawat อ 01 ต.ค. 2019 4:52 pm บอร์ด Joomla Development
2
73
อ 01 ต.ค. 2019 8:32 pm โดย jamepiyawat
Project xCloud ของ Microsoft จะเปิดให้ทดสอบเดือนตุลาคมนี้
โดย chatee supasand อ 01 ต.ค. 2019 3:58 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
39
อ 01 ต.ค. 2019 3:58 pm โดย chatee supasand
bbcode สำหรับการแสดงวิดีโอ ทั้งใน facebook และ youtube สามารถงานได้กรณี ที่เป็น https
โดย Ittichai_chupol อ 01 ต.ค. 2019 3:55 pm บอร์ด PHP Knowledge
0
46
อ 01 ต.ค. 2019 3:55 pm โดย Ittichai_chupol