এটি আমার পক্ষে কাজ করে বলে মনে হচ্ছে।
যদি স্প্রিটগুলি গ্রিডে থাকে তবে background-size
100% সংখ্যায় স্প্রাইটের সংখ্যা এবং 100% স্প্রাইটের সংখ্যা নীচে সেট করুন। তারপরে background-position -<x*100>% -<y*100>%
যেখানে x এবং y হ'ল শূন্য ভিত্তিক স্প্রাইট ব্যবহার করুন
অন্য কথায় আপনি যদি বাম এবং ২ য় সারির 3 য় স্প্রিট চান যা 2 ওভার এবং 1 নিচে রয়েছে
background-position: -200% -100%;
উদাহরণস্বরূপ এখানে একটি স্প্রিট শীট 4x2 স্প্রিট রয়েছে
এবং এখানে একটি উদাহরণ
div {
margin: 3px;
display: inline-block;
}
.sprite {
background-image: url('https://i.stack.imgur.com/AEYNC.png');
background-size: 400% 200%; /* 4x2 sprites so 400% 200% */
}
.s0x0 { background-position: -0% -0%; }
.s1x0 { background-position: -100% -0%; }
.s2x0 { background-position: -200% -0%; }
.s3x0 { background-position: -300% -0%; }
.s0x1 { background-position: -0% -100%; }
.s1x1 { background-position: -100% -100%; }
.s2x1 { background-position: -200% -100%; }
.s3x1 { background-position: -300% -100%; }
<div class="sprite s3x1" style="width: 45px; height:20px"></div>
<div class="sprite s3x1" style="width: 128px; height:30px"></div>
<div class="sprite s3x1" style="width: 64px; height:56px"></div>
<div class="sprite s2x1" style="width: 57px; height:60px"></div>
<div class="sprite s3x0" style="width: 45px; height:45px"></div>
<div class="sprite s0x1" style="width: 12px; height:100px"></div>
<br/>
<div class="sprite s0x0" style="width: 45px; height:20px"></div>
<div class="sprite s1x0" style="width: 128px; height:45px"></div>
<div class="sprite s2x0" style="width: 64px; height:56px"></div>
<div class="sprite s3x0" style="width: 57px; height:60px"></div>
<br/>
<div class="sprite s0x1" style="width: 45px; height:45px"></div>
<div class="sprite s1x1" style="width: 12px; height:50px"></div>
<div class="sprite s2x1" style="width: 12px; height:50px"></div>
<div class="sprite s3x1" style="width: 12px; height:50px"></div>
স্প্রাইটগুলি বিভিন্ন আকারের হলে আপনার background-size
প্রতিটি স্প্রাইটের জন্য শতাংশ এমন এক শতাংশে সেট করতে হবে যা স্প্রাইটের প্রস্থ 100% হয়ে যায়
অন্য কথায় যদি চিত্রটি 640px প্রশস্ত হয় এবং সেই চিত্রের অভ্যন্তরে স্প্রিট 45px প্রশস্ত হয় তবে 45px 640px হতে হবে
xScale = imageWidth / spriteWidth
xScale = 640 / 45
xScale = 14.2222222222
xPercent = xScale * 100
xPercent = 1422.22222222%
তারপরে আপনার অফসেট সেট করা দরকার। অফসেটের জটিলতা হ'ল 0% বামদিকে এবং 100% ডানদিকে প্রান্তিক করা হয়েছে।
গ্রাফিক্স প্রোগ্রামার হিসাবে, আমি আশা করি 100% এর অফসেটটি 100% উপাদানটিকে পুরো উপাদানটিকে পুরোপুরি ডান পাশের দিকে সরিয়ে নিয়ে 100% সরানো হবে তবে এটি যখন ব্যবহৃত হয় তখন 100% এর অর্থ কী তা নয় backgrouhnd-position
। background-position: 100%;
মানে ডান সারিবদ্ধ সুতরাং, এটি স্কেলিংয়ের পরে অ্যাকাউন্টে নেওয়ার জন্য ফোরামেলা
xOffsetScale = 1 + 1 / (xScale - 1)
xOffset = offsetX * offsetScale / imageWidth
ধরুন অফসেটটি 31px
xOffsetScale = 1 + 1 / (14.222222222 - 1)
xOffsetScale = 1.0756302521021115
xOffset = offsetX * xOffsetScale / imageWidth
xOffset = 31 * 1.0756302521021115 / 640
xOffset = 0.05210084033619603
xOffsetPercent = 5.210084033619603
এখানে 2 স্প্রাইট সহ 640x480 চিত্র।
- 31x 27y আকারে 45W 32 ঘন্টা
- 500x 370y আকার 105W 65h এ
স্প্রাইট ১ এর জন্য উপরের গণিত অনুসরণ করা
xScale = imageWidth / spriteWidth
xScale = 640 / 45
xScale = 14.2222222222
xPercent = xScale * 100
xPercent = 1422.22222222%
xOffsetScale = 1 + 1 / (14.222222222 - 1)
xOffsetScale = 1.0756302521021115
xOffset = offsetX * xOffsetScale / imageWidth
xOffset = 31 * 1.0756302521021115 / 640
xOffset = 0.05210084033619603
xOffsetPercent = 5.210084033619603
yScale = imageHeight / spriteHEight
yScale = 480 / 32
yScale = 15
yPercent = yScale * 100
yPercent = 1500%
yOffsetScale = 1 + 1 / (15 - 1)
yOffsetScale = 1.0714285714285714
yOffset = offsetY * yOffsetScale / imageHeight
yOffset = 27 * 1.0714285714285714 / 480
yOffset = 0.06026785714285714
yOffsetPercent = 6.026785714285714
div {
margin: 3px;
display: inline-block;
}
.sprite {
background-image: url('https://i.stack.imgur.com/mv9lJ.png');
}
.s1 {
background-size: 1422.2222% 1500%;
background-position: 5.210084033619603% 6.026785714285714%;
}
.s2 {
background-size: 609.5238095238095% 738.4615384615385%;
background-position: 93.45794392523367% 89.1566265060241%;
}
<div class="sprite s1" style="width: 45px; height:20px"></div>
<div class="sprite s1" style="width: 128px; height:30px"></div>
<div class="sprite s1" style="width: 64px; height:56px"></div>
<div class="sprite s1" style="width: 57px; height:60px"></div>
<div class="sprite s1" style="width: 45px; height:45px"></div>
<div class="sprite s1" style="width: 12px; height:50px"></div>
<div class="sprite s1" style="width: 50px; height:40px"></div>
<hr/>
<div class="sprite s2" style="width: 45px; height:20px"></div>
<div class="sprite s2" style="width: 128px; height:30px"></div>
<div class="sprite s2" style="width: 64px; height:56px"></div>
<div class="sprite s2" style="width: 57px; height:60px"></div>
<div class="sprite s2" style="width: 45px; height:45px"></div>
<div class="sprite s2" style="width: 12px; height:50px"></div>
<div class="sprite s2" style="width: 50px; height:40px"></div>