【问题标题】:p5 Canvas Recenteringp5 画布居中
【发布时间】:2021-02-05 18:28:12
【问题描述】:

我正在开发一个障碍游戏,类似于 chrome 恐龙游戏或几何冲刺,但在 CSS 方面遇到了一些问题。

我的第一个问题:我试图将画布居中到屏幕中间,水平和垂直。这是我的代码,仅适用于全屏页面:

html, body {
  
  margin: 0;
  padding: 0;
  align-items: center;
  display: flex;
  
}
canvas {
  
  position: absolute;
  top: 25%;
  left: 10%;
  display: block;
  border: 15px solid #edce00;   
  border-radius: 30px;
  align-items: center;
  display: flex;
  
}

以下是全屏页面与更改页面大小的对比:

如您所见,游戏在调整了尺寸的页面上并不完全可见。这引出了我的第二个问题。

我的第二个问题:我也在尝试设置最小页面大小。这样,无论屏幕多大或多小(在一定程度上),整个游戏屏幕都会显示出来。有没有办法让画布根据页面大小调整自身大小,并确保它不小于“x”数量?这会在 Javascript 或 CSS 中完成吗?

如果您能帮我解决这两个问题,那将大有帮助。谢谢!

编辑:如果有帮助,这里是 p5 草图的链接。 https://editor.p5js.org/ThisBubblyBoi/sketches/CbxWQSrjF

【问题讨论】:

    标签: javascript html css p5.js


    【解决方案1】:

    不幸的是,如果您尝试使用 CSS 调整画布元素的大小,当您在其上绘制时,它会变得模糊。

    所以你必须使用Js来设置画布的widthheight属性。请注意,因此您可能必须更改在画布上绘制的方式。

    let canvas = document.querySelector("#myCanvas");
    canvas.width = Math.max(400, canvas.clientWidth);
    canvas.height = canvas.clientHeight;
    body {
      box-sizing: border-box;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 0;
      height: 100vh;
      width: 100vw;
      min-width: 400px;
      padding: 60px;
    
    }
    
    canvas {
      border: 2px solid yellow;
      width: 100%;
      height: 100px;
    }
    <canvas id="myCanvas" width="50" height="50"/>

    请注意,如果在画布上绘制然后调整大小,使用此解决方案会显得模糊,您只需使用正确的分辨率刷新页面即可解决此问题。

    【讨论】:

    • 我试过了,但您的修复似乎不起作用。使用 Math.min() 时,画布变得非常小。我也尝试过 Math.max() ,但这并没有根据窗口大小调整画布大小。我认为 p5 画布可能有不同的基础,并且有不同的机制——但是我不能 100% 确定。如果有帮助,我已经链接了我的 p5 草图。谢谢!
    • 您好,您的评论完全正确,我没有注意 p5.js 标记,我已经 duplicated 您当前的项目并将更改应用于 style.csssketch.js 仅在 setup() 函数中。我没有做任何与我在回答中显示的内容有太大不同的事情,但是您可以询问是否有任何不明白的地方。注意:调整窗口大小后按播放按钮,以便我可以以正确的大小重新渲染画布。
    猜你喜欢
    • 2010-11-12
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多