CSS Hover Overlays
In this page:
.container {
position: relative;
}
.overlay {
position: absolute;
inset: 0;
opacity: 0;
transition: opacity duration;
}
.container:hover .overlay {
opacity: 1;
}
Overlay Structure
एक hover overlay आमतौर पर एक positioned wrapper (position: relative) से बना होता है जिसमें image plus एक दूसरा element (position: absolute, वही size) सीधे उसके ऊपर बैठा होता है, initially opacity: 0 या एक ऐसे transform से hidden जो उसे view से बाहर धकेल देता है।
- Accepted values:
- position: absolute — overlay को container पर layer करता है
- inset: 0 — इसे पूरे box में फैलाता है
- background: rgba(...) — semi-transparent color
- opacity: 0 — hover तक hidden
उदाहरण: The Overlay Structure
<style>
.wrap {
position: relative;
}
.overlay {
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
background: rgba(0,0,0,0.6);
color: white;
opacity: 0;
}
.wrap:hover .overlay {
opacity: 1;
}
</style>
<div class="wrap">
<img src="https://placehold.co/200x150" alt="Base">
<div class="overlay">Overlay layer, hidden by default</div>
</div>
Hover पर Overlay दिखाना
overlay की visible state overlay पर नहीं बल्कि wrapper पर एक :hover selector से trigger होती है, ताकि image पर कहीं भी hover करना (सिर्फ exact overlay area नहीं) इसे reveal करे — एक transition के साथ combined ताकि smooth fade या slide हो।
- Accepted values:
- opacity: 0 से 1 — fade in
- visibility: hidden से visible — visibility toggle करता है
- transition: opacity 0.3s — smooth reveal
- :hover — trigger state
उदाहरण: Revealing the Overlay on Hover
<style>
.wrap {
position: relative;
}
.overlay {
position: absolute;
inset: 0;
background: rgba(0,0,0,0.6);
color: white;
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
transition: opacity 0.3s;
}
.wrap:hover .overlay {
opacity: 1;
}
</style>
<div class="wrap">
<img src="https://placehold.co/200x150" alt="Base">
<div class="overlay">Revealed by hovering the wrapper</div>
</div>
Overlays पर Text Captions
overlay element के अंदर एक caption रखना उसे एक semi-transparent background tint के साथ fade in होने देता है, photo galleries के लिए एक common pattern जहाँ caption default view को cluttered किए बिना image का नाम बताता है।
- Accepted values:
- display: flex — caption को layout करता है
- align-items: center — vertical centering
- justify-content: center — horizontal centering
- text-align: center — text lines को center करता है
उदाहरण: Text Captions on Overlays
<style>
.wrap {
position: relative;
}
.caption {
position: absolute;
inset: 0;
background: rgba(0,0,0,0.5);
color: white;
opacity: 0;
transition: opacity 0.3s;
}
.wrap:hover .caption {
opacity: 1;
}
</style>
<div class="wrap">
<img src="https://placehold.co/200x150" alt="Photo">
<div class="caption">Photo Title</div>
</div>
Icon Reveal Overlays
पूरी opacity वाले text के बजाय, कुछ overlays image पर centered सिर्फ एक छोटा icon (जैसे एक magnifying glass या एक play button) reveal करते हैं, अक्सर नीचे की image पर एक हल्के zoom या darken effect के साथ combined।
- Accepted values:
- opacity: 0 से 1 — fade in
- visibility: hidden से visible — visibility toggle करता है
- transition: opacity 0.3s — smooth reveal
- :hover — trigger state
उदाहरण: Icon Reveal Overlays
<style>
.wrap {
position: relative;
}
.icon {
position: absolute;
top: 50%; left: 50%;
transform: translate(-50%, -50%);
opacity: 0;
transition: opacity 0.3s;
}
.wrap:hover .icon {
opacity: 1;
}
</style>
<div class="wrap">
<img src="https://placehold.co/200x150" alt="Photo">
<span class="icon">🔍</span>
</div>
Sliding बनाम Fading Overlays
एक overlay या तो opacity के ज़रिए fade in हो सकता है या एक transform: translateY() के ज़रिए slide in हो सकता है जो इसे box के बाहर से जगह पर move करता है — sliding ज़्यादा directional महसूस होता है और bottom edge से उठने वाले caption bars के लिए common है।
- Accepted values:
- transform: translateY(100%) — नीचे से शुरू होता है
- transform: translateY(0) — जगह पर slide होता है
- opacity: 0 से 1 — slide के बजाय fade होता है
- overflow: hidden — sliding overlay को clip करता है
उदाहरण: Sliding vs Fading Overlays
<style>
.wrap {
display: flex;
gap: 10px;
overflow: hidden;
}
.fade {
background: lightblue;
padding: 10px;
opacity: 0;
transition: opacity 0.3s;
}
.slide {
background: lightgreen;
padding: 10px;
transform: translateY(100%);
transition: transform 0.3s;
}
.wrap:hover .fade {
opacity: 1;
}
.wrap:hover .slide {
transform: translateY(0);
}
</style>
<div class="wrap">
<div class="fade">Fades in</div>
<div class="slide">Slides up from below</div>
</div>
- container पर
position: relativeभूल जाना, इसलिए absolute overlay image पर नहीं बैठता। - overlay के लिए
display: noneइस्तेमाल करना, जिसे animate नहीं किया जा सकता;opacityयाtransformइस्तेमाल करें। - overlay में image के against कम contrast वाला text रखना, इसलिए caption पढ़ना मुश्किल है।
हर modern browser में supported: Chrome, Firefox, Safari, Edge और Opera।
Chapter Quiz — Complete all 22 topics to unlock
0/22 topics done
Complete these topics first:
- CSS Gradients
- CSS Shadows
- CSS Filters
- CSS Blend Modes
- CSS Transforms
- CSS 2D Transforms
- CSS 3D Transforms
- CSS Transitions
- CSS Animations
- CSS Image Styling
- CSS Image Effects
- CSS Hover Overlays
- CSS Image Modal
- CSS Image Centering
- CSS Image Shapes
- CSS Buttons
- CSS Columns
- CSS Clip Path
- CSS Shapes
- CSS Scroll Snap
- CSS Architecture: BEM
- CSS Custom Properties