css实现鼠标悬浮闪闪发光的文字动画效果代码

代码语言:html

所属分类:动画

代码描述:css实现鼠标悬浮闪闪发光的文字动画效果代码

代码标签: css 鼠标 悬浮 闪闪 发光 文字 动画

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开


<!DOCTYPE html>
<html lang="en" >

<head>

  <meta charset="UTF-8">
  

<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/open-props.css">

<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/colors-hsl.min.css">
<style>
:root {
  --color: var(--yellow-5);
  --shadow: var(--yellow-8);
  --glare: hsl(0 0% 100% / 0.75);
  --font-size: var(--font-size-fluid-3);
  --transition: 0.2s;
}

* {
  box-sizing: border-box;
}

body {
  display: grid;
  place-items: center;
  min-height: 100vh;
  font-family: 'Google Sans', sans-serif, system-ui;
  background: var(--gray-9);
}

a {
  --padding: var(--size-2);
  padding: var(--padding);
  border-radius: var(--size-4);
  text-decoration: none;
  color: transparent;
  position: relative;
  transition: background 0.2s;
}

a:hover {
  background: var(--gray-8);
}

span {
  display: inline-block;
  font-size: calc(var(--font-size) * 1.5);
  font-weight: var(--font-weight-9);
  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.10)) calc(var(--hover) * (var(--font-size) * 0.10)) var(--shadow);
/*     calc(var(--hover) * -2px) calc(var(--hover) * 2px) var(--shadow),
    calc(var(--hover) * -3px) calc(var(--hover) * 3px) var(--shadow),
    calc(var(--hover) * -4px) calc(var(--hover) * 4px) var(--shadow), */
/*     calc(var(--hover) * -5px) calc(var(--hover) * 5px) var(--shadow); */
  transform: translate(calc(var(--hover) * (var(--font-size) * 0.10)), calc(var(--hover) * (var(--font-size) * -0.10)));
}

span:last-of-type {
  position: absolute;
  inset: var(--padding);
  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.10)), calc(var(--hover) * (var(--font-size) * -0.10)));
}

span:last-of-type {
  transition: transform 0.2s, background-position 0s;
}

a:hover span:last-of-type {
  transition: transform 0.2s, background-position calc(var(--hover) * 1.5s) calc(var(--hover) * 0.25s);
}

a {
  --hover: 0.4;
  --pos: 0;
}

a:hover {
  --hover: 1;
  --pos: 1;
}

a:active {
  --hover: 0;
}

a:active span:last-of-type {
  --hover: 0;
  --pos: 1;
}

a svg {
	position: absolute;
	z-index: 3;
	width: calc(var(--font-size) * 0.5);
	aspect-ratio: 1;
}

a svg path {
	fill: var(--glare);
}

/* Animation for sparkles */

a:hover svg {
	-webkit-animation: sparkle 0.75s calc((var(--delay-step) * var(--d)) * 1s) both;
	        animation: sparkle 0.75s calc((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));
	}
}

a svg {
	--delay-step: 0.15;
	top: calc(var(--y, 50) * 1%);
	left:  calc(var(--x, 0) * 1%);
	transform: translate(-50%, -50%) scale(0);
}

a svg:nth-of-type(1) {
	--x: 0;
	--y: 20;
	--s: 1.1;
	--d: 1;
}

a svg:nth-of-type(2) {
	--x: 15;
	--y: 80;
	--s: 1.25;
	--d: 2;
}

a svg:nth-of-type(3) {
	--x: 45;
	--.........完整代码请登录后点击上方下载按钮下载查看

网友评论0