07パステルCTA帯
横長の帯が背景より一段浮いた厚いカードとして乗り、ボタンは内側に押し込まれたような奥行きを持つ。
使いどころ登録誘導帯・無料トライアル開始
radius 16press 버튼배경 대비

<main class="stage">
<div class="ctaband">
<div class="ctaband__glow is-demo" aria-hidden="true"></div>
<p class="ctaband__title">今すぐチームを招待しましょう</p>
<button class="ctaband__cta is-demo" type="button">無料で始める</button>
</div>
</main>@use "../../../../site/static/demo-tokens" as *;
$duration: $dur-loop; // 빛 번짐·버튼 맥동의 한 주기
$easing: $ease-pop; // 오버슈트 곡선
$color: $subject-blue; // 배경 빛 색
@include stage($stage-orange);
.ctaband {
position: relative;
overflow: hidden;
box-sizing: border-box;
display: flex;
flex-direction: column;
align-items: flex-start;
gap: $sp-4;
width: clamp(260px, 86vw, 400px);
border-radius: $r-card;
background: $subject-ink;
padding: $sp-6 $sp-5;
box-shadow: 10px 10px 20px rgba($stage-ink, .3), -6px -6px 16px rgba($stage-paper, .18);
}
.ctaband__glow {
position: absolute;
top: -30%;
right: -10%;
width: 50%;
aspect-ratio: 1;
border-radius: $r-pill;
background: rgba($color, .35);
animation: glowPulse $duration $easing infinite;
}
.ctaband__title {
position: relative;
margin: 0;
max-width: 70%;
color: $subject-cream;
font-weight: 700; font-size: clamp(16px, 4vw, 20px); line-height: 1.3;
}
.ctaband__cta {
position: relative;
border: 0;
border-radius: $r-pill;
background: $subject-cream;
color: $subject-ink;
padding: $sp-2 $sp-6;
font-weight: 700; font-size: clamp(12px, 2.8vw, 14px); line-height: 1;
box-shadow: 4px 4px 8px rgba($stage-ink, .4);
animation: ctaPress $duration $easing infinite;
}
// 데모: 배경 빛이 부풀고, 버튼이 맥동한다
@keyframes glowPulse {
0%, 100% { transform: scale(1); opacity: .35; }
50% { transform: scale(1.15); opacity: .55; }
}
@keyframes ctaPress {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.06); }
}
@media (prefers-reduced-motion: reduce) {
.ctaband__glow, .ctaband__cta { animation: none !important; transform: none; opacity: .35; }
}html, body {
margin: 0;
overflow: hidden;
}
.stage {
box-sizing: border-box;
min-height: 100vh;
display: grid;
place-items: center;
margin: 0;
background: #ff4d1f;
font-family: -apple-system, "Segoe UI", "Noto Sans KR", sans-serif;
padding: clamp(8px, 4vw, 24px);
}
.ctaband {
position: relative;
overflow: hidden;
box-sizing: border-box;
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 16px;
width: clamp(260px, 86vw, 400px);
border-radius: 16px;
background: #17141a;
padding: 24px 20px;
box-shadow: 10px 10px 20px rgba(23, 20, 26, 0.3), -6px -6px 16px rgba(255, 255, 255, 0.18);
}
.ctaband__glow {
position: absolute;
top: -30%;
right: -10%;
width: 50%;
aspect-ratio: 1;
border-radius: 999px;
background: rgba(47, 109, 246, 0.35);
animation: glowPulse 2s cubic-bezier(0.2, 1.4, 0.4, 1) infinite;
}
.ctaband__title {
position: relative;
margin: 0;
max-width: 70%;
color: #fff7e6;
font-weight: 700;
font-size: clamp(16px, 4vw, 20px);
line-height: 1.3;
}
.ctaband__cta {
position: relative;
border: 0;
border-radius: 999px;
background: #fff7e6;
color: #17141a;
padding: 8px 24px;
font-weight: 700;
font-size: clamp(12px, 2.8vw, 14px);
line-height: 1;
box-shadow: 4px 4px 8px rgba(23, 20, 26, 0.4);
animation: ctaPress 2s cubic-bezier(0.2, 1.4, 0.4, 1) infinite;
}
@keyframes glowPulse {
0%, 100% {
transform: scale(1);
opacity: 0.35;
}
50% {
transform: scale(1.15);
opacity: 0.55;
}
}
@keyframes ctaPress {
0%, 100% {
transform: scale(1);
}
50% {
transform: scale(1.06);
}
}
@media (prefers-reduced-motion: reduce) {
.ctaband__glow, .ctaband__cta {
animation: none !important;
transform: none;
opacity: 0.35;
}
}import type { CSSProperties } from "react";
import styles from "./CtaBandClay.module.scss";
export type CtaBandClayProps = {
title?: string;
cta?: string;
duration?: number;
easing?: string;
color?: string;
};
type Vars = CSSProperties & { "--duration"?: string; "--easing"?: string; "--color"?: string };
export default function CtaBandClay({
title = "지금 팀에 합류시켜 보세요",
cta = "무료로 시작",
duration = 2000,
easing = "cubic-bezier(.2,1.4,.4,1)",
color = "#2f6df6",
}: CtaBandClayProps) {
const vars: Vars = { "--duration": `${duration}ms`, "--easing": easing, "--color": color };
return (
<div className={styles.band} style={vars}>
<div className={styles.glow} aria-hidden="true" />
<p className={styles.title}>{title}</p>
<button type="button" className={styles.cta}>{cta}</button>
</div>
);
}07 パステルCTA帯 — 計測 累積面積 14.983% · 動いたフレーム 10/23GODRICH オリジナル · SCSS と React は zip に同梱 · クレイモーフィズムとは?丸くてぷっくりしたLPパーツ9選
このデモが属する記事
クレイモーフィズムとは?丸くてぷっくりしたLPパーツ9選クレイモーフィズムとは、太い角丸と明るいハイライト・暗い影を同じ面に重ねることで、粘土を指で押したような柔らかい質感を作るUIデザインの手法です。ボタンやカードによく使われます。 この記事のデモをすべて見る


