The CSS opacity property sets the overall transparency of an element and everything inside it, ranging from 0 (completely invisible) to 1 (fully solid). While opacity is ideal for fading modals, disabled buttons, and hover transitions, choosing rgba() or hsla() works better when you only want a translucent background.
Setting opacity: 0.5; on a card dims the background color, border, images, and paragraph text together to 50% opacity. If you want a frosted dark overlay card with crisp 100% white text on top, set transparency on the color itself (background-color: rgb(15 23 42 / 0.75);) instead of opacity.
.disabled-btn {
opacity: 0.55;
cursor: not-allowed;
}
.image-card img {
opacity: 0.9;
transition: opacity 0.2s ease;
}
.image-card:hover img {
opacity: 1;
}
.glass-banner {
background-color: rgba(15, 23, 42, 0.8);
color: #ffffff;
padding: 16px;
}
Unlike animating width or margin, animating opacity runs directly on the browser's GPU compositor layer without recalculating page layout. Combining opacity and transform transitions keeps hover reveals and modal fade-ins silky smooth at 60fps.
opacity: 0 alone: An element with opacity: 0 stays clickable and tab-focusable! Pair opacity: 0 with pointer-events: none; visibility: hidden; when hiding closed dropdowns.opacity on a parent card when only the background needs transparency: Use rgba() or hsla() so text keeps WCAG contrast.opacity: 0.5 with opacity: 1: Opacity multiplies down the tree, so a child inside a 0.5 parent can never look more opaque than 0.5.Yes. Modern browsers accept both decimals (0.5) and percentages (50%) for the opacity property.
Yes. Any element with opacity less than 1 establishes a new z-index stacking context for its descendants.
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.