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

如何使用jQuery为FiveM服务器速度表的box3元素添加动画效果

为FiveM速度表的box3元素添加jQuery平滑动画

问题分析

现有代码已计算出速度对应的比例值Speedometer(范围0-1),但缺少将该值映射到box3的--p CSS变量的逻辑,且未添加过渡动画,导致速度变化时box3(速度指示部分)跳转生硬。

解决方案

1. 给box3添加CSS过渡效果

修改.box3的CSS,加入过渡属性让--p变量变化时产生平滑动画:

.box3 {
  --v:calc( ((18/5) * var(--p) - 90)*1deg);
  position: absolute;
  left: 0.4vh;
  top: 5;
  width:170px;
  height:170px;
  transform: rotate(160deg);
  border-radius:50%;
  padding:12px;
  /* 添加过渡动画,让--p变化更平滑 */
  transition: --p 0.1s ease-out;
  background:
    linear-gradient(var(--v), transparent 50%,#b7ff00        0) 0/min(100%,(var(--p) - 50)*100%),
    linear-gradient(to right, transparent 50%, #b7ff00 0);
  -webkit-mask:
    linear-gradient(var(--v), #f2f2f2     50%,transparent 0) 0/min(100%,(50 - var(--p))*100%),
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0);
  -webkit-mask-composite:destination-out;
  mask-composite:exclude;
}

2. 修改JavaScript代码实现平滑动画更新

由于jQuery原生animate不支持直接动画CSS变量,我们通过自定义动画逻辑逐步更新--p的值:

if (data.akcija == "spidometar") {
    $(".box-tekstic").html(Math.round(data.speed))
    if (data.speed > 0) {
      $("#SpeedIndicator").text(data.speed);
      let multiplier = data.maxspeed * 0.1;
      let SpeedoLimit = data.maxspeed + multiplier;
      // 计算目标--p值:初始值50对应速度0,满速时对应100
      let targetP = 50 + (data.speed / SpeedoLimit) * 50;
      
      // 用jQuery动画平滑更新box3的--p变量
      $(".box3").animate({
        dummy: targetP
      }, {
        duration: 150, // 动画时长,可根据FiveM帧率调整
        step: function(now) {
          // 实时更新CSS变量
          $(this).css("--p", now.toFixed(2));
        },
        easing: "swing" // 缓动函数,可选linear/swing
      });
    } else {
      // 速度为0时,重置box3到初始状态
      $(".box3").animate({
        dummy: 50
      }, {
        duration: 200,
        step: function(now) {
          $(this).css("--p", now.toFixed(2));
        }
      });
    }
}

关键说明

  • targetP的映射逻辑:--p初始值为50(对应速度0),满速时需达到100,因此用50 + 速度比例*50完成范围转换。
  • 动画时长建议设置在100-200ms之间,平衡流畅度和速度响应的滞后性。
  • CSS过渡与jQuery动画结合,保证在不同场景下都能呈现平滑的速度变化效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:27:27