Moving gradient background
Copy the animated radial gradient background from the visualizer, with this palette already applied.
Use when: you want the hero gradient effect.<div class="colorfly-moving-gradient-bg">
<span class="colorfly-gradient-spark" aria-hidden="true"></span>
<div>
<small>Motion gradient</small>
<h2>Gradient background</h2>
<p>A moving brand gradient built from your palette.</p>
</div>
</div>
<style>
.colorfly-moving-gradient-bg {
--gradient-anchor: #5A2E1B;
--gradient-partner: #A48C82;
--gradient-accent: #8B5C4A;
--gradient-text: #FFFFFF;
position: relative;
display: grid;
place-items: center;
min-height: 340px;
overflow: hidden;
padding: 42px;
color: var(--gradient-text);
border-radius: 28px;
background:
radial-gradient(circle at 20% 82%, color-mix(in srgb, var(--gradient-accent) 48%, transparent) 0 14%, transparent 42%),
radial-gradient(circle at 84% 18%, color-mix(in srgb, var(--gradient-partner) 52%, transparent) 0 16%, transparent 46%),
linear-gradient(135deg, var(--gradient-anchor), color-mix(in srgb, var(--gradient-anchor) 72%, black 18%), var(--gradient-partner), var(--gradient-anchor));
background-size: 160% 160%, 180% 180%, 240% 240%;
animation: colorfly-gradient-bg 10.5s cubic-bezier(.72, 0, .22, 1) infinite;
}
.colorfly-moving-gradient-bg > div {
position: relative;
z-index: 1;
max-width: 640px;
text-align: center;
}
.colorfly-moving-gradient-bg::before,
.colorfly-moving-gradient-bg::after,
.colorfly-gradient-spark {
content: "";
position: absolute;
z-index: 0;
aspect-ratio: 1;
border-radius: 50%;
pointer-events: none;
mix-blend-mode: screen;
}
.colorfly-moving-gradient-bg::before {
left: -10%;
top: -18%;
width: min(520px, 72%);
background:
radial-gradient(circle, color-mix(in srgb, var(--gradient-partner) 88%, white 8%) 0%, transparent 66%),
radial-gradient(circle at 68% 32%, color-mix(in srgb, var(--gradient-accent) 58%, white 10%) 0%, transparent 38%);
opacity: .86;
animation: colorfly-gradient-orb-one 11s cubic-bezier(.65, 0, .22, 1) infinite;
}
.colorfly-moving-gradient-bg::after {
right: -12%;
bottom: -24%;
width: min(620px, 82%);
background:
radial-gradient(circle, color-mix(in srgb, var(--gradient-accent) 86%, white 6%) 0%, transparent 68%),
radial-gradient(circle at 28% 72%, color-mix(in srgb, var(--gradient-partner) 62%, white 8%) 0%, transparent 42%);
opacity: .78;
animation: colorfly-gradient-orb-two 12.8s cubic-bezier(.56, 0, .25, 1) infinite;
}
.colorfly-gradient-spark {
left: 42%;
top: 44%;
width: min(360px, 54%);
background: radial-gradient(circle, color-mix(in srgb, var(--gradient-anchor) 64%, white 12%) 0%, transparent 62%);
opacity: .46;
animation: colorfly-gradient-spark 9.2s cubic-bezier(.62, 0, .2, 1) infinite;
}
@keyframes colorfly-gradient-bg {
0%, 100% { background-position: 0% 46%, 100% 24%, 0% 50%; }
18% { background-position: 44% 88%, 58% 12%, 34% 22%; }
39% { background-position: 86% 38%, 18% 74%, 86% 64%; }
63% { background-position: 26% 16%, 84% 92%, 42% 100%; }
82% { background-position: 68% 68%, 32% 30%, 100% 34%; }
}
@keyframes colorfly-gradient-orb-one {
0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
22% { transform: translate3d(78%, 22%, 0) scale(1.12); }
47% { transform: translate3d(44%, 86%, 0) scale(.92); }
72% { transform: translate3d(112%, 56%, 0) scale(1.2); }
}
@keyframes colorfly-gradient-orb-two {
0%, 100% { transform: translate3d(0, 0, 0) scale(1.08); }
19% { transform: translate3d(-48%, -18%, 0) scale(.9); }
53% { transform: translate3d(-92%, -62%, 0) scale(1.14); }
79% { transform: translate3d(-22%, -86%, 0) scale(.98); }
}
@keyframes colorfly-gradient-spark {
0%, 100% { transform: translate3d(-12%, -8%, 0) scale(.84); }
28% { transform: translate3d(52%, -34%, 0) scale(1.08); }
58% { transform: translate3d(-44%, 38%, 0) scale(.96); }
84% { transform: translate3d(20%, 28%, 0) scale(1.18); }
}
</style>