SnippetUI

Feature Cards Section

Feature introduction card section for SaaS/landing pages. A card UI component with a gradation border that glows softly when hovered.

HTMLCSS

Preview

Six function cards are arranged in a grid, and the gradation border lights up when hovered.

Features

everything is here

high speed processing

Response in milliseconds.

🛡️

security

Zero trust architecture.

📊

analytics

Real-time insights.

🤝

collaboration

Seamlessly together as a team.

🌍

global

Available in 148 countries around the world.

🔧

customization

Customizable to fit your brand.

Use cases and features

  • SaaS/Landing Page: A function introduction section that clearly conveys the appeal of the product.

  • No JavaScript required: Pure CSS implementation including hover effects.

  • Color-code by card using CSS variables: Centrally manage the border color of each card using the --card-color variable.

  • mask-composite border effect: Gradient border appears clearly on hover.

Points of design and UX

  1. Visual communication with icons: Icons instantly convey the content of each card.

  2. translateY(-4px) lift-up: An exquisite sense of volume that is not too deep but lightly floats.

  3. opacity: 0 → 1 border: The border that appears for the first time on hover creates a surprise experience.

How to customize

Change the number of cards: Just add/delete .feat-card elements in feat-grid.

change border color:


.feat-c1 { --card-color: #f97316; } /* orange */

Fix number of grid columns:


.feat-grid { grid-template-columns: repeat(3, 1fr); }

Implementation code

<section class="feat-section">

<div class="feat-header">

  <div class="feat-eyebrow">Features</div>

  <h2 class="feat-title">everything is here</h2>

</div>

<div class="feat-grid">

  <div class="feat-card feat-c1">

    <span class="feat-icon">⚡</span>

    <h3 class="feat-card-title">high speed processing</h3>

    <p class="feat-card-desc">Response in milliseconds.</p>

  </div>

  <div class="feat-card feat-c2">

    <span class="feat-icon">🛡️</span>

    <h3 class="feat-card-title">security</h3>

    <p class="feat-card-desc">Zero trust architecture.</p>

  </div>

  <div class="feat-card feat-c3">

    <span class="feat-icon">📊</span>

    <h3 class="feat-card-title">analytics</h3>

    <p class="feat-card-desc">Real-time insights.</p>

  </div>

  <div class="feat-card feat-c4">

    <span class="feat-icon">🤝</span>

    <h3 class="feat-card-title">collaboration</h3>

    <p class="feat-card-desc">Seamlessly together as a team.</p>

  </div>

  <div class="feat-card feat-c5">

    <span class="feat-icon">🌍</span>

    <h3 class="feat-card-title">global</h3>

    <p class="feat-card-desc">Available in 148 countries around the world.</p>

  </div>

  <div class="feat-card feat-c6">

    <span class="feat-icon">🔧</span>

    <h3 class="feat-card-title">customization</h3>

    <p class="feat-card-desc">Customizable to fit your brand.</p>

  </div>

</div>

</section>



<style>
.feat-section {

padding: 4rem 1rem;

font-family: system-ui, -apple-system, sans-serif;

color: white;

background: #0f172a;

box-sizing: border-box;

width: 100%;

}

.feat-section * { box-sizing: border-box; }

.feat-header {

text-align: center;

margin-bottom: 3rem;

}

.feat-eyebrow {

color: #6366f1;

font-weight: 600;

letter-spacing: 0.1em;

text-transform: uppercase;

margin-bottom: 0.5rem;

}

.feat-title {

font-size: 2.5rem;

font-weight: 800;

margin: 0;

}

.feat-grid {

display: grid;

grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));

gap: 1.5rem;

max-width: 1000px;

margin: 0 auto;

}

.feat-card {

position: relative;

background: rgba(255, 255, 255, 0.03);

border-radius: 1rem;

padding: 2rem;

text-align: center;

transition: transform 0.3s ease;

z-index: 1;

}

.feat-card::before {

content: '';

position: absolute;

inset: 0;

border-radius: inherit;

padding: 2px;

background: linear-gradient(135deg, var(--card-color, #6366f1), transparent);

-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);

-webkit-mask-composite: xor;

mask-composite: exclude;

opacity: 0;

transition: opacity 0.3s ease;

z-index: -1;

}

.feat-card:hover {

transform: translateY(-4px);

}

.feat-card:hover::before {

opacity: 1;

}

.feat-icon {

font-size: 2.5rem;

display: block;

margin-bottom: 1rem;

}

.feat-card-title {

font-size: 1.25rem;

font-weight: 600;

margin: 0 0 0.5rem;

}

.feat-card-desc {

color: #9ca3af;

margin: 0;

line-height: 1.5;

}



.feat-c1 { --card-color: #f97316; }

.feat-c2 { --card-color: #3b82f6; }

.feat-c3 { --card-color: #10b981; }

.feat-c4 { --card-color: #8b5cf6; }

.feat-c5 { --card-color: #ec4899; }

.feat-c6 { --card-color: #06b6d4; }
</style>

Browser compatibility status

| Browser | Compatibility status |

|--------|-------|

| Chrome 80+ | ✅ Fully compatible |

| Firefox 99+ | ✅ Fully compatible |

| Safari 15.4+ | ✅ Compatible |

| Edge 80+ | ✅ Fully compatible |