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

实现GeoGebra Applet自适应响应式容器的动态尺寸调整

GeoGebra Applet高度无法随容器100%缩放的解决方法

你的问题核心是父元素(html、body)没有设置明确高度,导致wrapperDiv的height:100%找不到有效参照,offsetHeight获取的数值不符合预期,最终setSize设置高度失效。

修复步骤:

  • 补全html和body的样式
    给html、body加上100%高度,同时清除默认的margin和padding,避免出现滚动条:

    html, body {
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 0;
    }
    #wrapperDiv {
      width: 100%;
      height: 100%;
    }
    
  • 修改Applet初始化参数
    把params里的宽高从固定数值改成"100%",让Applet初始就适配容器:

    var params = {
      appName: "graphing",
      width: "100%",
      height: "100%",
      showToolBar: true,
      showAlgebraInput: true,
      showMenuBar: true,
    }
    
  • 调整尺寸更新的时机
    借助Applet的注入回调,确保在Applet加载完成后再执行尺寸更新,避免初始化未完成导致的问题:

    window.addEventListener("load", function () {
      applet.inject("ggb-element", function() {
        updateGGBAppletSize()
      })
    })
    

完整修复代码:

<!doctype html>
<html>
  <head>
    <script src="https://www.geogebra.org/apps/deployggb.js"></script>

    <style>
      html, body {
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
      }
      #wrapperDiv {
        width: 100%;
        height: 100%;
      }
    </style>
  </head>

  <body>
    <script>
      var params = {
        appName: "graphing",
        width: "100%",
        height: "100%",
        showToolBar: true,
        showAlgebraInput: true,
        showMenuBar: true,
      }
      var applet = new GGBApplet(params, true)
      window.addEventListener("load", function () {
        applet.inject("ggb-element", function() {
          updateGGBAppletSize()
        })
      })
      window.addEventListener("resize", updateGGBAppletSize)
      function updateGGBAppletSize() {
        const wrapperDiv = document.getElementById("wrapperDiv")
        const width = wrapperDiv.offsetWidth
        const height = wrapperDiv.offsetHeight

        ggbApplet.setSize(width, height)

        console.log(width, height)
      }
    </script>

    <div id="wrapperDiv">
      <div id="ggb-element"></div>
    </div>
  </body>
</html>

原理说明:当html和body设置为100%高度后,wrapperDiv的100%高度就有了明确的参照(当前视口高度),此时offsetHeight能正确获取容器的实际高度,setSize就能正常设置Applet的高度了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:22:34