【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>
相关推荐
hj5914_前端新手8 小时前
javascript基础- 函数中 this 指向、call、apply、bind
前端·javascript
薛定谔的算法8 小时前
低代码编辑器项目设计与实现:以JSON为核心的数据驱动架构
前端·react.js·前端框架
Hilaku8 小时前
都2025年了,我们还有必要为了兼容性,去写那么多polyfill吗?
前端·javascript·css
yangcode8 小时前
iOS 苹果内购 Storekit 2
前端
LuckySusu8 小时前
【js篇】JavaScript 原型修改 vs 重写:深入理解 constructor的指向问题
前端·javascript
LuckySusu8 小时前
【js篇】如何准确获取对象自身的属性?hasOwnProperty深度解析
前端·javascript
LuckySusu8 小时前
【js篇】深入理解 JavaScript 作用域与作用域链
前端·javascript
LuckySusu8 小时前
【js篇】call() 与 apply()深度对比
前端·javascript
LuckySusu8 小时前
【js篇】addEventListener()方法的参数和使用
前端·javascript
该用户已不存在8 小时前
6个值得收藏的.NET ORM 框架
前端·后端·.net