前言:首先我们要知道 css 动画只对数值类的 CSS 属性起作用。要实现边框转圈动画效果,实际就是渐变背景的旋转。但是在以前,渐变背景是不支持动画的。现在我们可以利用浏览器新出的 Houdini API 来实现这个动画效果。Houdini API 特别强大,允许开发者干扰浏览器渲染过程。其中有一个属性@property 允许开发者在样式代码里面,自己定义样式属性。
效果图:
代码实现:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width" /> <title>document</title> <style> body { background: #000; } .card::before { z-index: -1; filter: blur(20px); } .card::after { content: ""; position: absolute; inset: 8px; background: #191c29; border-radius: inherit; } @property --direc { syntax: "<angle>"; initial-value: 0deg; inherits: false; } .card { position: relative; width: 200px; height: 400px; margin: 100px auto; --direc: 0deg; color: red; background-image: linear-gradient( var(--direc), #5ddcff, #3c67e3, 43%, #4e00c2 ); animation: rotate 3s linear infinite; } @keyframes rotate { to { --direc: 360deg; } } </style> </head> <body> <div class="card"></div> <script></script> </body> </html>