svg+css实现20种播放按钮动画交互效果代码
代码语言:html
所属分类:布局界面
代码描述:svg+css实现20种播放按钮动画交互效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
/* =========================================
Stylish Play Button (drop-in) — BASE
========================================= */
.play-btn {
--size: clamp(64px, 12vw, 112px);
--bg-1: #fa183d; /* primary */
--bg-2: #b01428; /* shade */
--ring: rgba(255, 255, 255, 0.35);
--glow: rgba(250, 24, 61, 0.28);
--inner: rgba(255, 255, 255, 0.08);
transform: translate(-50%, -50%); /* NOTE: center-over-media default */
width: var(--size);
height: var(--size);
border: none;
border-radius: 50%;
cursor: pointer;
display: grid;
place-items: center;
isolation: isolate;
background: radial-gradient(
60% 60% at 30% 30%,
var(--inner) 0%,
transparent 100%
),
linear-gradient(180deg, var(--bg-1), var(--bg-2));
box-shadow: 0 10px 28px -6px var(--glow), 0 2px 0 rgba(0, 0, 0, 0.25) inset,
0 12px 24px rgba(0, 0, 0, 0.35);
transition: transform 0.18s ease, box-shadow 0.18s ease, filter 0.18s ease;
z-index: 10;
}
/* Base inner sheen */
.play-btn::before {
content: "";
position: absolute;
inset: 0;
border-radius: 50%;
background: radial-gradient(
100% 100% at 50% 0%,
rgba(255, 255, 255, 0.25),
transparent 60%
);
pointer-events: none;
mix-blend-mode: screen;
}
/* Base static ring (no animation by default) */
.play-btn::after {
content: "";
position: absolute;
top: 50%;
left: 50%;
width: calc(var(--size) + 8px);
height: calc(var(--size) + 8px);
border-radius: 50%;
transform: translate(-50%, -50%) scale(0.95);
box-shadow: 0 0 0 2px var(--ring);
opacity: 0.6;
pointer-events: none;
}
.play-icon {
width: 58%;
height: 58%;
display: block;
fill: #fff;
filter: drop-shadow(0 2px 3px rgba(0, 0, 0, 0.45));
}
/* Hover/Focus polish */
.play-btn:hover,
.play-btn:focus-visible {
transform: translate(-50%, -50%) scale(1.04);
box-shadow: 0 16px 36px -6px var(--glow), 0 2px 0 rgba(0, 0, 0, 0.25) inset,
0 14px 28px rgba(0, 0, 0, 0.4);
outline: none;
}
/* Keyboard focus ring */
.play-btn:focus-visible {
box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.6),
0 0 0 6px rgba(250, 24, 61, 0.35), 0 12px 24px rgba(0, 0, 0, 0.4);
}
/* Active press */
.play-btn:active {
transform: translate(-50%, -50%) scale(0.98);
filter: brightness(0.98);
}
/* ================================
EFFECT 1 — PULSE (soft breathe)
Usage: <button class="play-btn play--pulse">
================================ */
.play--pulse {
animation: btn-breathe 2.4s ease-in-out infinite;
}
.play--pulse::after {
animation: play-ring-strong 1.6s ease-out infinite;
}
@keyframes btn-breathe {
0%,
100% {
transform: translate(-50%, -50%) scale(1);
box-shadow: 0 10px 28px -6px var(--glow), 0 2px 0 rgba(0, 0, 0, 0.25) inset,
0 12px 24px rgba(0, 0, 0, 0.35);
}
50% {
transform: translate(-50%, -50%) scale(1.04);
box-shadow: 0 18px 40px -6px var(--glow), 0 2px 0 rgba(0, 0, 0, 0.25) inset,
0 18px 34px rgba(0, 0, 0, 0.45);
}
}
@keyframes play-ring-strong {
0% {
transform: translate(-50%, -50%) scale(0.85);
op.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0