You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSS @property --rotate 在Safari中失效,寻求替代方案

兼容Safari和Firefox的卡片渐变旋转动画替代方案

你遇到的问题确实是因为@property --rotate的浏览器支持性限制:Safari 16.4及以上才开始支持该特性,旧版本完全不兼容;Firefox的部分版本也存在适配问题。下面是不需要依赖@property的替代实现方案,能在所有主流现代浏览器中正常运行:

修改后的代码

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

<style>
:root {
  --card-height: 65vh;
  --card-width: calc(var(--card-height) / 1.5);
}
.card {
  background: #191c29;
  width: var(--card-width);
  height: var(--card-height);
  padding: 3px;
  position: relative;
  border-radius: 6px;
  justify-content: center;
  align-items: center;
  text-align: center;
  display: flex;
  font-size: 1.5em;
  color: rgb(88 199 250 / 0%);
  cursor: pointer;
  font-family: cursive;
}
.card::before {
  content: "";
  width: 104%;
  height: 102%;
  border-radius: 8px;
  background-image: linear-gradient(
    0deg,
    #5ddcff, #3c67e3 43%, #4e00c2
  );
  position: absolute;
  z-index: -1;
  top: -1%;
  left: -2%;
  animation: spin 2.5s linear infinite;
  transform-origin: center center; /* 确保伪元素绕中心旋转 */
}
@keyframes spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
</style>

关键改动说明

  • 移除了@property --rotate的定义,避免依赖浏览器对自定义属性动画的支持
  • 将渐变角度固定为0deg,转而通过旋转伪元素本身实现渐变的旋转效果
  • 添加transform-origin: center center确保伪元素以自身中心为轴旋转,和原动画效果完全一致
  • 动画逻辑改为操作transform: rotate(),这是所有主流浏览器(包括Safari、Firefox)都原生支持的动画属性

这个方案的视觉效果和原代码完全一致,但兼容性覆盖了所有现代浏览器,不需要担心版本限制。

内容的提问来源于stack exchange,提问作者eabdenna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 16:46:13