这段代码创建了一个具有动态背景和光晕效果的按钮,模拟了太空中星星闪烁的效果。按钮在鼠标悬停和按下时有不同的视觉效果,增加了页面的互动性。
演示效果
HTML&CSS
html"><!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>前端Hardy</title><style>css">body {background-color: #212121;display: flex;align-items: center;justify-content: center;width: 100%;height: 100vh;}.btn {display: flex;justify-content: center;align-items: center;width: 13rem;overflow: hidden;height: 3rem;background-size: 300% 300%;cursor: pointer;backdrop-filter: blur(1rem);border-radius: 5rem;transition: 0.5s;animation: gradient_301 5s ease infinite;border: double 4px transparent;background-image: linear-gradient(#212121, #212121),linear-gradient(137.48deg,#ffdb3b 10%,#fe53bb 45%,#8f51ea 67%,#0044ff 87%);background-origin: border-box;background-clip: content-box, border-box;}#container-stars {position: absolute;z-index: -1;width: 100%;height: 100%;overflow: hidden;transition: 0.5s;backdrop-filter: blur(1rem);border-radius: 5rem;}strong {z-index: 2;font-family: "Avalors Personal Use";font-size: 12px;letter-spacing: 5px;color: #ffffff;text-shadow: 0 0 4px white;}#glow {position: absolute;display: flex;width: 12rem;}.circle {width: 100%;height: 30px;filter: blur(2rem);animation: pulse_3011 4s infinite;z-index: -1;}.circle:nth-of-type(1) {background: rgba(254, 83, 186, 0.636);}.circle:nth-of-type(2) {background: rgba(142, 81, 234, 0.704);}.btn:hover #container-stars {z-index: 1;background-color: #212121;}.btn:hover {transform: scale(1.1);}.btn:active {border: double 4px #fe53bb;background-origin: border-box;background-clip: content-box, border-box;animation: none;}.btn:active .circle {background: #fe53bb;}#stars {position: relative;background: transparent;width: 200rem;height: 200rem;}#stars::after {content: "";position: absolute;top: -10rem;left: -100rem;width: 100%;height: 100%;animation: animStarRotate 90s linear infinite;}#stars::after {background-image: radial-gradient(#ffffff 1px, transparent 1%);background-size: 50px 50px;}#stars::before {content: "";position: absolute;top: 0;left: -50%;width: 170%;height: 500%;animation: animStar 60s linear infinite;}#stars::before {background-image: radial-gradient(#ffffff 1px, transparent 1%);background-size: 50px 50px;opacity: 0.5;}@keyframes animStar {from {transform: translateY(0);}to {transform: translateY(-135rem);}}@keyframes animStarRotate {from {transform: rotate(360deg);}to {transform: rotate(0);}}@keyframes gradient_301 {0% {background-position: 0% 50%;}50% {background-position: 100% 50%;}100% {background-position: 0% 50%;}}@keyframes pulse_3011 {0% {transform: scale(0.75);box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.7);}70% {transform: scale(1);box-shadow: 0 0 0 10px rgba(0, 0, 0, 0);}100% {transform: scale(0.75);box-shadow: 0 0 0 0 rgba(0, 0, 0, 0);}}</style>
</head><body><button type="button" class="btn"><strong>前端Hardy</strong><div id="container-stars"><div id="stars"></div></div><div id="glow"><div class="circle"></div><div class="circle"></div></div></button></body></html>
HTML 结构
- type=“button” class="btn:定义了一个按钮元素,这个按钮被赋予了一个类名 btn,用于应用 CSS 样式。
- container-stars:一个用于包含星星效果的容器,它有一个IDcontainer-stars。
- stars:一个空的div元素,用于通过CSS创建星星效果。
- glow:包含两个圆形光晕效果的容器,它有一个IDglow。
- circle:两个类名为circle的div元素,用于创建光晕效果。
CSS样式
- .btn:定义了按钮的基本样式,包括显示方式、宽度、高度、背景图像、边框、圆角和过渡效果。
- #container-stars:设置了星星容器的位置、大小、溢出隐藏、背景模糊和圆角。
- strong:设置了按钮内文本的字体、大小、字间距、颜色和文本阴影。
- #glow:设置了光晕容器的位置和大小。
- .circle:定义了光晕的宽度、高度、模糊效果和动画。
- .btn:hover:定义了鼠标悬停在按钮上时的样式,包括z-index和缩放效果。
- .btn:active:定义了按钮被按下时的样式,包括边框和背景效果。
- #stars:设置了星星效果的容器大小和背景。
- #stars::after和#stars::before:使用伪元素创建星星效果,并通过动画使星星移动。
- @keyframes:定义了多个关键帧动画,包括星星移动、星星旋转和按钮背景渐变效果。