【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>
相关推荐
雪碧聊技术35 分钟前
深入解析Vue中v-model的双向绑定实现原理
前端·javascript·vue.js·v-model
快起来别睡了37 分钟前
手写 Ajax 与 Promise:从底层原理到实际应用
前端
打不着的大喇叭1 小时前
uniapp的光标跟随和打字机效果
前端·javascript·uni-app
无我Code1 小时前
2025----前端个人年中总结
前端·年终总结·创业
程序猿阿伟1 小时前
《前端路由重构:解锁多语言交互的底层逻辑》
前端·重构
Sun_light2 小时前
6个你必须掌握的「React Hooks」实用技巧✨
前端·javascript·react.js
爱学习的茄子2 小时前
深度解析JavaScript中的call方法实现:从原理到手写实现的完整指南
前端·javascript·面试
莫空00002 小时前
Vue组件通信方式详解
前端·面试
呆呆的心2 小时前
揭秘 CSS 伪元素:不用加标签也能玩转出花的界面技巧 ✨
前端·css·html
susnm2 小时前
Dioxus 与数据库协作
前端·rust