วิธีการใช้ CSS Sprites เพื่อปรับปรุงหน้าเว็บ



บทความนี้จะให้ความรู้โดยละเอียดและครอบคลุมเกี่ยวกับ CSS SPrites และวิธีใช้เพื่อทำให้เว็บไซต์ราบรื่นขึ้น

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

Sprite คืออะไร?

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





CSS Sprites

แนวคิดพื้นฐานคือการโหลดภาพและแสดงส่วนหนึ่งของภาพนั้นเร็วกว่ามากในทุกที่ที่ต้องการเมื่อเทียบกับการโหลดภาพหลายภาพและแสดง



CSS Sprite คืออะไร: ภาพรวมคร่าวๆ

CSS Sprite เป็นเทคนิคที่นักพัฒนาเว็บมักใช้เพื่อเพิ่มประสิทธิภาพของหน้าเว็บ ในเทคนิคนี้ภาพขนาดเล็กหลาย ๆ ภาพที่มีขนาดเท่ากันจะรวมกันเป็นภาพขนาดใหญ่ภาพเดียวที่เรียกว่าไฟล์ สไปรท์แผ่น หรือ ชุดกระเบื้อง . จากนั้นใช้สไปรต์ชีตนี้เพื่อแสดงองค์ประกอบแต่ละรายการในทุกที่ที่เราต้องการ

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

ตัวอย่างวิธีช่วยในการพัฒนาเว็บ?

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



CSS Sprite ช่วยให้นักพัฒนาสามารถรวมภาพขนาดเล็กที่ใช้บ่อยเหล่านี้เป็นภาพขนาดใหญ่ภาพเดียว จากนั้นเบราว์เซอร์จะต้องดาวน์โหลดไฟล์เดียวเท่านั้นที่จะใช้ในการแสดงส่วนที่ต้องการโดยการหักล้างรูปภาพ

ข้อดีของการใช้ CSS Sprites

ข้อดีหลัก ๆ สองประการของการใช้ CSS Sprite บนรูปภาพปกติ:

  • โหลดหน้าได้เร็วขึ้น: ช่วยเพิ่มเวลาในการโหลดหน้าเนื่องจากภาพที่ใช้ในเว็บเพจจะปรากฏขึ้นทันทีที่ดาวน์โหลดแผ่นงาน

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

นักพัฒนาต้องทำอะไรเมื่อทำงานกับ CSS Sprites

เมื่อทำงานกับภาพแต่ละภาพนักพัฒนาสามารถทำงานร่วมกับแท็ก HTML ได้ และจัดรูปแบบใน CSS หากจำเป็น แต่เมื่อทำงานกับ CSS Sprites นักพัฒนาจำเป็นต้องทำสองสิ่งที่เฉพาะเจาะจง:

  • การสร้างภาพต่อเรียง

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

  • เข้าถึงองค์ประกอบเฉพาะของสไปรต์โดยใช้ไฟล์ ตำแหน่งพื้นหลัง CSS ทรัพย์สิน

เมื่อสไปรท์ชีตพร้อมแล้วผู้พัฒนาจะต้องใช้แอตทริบิวต์ CSS เพื่อเข้าถึงส่วนต่างๆของชีต

  • ความกว้าง: ความกว้างของสไปรท์
  • ความสูง: ความสูงของสไปรท์
  • พื้นหลัง: อ้างอิงถึงสไปรต์ชีต
  • ตำแหน่งพื้นหลัง: ค่าชดเชย (เป็นพิกเซล) เพื่อเข้าถึงเฉพาะส่วนที่ต้องการของสไปรต์ชีต

จะสร้าง CSS Sprite Sheet ได้อย่างไร?

คุณสามารถใช้ซอฟต์แวร์แก้ไขภาพใด ๆ เพื่อจัดเรียงภาพที่มีขนาดเล็กลงในตารางได้ แต่จะมีการกล่าวถึงสองวิธีที่ง่ายกว่านี้:

1. เครื่องมือสร้างภาพต่อเรียงออนไลน์

ลิงค์: toptal.com/developers/css/sprite-generator/

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

2. การสร้าง Sprite Sheet ด้วย Sprity

หากคุณใช้ Grunt, Node หรือ Gulp คุณสามารถติดตั้งแพ็คเกจที่เรียกว่า Sprity ซึ่งจะช่วยให้คุณสร้างสไปรต์ชีตในรูปแบบต่างๆเช่น PNG, JPG เป็นต้น

ประการแรกคุณจะต้องติดตั้ง Sprity โดยใช้:

npm ติดตั้ง sprity -g

จากนั้นในการสร้างภาพต่อเรียงให้ใช้คำสั่งต่อไปนี้:

sprity ./output-directory/ ./input-directory/*.png

จะทำงานกับ CSS Sprites ได้อย่างไร?

ในตัวอย่างนี้เราจะใช้สไปรต์ชีทต่อไปนี้:

ดังที่คุณเห็นในภาพด้านบนไอคอนหกไอคอน (Instagram, Twitter และ Facebook) ได้รับการจัดเรียงในรูปแบบคล้ายตาราง ในแถวแรกเรามีสถานะปกติและในแถวที่สองเรามีสถานะโฮเวอร์ (ภาพที่ปรากฏขึ้นเมื่อเราวางเคอร์เซอร์ของเมาส์ไว้)

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

ตอนนี้มาดูวิธีง่ายๆในการรับออฟเซ็ตที่จำเป็นสำหรับแต่ละไอคอนทั้งหกโดยใช้ MS Paint อาจไม่ใช่ทางออกที่ดีในการทำงานกับสไปรต์ แต่เนื่องจากมีคุณสมบัติที่ให้พิกัดของเคอร์เซอร์ของเมาส์จึงสามารถใช้เพื่อรับพิกัด X และ Y ที่ต้องการได้

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

เมื่อคุณมีพิกัดของจุดบนซ้ายของสไปรต์ของคุณแล้ว (ภาพ Instagram ด้านซ้ายบน) คุณสามารถแสดงสไปรต์เฉพาะนี้ได้ทุกที่ที่ต้องการโดยใช้โค้ด CSS:

พื้นหลัง: url ('img_sprites.png')
ตำแหน่งพื้นหลัง: 0 0
ความกว้าง: 125px
ความสูง: 125px

เราใช้ความกว้างและความสูง 125 พิกเซลเนื่องจากไอคอนของเรามีขนาดดังกล่าว ในการดึงภาพถัดไป (Twitter) ในแถวเดียวกันเราใช้รหัสต่อไปนี้:

พื้นหลัง: url ('img_sprites.png')
ตำแหน่งพื้นหลัง: -128px 0px
ความกว้าง: 125px
ความสูง: 125px

สังเกตแอตทริบิวต์ตำแหน่งพื้นหลังในตัวอย่างด้านบน (-128px, 0) หมายความว่าเรากำลังหักล้างสไปรต์ชีทของเราไปทางซ้าย 128 พิกเซล (โดยคำนึงถึงช่องว่างระหว่างองค์ประกอบ) และ 0 พิกเซลบนแกน Y หากเราต้องการเข้าถึงไอคอนโฮเวอร์ของ twitter แอตทริบิวต์ตำแหน่งพื้นหลังของเราจะเป็น:

พื้นหลังตำแหน่ง: -128px -128px

ด้วยวิธีนี้ตอนนี้เราสามารถเข้าถึงแต่ละองค์ประกอบของสไปรต์ชีตโดยใช้ CSS มาดูวิธีการทำโค้ด HTML และ CSS กัน

ขั้นตอนที่ 1: การเขียนโค้ด HTML ที่จำเป็น

ในโค้ดด้านล่างนี้เราเพียงแค่เพิ่มลิงก์สามลิงก์ นอกจากนี้เราจะเชื่อมโยง HTML ของเรากับสไตล์ชีท (screen.css)

ชั้นเรียน='ไอคอน Instagram'> href='#'>อินสตาแกรม

ชั้นเรียน='ไอคอนทวิตเตอร์'> href='#'>ทวิตเตอร์

ชั้นเรียน='ไอคอน facebook'> href='#'>เฟสบุ๊ค

ขั้นตอนที่ 2: การเขียน CSS ที่จำเป็น ขั้นแรกเราจะจัดสไตล์คลาสไอคอนที่แชร์ของเรา ที่นี่คุณจะเห็นว่าเรากำลังอ้างอิงถึงสไปรต์ชีตที่เราสร้างขึ้น

/ * ไอคอนที่ใช้ร่วมกันคลาส * /

span.icon a: ลิงค์,

span.icon a: เยี่ยมชม{

แสดง:บล็อก

เยื้องข้อความ:-9999px

ภาพพื้นหลัง: url (./ img_sprites.png)

พื้นหลังซ้ำ:ไม่ทำซ้ำ

}

coupling ใน java คืออะไร

ขั้นตอนที่ 3: รับไอคอนแต่ละรายการจากสไปรต์ชีตโดยใช้ออฟเซ็ต

/ * ไอคอน Instagram * /

span.instagram a: ลิงค์,

span.instagram a: เยี่ยมชม{

ความกว้าง:125px

ความสูง:125px

พื้นหลังตำแหน่ง:0 0

}

/ * ไอคอน Twitter * /

สแปน a: ลิงค์,

สแปน a: เยี่ยมชม{

ความกว้าง:125px

ความสูง:125px

พื้นหลังตำแหน่ง:-128px 0

}

/ * ไอคอน Facebook * /

span.facebook a: ลิงค์,

span.facebook a: เยี่ยมชม{

ความกว้าง:125px

ความสูง:125px

พื้นหลังตำแหน่ง:-257px 0

}

ขั้นตอนที่ 4: รับไอคอนโฮเวอร์จากสไปรต์ชีตโดยใช้ออฟเซ็ต

span.instagram a: โฮเวอร์{พื้นหลังตำแหน่ง:0 -128px}

สแปน a: โฮเวอร์{พื้นหลังตำแหน่ง:-128px -128px}

span.facebook a: โฮเวอร์{พื้นหลังตำแหน่ง:-255px -128px}

บริษัท ที่ใช้ CSS Sprites

ชื่อใหญ่หลายแห่งในอุตสาหกรรมใช้ CSS Sprites เพื่อปรับปรุงการตอบสนองของเว็บไซต์ของตน บริษัท ต่างๆเช่น Google, Facebook, Amazon ใช้วิธีนี้อย่างกว้างขวางเนื่องจากช่วยลดจำนวนคำขอ HTTP ต่อเซสชันสำหรับผู้ใช้เฉพาะราย นี่เป็นประโยชน์อย่างมากเมื่อเราพิจารณาว่า บริษัท เหล่านี้ให้บริการลูกค้านับล้านในช่วงเวลาใดเวลาหนึ่ง

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

ตรวจสอบ ซึ่งมาพร้อมกับการฝึกอบรมสดที่นำโดยผู้สอนและประสบการณ์โครงการในชีวิตจริง การฝึกอบรมนี้ทำให้คุณมีความเชี่ยวชาญในทักษะในการทำงานกับเทคโนโลยีเว็บส่วนหลังและส่วนหน้า รวมถึงการฝึกอบรมเกี่ยวกับ Web Development, jQuery, Angular, NodeJS, ExpressJS และ MongoDB

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อก 'รูปภาพ HTML' แล้วเราจะติดต่อกลับไป