svg+css实现文字鼠标悬停星星闪耀动画效果代码
代码语言:html
所属分类:悬停
代码描述:svg+css实现文字鼠标悬停星星闪耀动画效果代码
代码标签: svg css 文字 鼠标 悬停 星星 闪耀 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
@import url('//repo.bfw.wiki/bfwrepo/css/normalize.min.css') layer(normalize);
@layer normalize, base, demo;
@layer demo {
:root {
--color: light-dark(hsl(45.2deg 97.42% 64.31%), hsl(45.2deg 97.42% 54.31%));
--shadow: light-dark(hsl(35deg 100% 57.06%), hsl(35deg 100% 47.06%));
--glare: light-dark(white, hsl(0 0% 100% / 0.75));
--transition: 0.2s;
}
.dazzle {
--font-level: 5;
--font-size: 1em;
--padding: 0.12em;
padding: var(--padding) calc(var(--padding) * 2);
border-radius: 0.25em;
text-decoration: none;
color: transparent;
position: relative;
transition: background 0.2s 0.1s;
font-weight: 600;
}
.dazzle:is(:hover, :focus-visible) {
background: color-mix(in hsl, canvasText, #0000 86%);
}
.dazzle span {
display: inline-block;
transition: all 0.2s;
text-decoration: none;
text-shadow: calc(var(--hover) * (var(--font-size) * -0))
calc(var(--hover) * (var(--font-size) * 0)) var(--shadow),
calc(var(--hover) * (var(--font-size) * -0.02))
calc(var(--hover) * (var(--font-size) * 0.02)) var(--shadow),
calc(var(--hover) * (var(--font-size) * -0.04))
calc(var(--hover) * (var(--font-size) * 0.04)) var(--shadow),
calc(var(--hover) * (var(--font-size) * -0.06))
calc(var(--hover) * (var(--font-size) * 0.06)) var(--shadow),
calc(var(--hover) * (var(--font-size) * -0.08))
calc(var(--hover) * (var(--font-size) * 0.08)) var(--shadow),
calc(var(--hover) * (var(--font-size) * -0.1))
calc(var(--hover) * (var(--font-size) * 0.1)) var(--shadow);
transform: translate(
calc(var(--hover) * (var(--font-size) * 0.1)),
calc(var(--hover) * (var(--font-size) * -0.1))
);
}
.dazzle span:last-of-type {
position: absolute;
inset: var(--padding) calc(var(--padding) * 2);
background: linear-gradient(
108deg,
transparent 0 55%,
var(--glare) 55% 60%,
transparent 60% 70%,
var(--glare) 70% 85%,
transparent 85%
)
calc(var(--pos) * -200%) 0% / 200% 100%,
var(--color);
-webkit-background-clip: text;
color: transparent;
z-index: 2;
text-shadow: none;
transform: translate(
calc(var(--hover) * (var(--font-size) * 0.1)),
calc(var(--hover) * (var(--font-size) * -0.1))
);
}
.dazzle span:last-of-type {
transition: transform 0.2s, background-position 0s;
}
.dazzle:is(:hover, :focus-visible) span:last-of-type {
transition: transform 0.2s,
background-position calc(var(--hover) * 1.5s) calc(var(--hover) * 0.25s);
}
.dazzle {
--hover: 0.4;
--pos: 0;
}
.dazzle:is(:hover, :focus-visible) {
--hover: 1;
--pos: 1;
}
.dazzle:active {
--hover: 0;
}
.dazzle:active span:last-of-type {
--hover: 0;
--pos: 1;
}
.dazzle svg {
position: absolute;
z-index: 3;
width: calc(var(--font-size) * 0.5);
aspect-ratio: 1;
}
.dazzle svg path {
fill: var(--glare);
}
/* Animation for sparkles */
.dazzle:focus-visible {
outline: none;
}
.dazzle:is(:hover, :focus-visible) svg {
-webkit-animation: sparkle 0.75s calc(0.1s + ((var(--delay-step) * var(--d)) * 1s))
both;
animation: sparkle 0.75s calc(0.1s + ((var(--delay-step) * var(--d)) * 1s))
both;
}
@-webkit-keyframes sparkle {
50% {
transform: translate(-50%, -50%) scale(var(--s, 1));
}
}
@keyframes sparkle {
50% {
transform: translate(-50%, -50%) scale(var(--s, 1));
}
}
.dazzle svg {
--delay-step: 0.15;
top: calc(var(--y, 50) * 1%);
left: calc(var(--x, 0) * 1%);
transform: translate(-50%, -50%) scale(0);
stroke-width: 1;
stroke: light-dark(black, #0000);
}
.dazzle svg:nth-of-type(1) {
--x: 0;
--y: 20;
--s: 1.1;
--d: 1;
}
.dazzle svg:nth-of-type(2) {
--x: 15;
.........完整代码请登录后点击上方下载按钮下载查看
网友评论0