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

Javascript WarpSpeed动画仅填充半屏问题排查求助

解决超空间 Warp 动画背景只显示一半的问题

嘿,别担心,作为新手遇到CSS布局问题太正常了!我帮你分析下这个超空间动画只显示一半的问题,其实核心原因和canvas的尺寸设置有关,咱们一步步来解决:

问题分析

你遇到的问题主要是canvas的绘图尺寸(元素自身的width/height属性)和显示尺寸(CSS的width/height)不匹配。canvas默认的绘图尺寸是300px×150px,当你只通过CSS设置它占满全屏时,绘图缓冲区的内容会被拉伸,看起来就像是只显示了一部分。另外,虽然你给父div设置了全屏fixed定位,但canvas的尺寸规则需要额外调整才能完全适配。

解决方案

步骤1:修改CSS,确保canvas显示尺寸铺满全屏

找到你CSS里的canvas样式,替换成下面的代码:

canvas {
  position: absolute;
  z-index: 0;
  width: 100vw;  /* 100%视口宽度 */
  height: 100vh; /* 100%视口高度 */
  top: 0;
  left: 0;
  margin: 0;
  padding: 0;
}

vw和vh是视口单位,能直接让canvas铺满整个浏览器窗口,比百分比更可靠,不会受父元素布局影响。

步骤2:同步canvas的绘图尺寸与显示尺寸

只设置CSS显示尺寸还不够,需要让canvas的绘图缓冲区尺寸和显示尺寸一致,否则动画会变形或显示不全。修改你的JS初始化代码:

<script type="text/javascript">
  const canvas = document.getElementById('canvas');
  
  // 定义调整canvas尺寸的函数
  function setupCanvas() {
    // 让绘图尺寸等于窗口实际尺寸
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
    
    // 初始化或重新初始化WarpSpeed动画
    if (window.warpInstance) {
      // 如果库支持销毁实例,先清理旧的(根据WarpSpeed库的API调整)
      typeof window.warpInstance.destroy === 'function' && window.warpInstance.destroy();
    }
    window.warpInstance = new WarpSpeed(canvas);
  }
  
  // 页面加载时执行一次
  setupCanvas();
  // 窗口大小改变时自动调整
  window.addEventListener('resize', setupCanvas);
</script>

这段代码会在页面加载和窗口 resize 时,同步canvas的绘图尺寸和显示尺寸,确保动画始终铺满全屏。

额外检查

你的父div设置是正确的:

<div style="position:fixed; z-index:0; top:0; left:0; width:100%; height:100%;">

这个fixed定位的容器已经占满全屏,不需要修改。

总结

按照上面的步骤修改后,你的超空间Warp动画应该就能完美填满整个屏幕了。本质上就是让canvas的两个关键尺寸(绘图尺寸和显示尺寸)保持一致,同时用视口单位确保它铺满窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 22:42:45