6つの機能カードがグリッド状に並び、ホバー時にグラデーションボーダーが発光します。
ミリ秒単位のレスポンス。
ゼロトラストアーキテクチャ。
リアルタイムのインサイト。
チームでシームレスに一緒に。
世界148か国で利用可能。
あなたのブランドに合わせたカスタム性。
SaaS・ランディングページ: 製品の魅力を整然と伝える機能紹介セクション。
JavaScript不要: ホバーエフェクト含めピュアCSS実装。
CSS変数でカード別色分け: --card-color 変数で各カードのボーダー色を一元管理。
mask-compositeのボーダーエフェクト: グラデーションボーダーがホバー時にくっきり現れる。
アイコンで視覚的コミュニケーション: アイコンが各カードの内容を瞬時に伝える。
translateY(-4px) のリフトアップ: 深くすぎず軽く浮く絶妙なボリューム感。
opacity: 0 → 1 のボーダー: ホバーではじめて現れるボーダーがサプライズ体験を演出。
カード数を変える: feat-grid 内の .feat-card 要素を追加/削除するだけ。
ボーダー色を変える:
.feat-c1 { --card-color: #f97316; } /* オレンジ */
グリッド列数を固定する:
.feat-grid { grid-template-columns: repeat(3, 1fr); }
<section class="feat-section">
<div class="feat-header">
<div class="feat-eyebrow">Features</div>
<h2 class="feat-title">すべてがここに</h2>
</div>
<div class="feat-grid">
<div class="feat-card feat-c1">
<span class="feat-icon">⚡</span>
<h3 class="feat-card-title">高速処理</h3>
<p class="feat-card-desc">ミリ秒単位のレスポンス。</p>
</div>
<div class="feat-card feat-c2">
<span class="feat-icon">🛡️</span>
<h3 class="feat-card-title">セキュリティ</h3>
<p class="feat-card-desc">ゼロトラストアーキテクチャ。</p>
</div>
<div class="feat-card feat-c3">
<span class="feat-icon">📊</span>
<h3 class="feat-card-title">アナリティクス</h3>
<p class="feat-card-desc">リアルタイムのインサイト。</p>
</div>
<div class="feat-card feat-c4">
<span class="feat-icon">🤝</span>
<h3 class="feat-card-title">コラボ</h3>
<p class="feat-card-desc">チームでシームレスに一緒に。</p>
</div>
<div class="feat-card feat-c5">
<span class="feat-icon">🌍</span>
<h3 class="feat-card-title">グローバル</h3>
<p class="feat-card-desc">世界148か国で利用可能。</p>
</div>
<div class="feat-card feat-c6">
<span class="feat-icon">🔧</span>
<h3 class="feat-card-title">カスタマイズ</h3>
<p class="feat-card-desc">あなたのブランドに合わせたカスタム性。</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> | ブラウザ | 対応状況 |
|--------|--------|
| Chrome 80+ | ✅ 完全対応 |
| Firefox 99+ | ✅ 完全対応 |
| Safari 15.4+ | ✅ 対応 |
| Edge 80+ | ✅ 完全対応 |