CSS Image Sprites
In this page:
.sprite {
width: length;
height: length;
background: url("sprite.png") no-repeat;
background-position: -x -y;
}
Sprite Concept
एक image sprite एक single image file है जिसमें कई अलग graphics होते हैं। यह technique आपके page पर कई assets load करने के लिए ज़रूरी server requests की संख्या घटाकर web performance optimize करती है।
उदाहरण: The Sprite Concept
<style>
.sprite-sheet {
width: 96px;
height: 32px;
background-image: linear-gradient(90deg, #e53935 0 32px, #1e88e5 32px 64px, #43a047 64px 96px);
margin-bottom: 8px;
}
.icon {
width: 32px;
height: 32px;
background-image: linear-gradient(90deg, #e53935 0 32px, #1e88e5 32px 64px, #43a047 64px 96px);
background-color: lightgray;
}
</style>
<p>One sprite sheet, 96×32px, holding 3 icons:</p>
<div class="sprite-sheet"></div>
<p>One window into it, showing only the first icon:</p>
<div class="icon"></div>
Sizing और Position Coordinates
किसी specific icon को दिखाने के लिए, आप अपने display box पर एक fixed width और height define करते हैं, और sprite sheet coordinates shift करने के लिए background-position property इस्तेमाल करते हैं ताकि सिर्फ आपका target icon box के अंदर align हो।
उदाहरण: Sizing and Position coordinates
<style>
.icon {
width: 32px;
height: 32px;
background-image: linear-gradient(90deg, #e53935 0 32px, #1e88e5 32px 64px, #43a047 64px 96px);
background-color: lightgray;
background-position: -32px 0;
}
</style>
<div class="icon"></div>
<p>Shifted left by 32px, so the blue icon now shows through the same window.</p>
Sprites के साथ Hover Effects
image sprites की सबसे अच्छी features में से एक यह है कि आप instant, pre-loaded hover animations बना सकते हैं। अपने normal और hover icons को एक ही sheet पर एक-दूसरे के बगल में arrange करके, आप highlighted state को instantly दिखाने के लिए hover पर background-position बदल सकते हैं।
उदाहरण: Hover Effects with Sprites
<style>
.icon {
width: 32px;
height: 32px;
background-image: linear-gradient(180deg, #e53935 0 32px, #43a047 32px 64px);
background-color: lightgray;
background-position: 0 0;
}
.icon:hover {
background-position: 0 -32px;
}
</style>
<div class="icon"></div>
<p>Hover to instantly swap to the pre-loaded green icon stacked below it — no flicker, no second request.</p>
एक साफ़ Sprite Sheet Design करना
अपने coordinates को calculate करना आसान रखने के लिए, आपको अपनी sprite sheet पर icons को एक साफ़, mathematical grid structure में arrange करना चाहिए (जैसे consistent 32x32px या 50x50px bounding boxes इस्तेमाल करना)।
उदाहरण: Designing a Clean Sprite Sheet
<style>
.icon {
width: 32px;
height: 32px;
display: inline-block;
background-image: linear-gradient(90deg, #e53935 0 32px, #1e88e5 32px 64px, #43a047 64px 96px, #fdd835 96px 128px);
background-color: lightgray;
}
.p0 { background-position: 0 0; }
.p1 { background-position: -32px 0; }
.p2 { background-position: -64px 0; }
.p3 { background-position: -96px 0; }
</style>
<div class="icon p0"></div> <code>0 0</code>
<div class="icon p1"></div> <code>-32px 0</code>
<div class="icon p2"></div> <code>-64px 0</code>
<div class="icon p3"></div> <code>-96px 0</code>
<p>Every icon sits at a clean multiple of 32px, so the offsets are trivial to calculate.</p>
Sprites बनाम Modern Vector Fonts
जबकि image sprites historically site performance optimize करने के लिए ज़रूरी थीं, modern websites अक्सर vector icon fonts (जैसे Font Awesome) या inline SVGs इस्तेमाल करती हैं। Vector icons किसी भी size पर साफ़ scale होते हैं, CSS से highly editable हैं, और sprite sheets की तरह pixelate नहीं होते।
उदाहरण: Sprites vs. Modern Vector Fonts
<style>
.icon-sprite {
width: 32px;
height: 32px;
display: inline-block;
vertical-align: middle;
background-color: #fbc02d;
}
.icon-svg {
width: 32px;
height: 32px;
vertical-align: middle;
fill: #fbc02d;
}
</style>
<p>Sprite-based icon (fixed pixel size, needs a matching sheet):
<span class="icon-sprite"></span>
</p>
<p>Modern alternative — an inline SVG icon (scales to any size, recolors with CSS, no sprite sheet needed):
<svg class="icon-svg" viewBox="0 0 24 24"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14l-5-4.87 6.91-1.01z"/></svg>
</p>
- अपनी background positions shift करते समय negative pixel coordinate values लिखना भूल जाना।
- अपनी sprite sheet पर uneven या chaotic spacing, जो complex CSS coordinate math की ओर ले जाती है।
- standard font-size properties इस्तेमाल करके sprite icons को dynamically scale करने की कोशिश करना।
- एक image sprite server requests कम करने के लिए कई अलग graphics को एक single image file में combine करता है।
- अपने display box पर explicit dimensions define करें, और sprite sheet coordinates को साफ़ तरीके से shift करने के लिए background-position इस्तेमाल करें।
- Sprites raster graphics हैं जो retina screens पर pixelate हो सकते हैं; modern, scalable designs के लिए vector icon fonts या inline SVGs इस्तेमाल करें।
Standard image sprites और background position properties को सभी modern और legacy web browsers में native support है।
Chapter Quiz — Complete all 22 topics to unlock
0/22 topics done
Complete these topics first:
- CSS Combinators
- CSS Pseudo-classes
- CSS Pseudo-elements
- CSS Opacity
- CSS Navigation Bar
- CSS Vertical Navbar
- CSS Horizontal Navbar
- CSS Dropdowns
- CSS Advanced Dropdowns
- CSS Image Gallery
- CSS Image Sprites
- CSS Attribute Selectors
- CSS Forms
- CSS Counters
- CSS Specificity
- CSS Specificity Hierarchy
- CSS Variables
- CSS !important
- CSS Box Sizing
- CSS Media Queries
- CSS Pointer Events
- CSS Outline