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);
opacity: 0.95;
}
100% {
transform: translate(-50%, -50%) scale(1.5);
opacity: 0;
}
}
/* ==========================================
EFFECT 2 — RIPPLE (rotating dashed halo)
Usage: <button class="play-btn play--ripple">
========================================== */
.play--ripple::after {
width: calc(var(--size) + 14px);
height: calc(var(--size) + 14px);
box-shadow: none;
opacity: 1;
transform: translate(-50%, -50%);
background: repeating-conic-gradient(
from 0deg,
var(--ring) 0 8deg,
transparent 8deg 20deg
);
border-radius: 50%;
-webkit-mask: radial-gradient(
circle,
transparent 60%,
#000 62%,
#000 70%,
transparent 72%
);
mask: radial-gradient(
circle,
transparent 60%,
#000 62%,
#000 70%,
transparent 72%
);
animation: ripple-rotate 2.8s linear infinite;
}
@keyframes ripple-rotate {
to {
transform: translate(-50%, -50%) rotate(360deg);
}
}
/* ==============================================
EFFECT 3 — SHINE (diagonal light sweep)
Usage: <button class="play-btn play--shine">
============================================== */
.play--shine::before {
background: radial-gradient(
100% 100% at 50% 0%,
rgba(255, 255, 255, 0.22),
transparent 60%
),
linear-gradient(
115deg,
transparent 35%,
rgba(255, 255, 255, 0.55) 50%,
transparent 65%
);
background-repeat: no-repeat;
background-size: 100% 100%, 40% 140%;
background-position: center, -150% 50%;
animation: shine-sweep 2.2s ease-in-out infinite;
}
@keyframes shine-sweep {
0%,
25% {
background-position: center, -150% 50%;
}
75%,
100% {
background-position: center, 160% 50%;
}
}
/* ====================================
EFFECT 4 — BOB (gentle float)
Usage: <button class="play-btn play--bob">
==================================== */
.play--bob {
animation: bob-y 2.8s ease-in-out infinite;
}
@keyframes bob-y {
0%,
100% {
transform: translate(-50%, -50%) translateY(0);
}
50% {
transform: translate(-50%, -50%) transl.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0