ในขณะนี้ฉันพบสองตัวเลือกเพื่อแก้ปัญหานี้: src เริ่มต้นของภาพทั้งหมดเป็นฐานข้อมูล 64 ภาพเปล่า
ตัวเลือกนี้ไม่เพียง แต่ต้องใช้เบราว์เซอร์ที่ทันสมัย แต่มันอาจช้าลงในฝั่งไคลเอ็นต์เนื่องจากเบราว์เซอร์จะต้องถอดรหัส 64 ฐานข้อมูลภาพเพื่อสร้างภาพ
src เริ่มต้นของภาพทั้งหมดเป็น URL ของภาพขนาด 1x1 ที่ว่างเปล่า
เป็นการย้ายที่ตกลงโดยมีเงื่อนไขว่า URL รูปภาพเปล่าสำหรับช่องภาพทั้งหมดนั้นเป็น URL เดียวกันทั้งหมดและมีอายุการใช้งานแคชที่ยาวนานซึ่งกำหนดไว้ในส่วนหัว HTTP "การควบคุมแคช" ปัญหานี้คือเมื่อไฟล์ภาพใหม่โหลดสี่เหลี่ยมภาพจะข้ามไปที่ขนาดใหม่ซึ่งอาจทำให้ประสบการณ์การใช้งานของผู้ใช้ไม่น่าอัศจรรย์
แนวคิดที่เกือบสมบูรณ์แบบคือสิ่งนี้ ...
เมื่อหน้าเริ่มต้นขึ้นให้แสดงกริดด้วยกล่องขนาดคงที่ที่สามารถรองรับภาพแต่ละภาพ มันก็โอเคถ้าตารางทั้งหมดไม่พอดีกับหน้าจอ จากนั้นสร้างจาวาสคริปต์ที่ทำงานหลังจากโหลด HTML และในจาวาสคริปต์นั้นให้สร้างองค์ประกอบภาพใหม่และแนบไปกับแต่ละเซลล์ของกริดจากนั้นตั้งค่าแหล่งที่มาของภาพไปยังไฟล์ภาพที่ถูกต้อง ทำสิ่งนี้จนกว่าหน้าจอแรกจะเต็ม จากนั้นตรวจพบการเลื่อนภายในจาวาสคริปต์แล้วเมื่อการเลื่อนเกิดขึ้นให้ทำซ้ำกระบวนการข้างต้นสำหรับเซลล์ใหม่
ตอนนี้ถ้าคุณต้องการสิ่งที่ดีที่สุดและคุณภาพไม่ใช่สิ่งที่น่าเป็นห่วงมากสิ่งที่ฉันแนะนำ (ที่ฉันนำไปใช้กับเว็บไซต์ของฉัน) ก็คือการสร้างกริดและกำหนดให้มันเป็นภาพพื้นหลังของกริดนั้น เทพดาแผ่นของภาพทั้งหมดที่จัดรูปแบบเป็นสี่เหลี่ยมของภาพ วิธีนี้มีความยืดหยุ่นและรวดเร็วในการโหลดเนื่องจากต้องมีหนึ่งคำขอสำหรับรูปภาพทั้งหมด
นี่คือเทมเพลต HTML ที่จะใช้หากคุณต้องการใช้เส้นทางที่รวดเร็ว มีการร้องขอเพียงสองครั้ง รหัส HTML และภาพเดียว ในรหัสนี้ฉันถือว่าภาพแต่ละภาพจากชีตคือความกว้าง 100 พิกเซลและความสูง 200 พิกเซลและภาพแต่ละภาพนั้นอยู่ชิดกันอย่างสมบูรณ์โดยไม่มีช่องว่าง
<html>
<head>
<style type="text/css">
#imagegrid {background-color: black; background-image:url('http://example.com/url/to/imagesheet.jpg');}
A {display:block;width:100px;height:200px;margin:10px;float:left;}
#image1{background-position: 0px 0px}
#image2{background-position: 100px 0px}
#image3{background-position: 200px 0px}
...
#imageN{background-position: XXXpx 0px}
</style>
</head>
<body>
<div id="imagegrid">
<a href="image_one.htm" id="image1"></a>
<a href="image_two.htm" id="image2"></a>
<a href="image_three.htm" id="image3"></a>
...
<a href="image_N.htm" id="imageN"></a>
</div>
</body>
</html>
ในรหัสของฉันฉันเพิ่ม 3 จุด นั่นหมายความว่าคุณสามารถเพิ่มรูปภาพได้โดยการเพิ่มจำนวนและเพิ่มตำแหน่ง 100 ครั้งในแต่ละครั้งหากแผ่นงานสไปรต์ของคุณมีภาพแถวเดียว นอกจากนี้สำหรับเบราว์เซอร์บางตัวเช่น Opera คุณอาจต้องเพิ่มเครื่องหมายลบหน้าค่าตำแหน่งพื้นหลังเพื่อให้สามารถใช้งานได้