锥型渐变实现流光按钮
最近在公司写年终项目,UI设计稿给了一个背景各种渐变然后在按钮中心旋转的动画效果,市面上大都是边框流光和线性渐变的流光,这里记录一下通过锥形渐变实现的中心旋转流光按钮。
原理
其实和边框,线性渐变的流光按钮没什么不同,都是通过放一个元素写好背景色在按钮下面不停的旋转。
效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> .dutyStartBtn { width: 280px; height: 58px; border-radius: 33px; font-size: 21px; color: #ffffff; position: relative; /* 设置溢出隐藏拦截多余部分 */ overflow: hidden; margin: 100px auto; } .dutyStartBtn::after { /* 通过伪元素实现旋转的锥形渐变背景 */ border-radius: 33px; content: ""; position: absolute; width: 100%; height: 800%; left: 50%; top: 50%; transform: rotate(0deg) translate(-50%, -50%); background: conic-gradient( #4a3dff, #1715ff, #2226ff, #00ffff, #2a4eff, #2515ff, #211aff, #9d2dff, #c71eff ); /* 通过高斯模糊调整效果 */ filter: blur(40px); /* 设置旋转中心点 */ transform-origin: 0 0; /* 应用旋转动画 */ animation: rotate-bg 5s linear infinite; } .btn { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; position: absolute; left: 0; top: 0; /* 使文字在背景之上 */ z-index: 1; } /* 旋转动画 */ @keyframes rotate-bg { from { transform: rotate(0deg) translate(-50%, -50%); } to { transform: rotate(360deg) translate(-50%, -50%); } } </style> </head> <body> <div> <div>流光按钮</div> </div> </body> </html>