แสดงรูปภาพที่มีขนาดถูกต้อง

Katie Hempenius
Katie Hempenius

เราทุกคนเคยเห็นกันไปแล้ว คุณลืมลดขนาดรูปภาพก่อนที่จะเพิ่มรูปภาพ รูปภาพดูดี แต่ทำให้ผู้ใช้สิ้นเปลือง และหน้าเว็บที่ได้รับผลกระทบ ด้านประสิทธิภาพ

ระบุภาพที่มีขนาดไม่ถูกต้อง

Lighthouse ช่วยให้ระบุรูปภาพที่มีขนาดไม่ถูกต้องได้อย่างง่ายดาย เรียกใช้ การตรวจสอบประสิทธิภาพ (Lighthouse > Options > Performance) และมองหา ผลการตรวจสอบขนาดรูปภาพที่เหมาะสม การตรวจสอบจะแสดงรูปภาพใดๆ ต้องมีการปรับขนาด

ระบุขนาดรูปภาพที่ถูกต้อง

การปรับขนาดรูปภาพอาจเป็นเรื่องที่ซับซ้อนอย่างหลอกลวง ด้วยเหตุนี้ เราจึงแนะนำให้ แนวทาง: "ดี" และ "ดีกว่า" ทั้ง 2 อย่างนี้จะช่วยปรับปรุงประสิทธิภาพ แต่ "ดีกว่า" อาจใช้เวลานานขึ้นเล็กน้อยในการทำความเข้าใจและนำไปใช้ อย่างไรก็ตาม จะให้รางวัลคุณด้วยการปรับปรุงประสิทธิภาพที่ใหญ่ขึ้น ตัวเลือกที่ดีที่สุดสำหรับ คุณเป็นผู้ที่ยินดีนำไปใช้

หมายเหตุสั้นๆ เกี่ยวกับหน่วย CSS

หน่วย CSS สำหรับการระบุขนาดขององค์ประกอบ HTML มี 2 ประเภท ได้แก่ รวมรูปภาพ:

  • หน่วยสัมบูรณ์: องค์ประกอบที่กำหนดสไตล์โดยใช้หน่วยสัมบูรณ์จะเป็น แสดงในขนาดเดียวกันโดยไม่คำนึงถึงอุปกรณ์ ตัวอย่างที่ถูกต้อง หน่วย CSS แบบสัมบูรณ์: px, cm, mm, in
  • หน่วยสัมพัทธ์: องค์ประกอบที่กำหนดสไตล์โดยใช้หน่วยสัมพัทธ์จะแสดงที่ ขนาดต่างๆ ขึ้นอยู่กับความยาวสัมพัทธ์ที่ระบุ ตัวอย่างของ หน่วย CSS สัมพัทธ์ที่ถูกต้อง: %, vw (1vw = 1% ของความกว้างของวิวพอร์ต) em (1.5 em = ขนาดแบบอักษร 1.5 เท่า)

"ดี" แนวทาง

สำหรับรูปภาพที่มีการปรับขนาดตาม...

  • หน่วยสัมพัทธ์: ปรับขนาดรูปภาพเป็นขนาดที่ใช้ได้กับอุปกรณ์ทั้งหมด

ทั้งนี้การตรวจสอบข้อมูลวิเคราะห์ (เช่น Google Analytics) เพื่อดูว่าผู้ใช้ใช้จอแสดงผลขนาดใดโดยทั่วไป หรือใช้ screensiz.es ให้ข้อมูลเกี่ยวกับจอแสดงผลของอุปกรณ์ทั่วไปหลายอย่าง - หน่วยสัมบูรณ์: ปรับขนาดรูปภาพให้ตรงกับขนาดที่ปรากฏ

แผงองค์ประกอบของเครื่องมือสำหรับนักพัฒนาเว็บใช้เพื่อระบุว่ารูปภาพมีขนาดเท่าใด แสดงที่

แผงขององค์ประกอบเครื่องมือสำหรับนักพัฒนาเว็บ

"ดีกว่า" แอพโพรช

สำหรับรูปภาพที่มีทั้งขนาดสัมบูรณ์และขนาดสัมพัทธ์ ให้ใช้ srcset และ sizes ในการแสดงรูปภาพที่แตกต่างกันตามความหนาแน่นของการแสดงผลที่ต่างกัน อ่านคำแนะนำเกี่ยวกับรูปภาพที่ปรับเปลี่ยนตามอุปกรณ์

"ความหนาแน่นของการแสดงผล" หมายถึงข้อเท็จจริงที่ว่าจอภาพที่ต่างกันมี ความหนาแน่นของพิกเซล หากปัจจัยในด้านอื่นๆ เหมือนกัน ความหนาแน่นของพิกเซลสูง จะได้ภาพที่คมชัดกว่าหน้าจอที่มีความหนาแน่นของพิกเซลต่ำ

ด้วยเหตุนี้ คุณจึงต้องมีอิมเมจหลายเวอร์ชันหากต้องการให้ผู้ใช้ จะได้ดูภาพที่คมชัดที่สุด ไม่ว่าความหนาแน่นของพิกเซลจะเป็นเท่าใดก็ตาม อุปกรณ์ของตน

เทคนิครูปภาพที่ตอบสนองตามอุปกรณ์ ช่วยให้คุณแสดง มีรูปภาพหลายเวอร์ชัน และเพื่อให้อุปกรณ์เลือกรูปภาพที่ใช้ได้ เหมาะสมที่สุด

รูปภาพที่ใช้งานได้ในอุปกรณ์ทุกประเภทจะมีขนาดใหญ่โดยไม่จำเป็นสำหรับ อุปกรณ์ขนาดเล็ก เทคนิครูปภาพที่ตอบสนองตามอุปกรณ์ โดยเฉพาะ srcset และขนาด [sizes] ช่วยให้คุณสามารถระบุเวอร์ชันรูปภาพได้หลายเวอร์ชัน และเพื่อให้อุปกรณ์เลือก ขนาดที่เหมาะสมมากที่สุด

ปรับขนาดรูปภาพ

ไม่ว่าคุณจะเลือกใช้วิธีใด เราขอแนะนำให้ใช้ ImageMagick เพื่อปรับขนาดรูปภาพของคุณ ImageMagick ได้รับความนิยมมากที่สุด เครื่องมือบรรทัดคำสั่งสำหรับการสร้างและแก้ไขรูปภาพ คนส่วนใหญ่ปรับขนาดรูปภาพได้ ได้รวดเร็วยิ่งขึ้นเมื่อใช้ CLI มากกว่าโปรแกรมแก้ไขรูปภาพแบบ GUI

ปรับขนาดรูปภาพให้เท่ากับขนาดต้นฉบับ 25%

convert flower.jpg -resize 25% flower_small.jpg

ปรับขนาดรูปภาพให้พอดีกับ "กว้าง 200 พิกเซล สูง 100 พิกเซล":

# macOS/Linux
convert flower.jpg -resize 200x100 flower_small.jpg

# Windows
magick convert flower.jpg -resize 200x100 flower_small.jpg

หากคุณจะปรับขนาดรูปภาพจำนวนมาก การใช้ สคริปต์หรือบริการเพื่อทำให้กระบวนการเป็นไปโดยอัตโนมัติ ดูข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ใน คำแนะนำเกี่ยวกับรูปภาพที่ปรับเปลี่ยนตามอุปกรณ์

หลีกเลี่ยงการเปลี่ยนแปลงเลย์เอาต์ด้วยการระบุขนาด

แม้ว่าคู่มือนี้จะกล่าวถึงขนาดของรูปภาพในบริบทของการลดจำนวนไบต์ที่ไม่จำเป็นที่ดาวน์โหลด แต่สิ่งสำคัญที่ควรทราบคือ การสำรองพื้นที่ที่ถูกต้องสำหรับรูปภาพในการจัดวางเป็นอีกองค์ประกอบสำคัญในการลดเมตริก Cumulative Layout Shift ของหน้าเว็บ เมื่อแสดงรูปภาพใน HTML อย่าลืมใช้แอตทริบิวต์ width และ height ที่เหมาะสมเพื่อให้เบราว์เซอร์รู้ว่าจะจัดสรรพื้นที่เท่าใดในเลย์เอาต์สำหรับรูปภาพ ดังนี้

<img src="flower.jpg" width="640" height="480" alt="A picture of a siberian iris.">

หากไม่มีแอตทริบิวต์เหล่านี้หรือการปรับขนาด CSS ที่เทียบเท่า เบราว์เซอร์จะไม่ทราบว่ารูปภาพจะใช้พื้นที่เท่าใดจนกว่าจะโหลดรูปภาพเสร็จ เนื่องจากจะทำให้เกิดการเปลี่ยนเลย์เอาต์ในเอกสาร ซึ่งทำให้ผู้ใช้รู้สึกหงุดหงิดเมื่อย้ายเนื้อหาหลังจากที่เริ่มดูเนื้อหา ซึ่งอาจทำให้ผู้ใช้อ่านค้างไว้ตอนอ่านหรือ "พลาด" เป้าหมาย Hit ที่ตั้งใจไว้ แล้วเกิดคลิกสิ่งอื่นที่ไม่ต้องการขณะโหลดหน้าเว็บ

อีกทางเลือกหนึ่งในการระบุความกว้างและความสูงอย่างชัดเจนคือการใช้พร็อพเพอร์ตี้ aspect-ratio ของ CSS ในรูปภาพ ซึ่งให้ผลคล้ายกับขนาดขององค์ประกอบที่แอตทริบิวต์ width และ height ทำในลักษณะที่คอนเทนเนอร์จะรักษาอัตราส่วนการแสดงผลให้สอดคล้องกัน แต่ความแตกต่างคือวิธีนี้อาจทำให้มีการใช้สัดส่วนภาพที่แตกต่างจากรูปภาพที่ให้ไว้ คุณจึงอาจต้องใช้การตั้งค่า object-fit เพื่อให้แน่ใจว่ารูปภาพจะไม่บิดเบี้ยวในมุมมอง 16/9 ที่ชัดเจนนี้

img {
  aspect-ratio: 16 / 9;
  width: 100%;
  object-fit: cover;
}

ยืนยัน

เมื่อคุณปรับขนาดรูปภาพทั้งหมดแล้ว ให้เรียกใช้ Lighthouse อีกครั้งเพื่อยืนยันว่าคุณไม่ได้ ขาดอะไรไป