Feature Card
A clean feature card with a gradient icon, supporting text and a simple action link. Copy the HTML and CSS for your own project.
Fast Performance
Build lightweight interfaces with reusable components designed for speed, clarity and consistency.
Learn More →<div class="feature-card">
<div class="feature-icon">
✦
</div>
<h2>Fast Performance</h2>
<p>
Build lightweight interfaces with reusable components
designed for speed, clarity and consistency.
</p>
<a href="#" class="feature-link">
Learn More
<span>→</span>
</a>
</div>
.feature-card{
width:100%;
max-width:360px;
padding:30px;
background:#08111f;
border:1px solid rgba(255,255,255,.10);
border-radius:20px;
color:#ffffff;
box-shadow:0 18px 45px rgba(0,0,0,.28);
transition:
transform .3s ease,
border-color .3s ease,
box-shadow .3s ease;
}
.feature-card:hover{
transform:translateY(-7px);
border-color:rgba(34,211,238,.45);
box-shadow:
0 26px 55px rgba(0,0,0,.35),
0 0 28px rgba(34,211,238,.12);
}
.feature-icon{
width:58px;
height:58px;
display:flex;
align-items:center;
justify-content:center;
margin-bottom:22px;
border-radius:16px;
background:linear-gradient(
135deg,
#22d3ee,
#8b5cf6
);
color:#ffffff;
font-size:24px;
box-shadow:0 0 24px rgba(139,92,246,.25);
transition:
transform .3s ease,
box-shadow .3s ease;
}
.feature-card:hover .feature-icon{
transform:scale(1.06);
box-shadow:0 0 30px rgba(34,211,238,.25);
}
.feature-card h2{
margin:0 0 12px;
color:#ffffff;
font-size:24px;
}
.feature-card p{
margin:0 0 22px;
color:#9fb3cc;
font-size:14px;
line-height:1.7;
}
.feature-link{
display:inline-flex;
align-items:center;
gap:8px;
color:#22d3ee;
font-size:14px;
font-weight:700;
text-decoration:none;
}
.feature-link span{
transition:transform .25s ease;
}
.feature-card:hover .feature-link span{
transform:translateX(5px);
}
How This Feature Card Works
The Feature Card is a lightweight content block designed to highlight one product benefit or capability. The published component uses only HTML and CSS, with no JavaScript. Its structure is intentionally simple: a visual icon, a heading, supporting text, and a small action link.
The outer .feature-card uses width: 100% with a max-width of 360px. This allows the component to shrink inside narrower layouts while keeping a controlled desktop width. The card uses 30px of padding, a dark #08111f background, a subtle semi-transparent border, and a 20px border radius.
A default box-shadow gives the card some separation from the surrounding page. The card also defines transitions for transform, border-color, and box-shadow, each running over .3s ease. These properties are the foundation of the hover interaction.
When the user hovers over the card, translateY(-7px) moves the entire component upward. At the same time, the border changes to a brighter cyan tint using rgba(34,211,238,.45). The shadow also becomes deeper and adds a faint cyan glow around the panel.
The .feature-icon is a 58px square area containing the ✦ symbol. Flexbox centers the symbol vertically and horizontally, while a 16px border radius gives the block rounded corners. Its background uses a 135deg linear gradient from cyan #22d3ee to purple #8b5cf6.
The icon also has its own transition. When the parent card is hovered, .feature-card:hover .feature-icon scales it to 1.06. Its purple glow is replaced by a slightly stronger cyan glow. This gives the icon a secondary response while the card itself is moving upward.
The heading uses a 24px font size and a 12px bottom margin. In the published example, it displays “Fast Performance.” The paragraph underneath uses a softer #9fb3cc color, a 14px font size, and line-height: 1.7, which keeps the supporting copy readable without competing with the heading.
At the bottom, .feature-link is an inline Flexbox link containing “Learn More” and a right-arrow character. The text uses the same cyan accent color as the card border hover effect, creating visual consistency across the component.
The arrow has a separate .25s ease transform transition. Hovering anywhere over the card moves the arrow 5px to the right through .feature-card:hover .feature-link span. This means the user does not need to hover directly over the link to trigger the directional animation.
The component does not contain a media query, but its flexible width still helps it adapt to different containers. The width: 100% value allows it to become narrower than 360px when required. For more detail on the animation timing used here, see the MDN CSS transition documentation.
Because all of the effects are controlled through parent hover selectors, the implementation remains compact. There is no state management, DOM manipulation, or event handling to maintain.
Customizing This Feature Card
The published component can be adapted easily by changing a small set of existing values and content.
- Change the
360pxmax-widthto make the feature card wider or narrower. - Adjust the
30pxpadding and20pxborder radius to change spacing and overall shape. - Replace the
#08111fbackground with another surface color. - Change
#22d3eeand#8b5cf6to create a different icon gradient and accent theme. - Edit
translateY(-7px)to increase or reduce the card lift on hover. - Change the icon size from
58pxor the24pxsymbol size for a different visual balance. - Replace the ✦ symbol, “Fast Performance” heading, description, and “Learn More” text with your own feature content.
- Adjust the arrow movement from
translateX(5px)to make the link animation more or less noticeable.
Where to Use This Feature Card
This component works well wherever a short product benefit or capability needs to be presented in a clear, reusable format.
- SaaS feature sections.
- Product landing pages.
- Developer tool websites.
- Agency service grids.
- Portfolio capability sections.
- Pricing-page feature summaries.
- Documentation or onboarding pages that introduce key functionality.
Because the card has a small footprint and a consistent maximum width, multiple copies can be placed in a responsive grid to build a complete features section. For a more interactive card style with a stronger hover effect, the 3D Hover Monster Cards component is a related CodeRipple option.
Frequently Asked Questions
Does the Feature Card use JavaScript?
No. The published component uses HTML and CSS only. The card lift, icon scaling, shadow changes, border color, and arrow movement are all handled with CSS hover selectors and transitions.
How does the icon animate on hover?
When the card is hovered, the selector .feature-card:hover .feature-icon applies transform: scale(1.06). The icon’s .3s ease transition makes that scale change smooth.
Is the Feature Card responsive?
There is no dedicated media query, but the card uses width: 100% and max-width: 360px. This lets it shrink naturally inside a narrower parent container.
Why does the arrow move when hovering anywhere on the card?
The arrow transition is triggered by .feature-card:hover .feature-link span, so the hover state belongs to the parent card rather than the link itself. As a result, the arrow moves whenever the entire card is hovered.
The Feature Card provides a clean CSS-only pattern for presenting a single benefit with a gradient icon, readable copy, and subtle hover feedback.
