【CSS】houdini自定义CSS属性实现渐变色旋转动画

现有一段代码,在不旋转整个元素的前提下,渐变背景无法应用动画

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .card {
      --direc: 0deg;
      width: 300px;
      height: 300px;
      border-radius: 4px;
      background-image: linear-gradient(var(--direc), #5aec5a, #3c673c, #3c67e3);
      animation: rotate 3s linear infinite;
    }

    @keyframes rotate {
      to {
        --direc: 360deg
      }
    }
  </style>
</head>

<body>
  <div class="card"></div>
</body>

</html> 

传统模式下,开发者无法干预图片绘制过程,使用 houdini API 自定义 CSS属性,如本例中自定义的属性 --direc,性质为角度、初始值为0、该属性不可被继承。

css 复制代码
@property --direc {
  syntax: '<angle>'; 
  initial-value: 0deg;
  inherits: false;
}
html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
@property --direc {
  syntax: '<angle>';
  initial-value: 0deg;
  inherits: false;
}

    .card {
      --direc: 0deg;
      width: 300px;
      height: 300px;
      border-radius: 4px;
      background-image: linear-gradient(var(--direc), #5aec5a, #3c673c, #3c67e3);
      animation: rotate 3s linear infinite;
    }

    @keyframes rotate {
      to {
        --direc: 360deg
      }
    }
  </style>
</head>

<body>
  <div class="card"></div>
</body>

</html>
相关推荐
yang_love101121 分钟前
Webpack vs Vite:深度对比与实战示例,如何选择最佳构建工具?
前端·webpack·node.js
好_快24 分钟前
Lodash源码阅读-keysIn
前端·javascript·源码阅读
好_快24 分钟前
Lodash源码阅读-nativeKeysIn
前端·javascript·源码阅读
好_快27 分钟前
Lodash源码阅读-baseKeysIn
前端·javascript·源码阅读
Good luck—dys30 分钟前
VUE如何后端控制及动态路由详细讲解
前端·javascript·vue.js
好_快33 分钟前
Lodash源码阅读-baseGetAllKeys
前端·javascript·源码阅读
裁二尺秋风1 小时前
Nginx — Nginx处理Web请求机制解析
前端·nginx
excel1 小时前
webpack 核心编译器 第五节
前端
曲辒净2 小时前
vue搭建一个树形菜单项目
前端·javascript·vue.js