如何在div容器中放置p5.js画布?

时间:2020-03-18 16:17:54

标签: javascript html css flexbox p5.js

到目前为止,我已经使用document.getElementById("divName").offsetWidth.offsetHeight对p5.js画布大小进行了响应,以对其父div容器大小做出反应,但是我还没有弄清楚为什么它不共享其画布大小位置。这是我的应用程序的简化版本。

p5.js:

var sketchWidth;
var sketchHeight;

function setup() {
  sketchWidth = document.getElementById("square").offsetWidth;
  sketchHeight = document.getElementById("square").offsetHeight;
  createCanvas(sketchWidth, sketchHeight);
}

function draw() {
  background(0,0,255);
}

function windowResized() {
  sketchWidth = document.getElementById("square").offsetWidth;
  sketchHeight = document.getElementById("square").offsetHeight;
  resizeCanvas(sketchWidth, sketchHeight);
}

HTML:

<html>
  <body>
    <div id="squareContainer">
      <div id="square">
        <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script>
        <script src="square.js"></script>
      </div>
    </div>
  </body>

  <style>
    body {
      background-color: black;
    }

    #squareContainer {
      display: flex;
      width: 50%;
      height: 50%;
      margin: 0 auto;
      background-color: white;
    }

    #square {
      box-sizing: border-box;
      width: 80%;
      height: 80%;
      margin: auto;
      background-color: red;
    }
  </style>
</html>

这是我当前正在渲染的内容的screenshot。如您所见,蓝色正方形(我的p5.js代码)与红色正方形(div)具有相同的尺寸,但我希望它在相同位置处也重叠。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

请参阅createCanvasp5.Renderer的文档。将容器设置为渲染器parent()

let renderer = createCanvas(sketchWidth, sketchHeight);
renderer.parent("square");