Ich habe versucht, ein p5.js Canvas in einem div und verwenden Sie die divs Breite, um die Leinwand Breite, innerhalb eines Jekyll Post zu steuern. In der Markdown-Datei baue ich ein div, von dem ich weiß, dass es oben auf dem Post sitzt.Wie Canvas Breite/Höhe mit Eltern divs Attribute
<div id="myCanvas"</div>
<script src="/js/p5Sketches/firstP5Sketch.js" type="text/javascript"></script>
In der Javascript habe ich die p5.js Leinwand dem div zugeordnet. Ich habe versucht, div clientWidth des Elternteils zu erhalten, aber ich bekomme einige wirklich merkwürdige Ausgaben.
var canvasDiv = document.getElementById('myCanvas');
var width = canvasDiv.clientWidth;
function setup() {
var sketchCanvas = createCanvas(width,450);
sketchCanvas.parent("myCanvas");
}
function draw() {
if (mouseIsPressed){
fill(0);
} else {
fill(255);
}
ellipse(mouseX, mouseY, 40, 40);
if (keyIsPressed == true){
clear();
}
}
function windowResized() {
resizeCanvas(width,450);
}
Als ich die canvasDiv auszudrucken Attribute mir den richtigen Wert zu erhalten client (844px), dann aber aus der Breite variabel drucken und es ist 1244px. Im Chrom-Inspektor endet die p5-Leinwand mit der Breite = 100px.
<canvas id="" width="200" height="900" style="width: 100px !important; height: 450px !important;" class=""></canvas>
Der Wert wird nicht an die P5 Leinwand übertragen, und ich kann nicht herausfinden, warum. Nebenbei verwende ich keine CSS, um die myCanvas oder Canvas-Elemente zu stylen.
Vielen Dank im Voraus.
Antwort
Sie benötigen 100x100 den übergeordneten Elemente Informationen innerhalb setup()
Die Standardbreite und -höhe für setup()
ist zu erfassen. Und wenn innerhalb von Setup() keine Breite definiert ist, wird sie mit dem Standardwert überschrieben. Aus der Dokumentation:
Die Systemvariablen width und height werden über die Parameter an diese Funktion gesetzt. Wenn createCanvas() nicht verwendet wird, wird das Fenster mit einer Standardgröße von 100x100 Pixel angezeigt.
https://p5js.org/reference/#/p5/createCanvas
Was ich in diesem Bild getestet und bewiesen:
Hier finden Sie den richtigen Code Sie Ihre setup() Funktion mit ersetzen sollte:
function setup() {
var canvasDiv = document.getElementById('myCanvas');
var width = canvasDiv.offsetWidth;
var sketchCanvas = createCanvas(width,450);
console.log(sketchCanvas);
sketchCanvas.parent("myCanvas");
}
Vielen Dank für die Hilfe Adib. –
- 1. Sortieren divs mit Daten-Attribute und Javascript
- 2. Erhalte den Index des Eltern-Divs von Kind-Divs
- 3. Verstecken von Eltern-Divs in Jquery
- 4. Hinzufügen von Eltern-Div über mehrere Divs
- 5. Zwei divs mit der gleichen Höhe - Eltern und Kinder
- 6. Wie behandeln Sie beide Eltern/Kind-Beziehung und Attribute
- 7. Erkennen, ob Kinder-Divs breiter als Eltern sind?
- 8. Ändern der Schriftfarben des Kind-Divs auf Eltern Hover
- 9. Machen Sie Child Divs erweitern und komprimieren innerhalb Eltern
- 10. Node.js Canvas-Implementierung mit Uint8ClampedArray
- 11. Überlappende Divs - Wie umwickeln?
- 12. Seitenlayout mit DIVs
- 13. jquery entfernen Eltern nicht arbeiten auf dynamisch erstellt divs
- 14. Überschreiben Sie das Eltern-Styling, um divs nebeneinander zu haben
- 15. Machen Sie Child divs erweitern, um Eltern divs Breite zu füllen
- 16. Preis SlideFilter - verstecken Sie die Attribute Elemente Eltern
- 17. Child Float Divs Breaking aus der Eltern-Div
- 18. Rails :: in verschachtelten Modell-Form, updates gehört zu "Eltern" Attribute
- 19. Attribute von Eltern zu inneren Kontrollen in der Winkelanweisung kopieren
- 20. Eltern-Kind-Constraints
- 21. Rails Validiere Kind mit Eltern
- 22. Wie Eltern Schemafeld mit Scheidern mit mongoosejs
- 23. Canvas drawImage mit Coffeescript
- 24. Wie skaliert man divs Inhalt mit dem div?
- 25. HTML nicht erreichen kann Element mit Maus/kann nicht durch divs Eltern klicken
- 26. Leistungsprobleme mit Canvas
- 27. Shuffle divs mit angularJS
- 28. Platzierung DIVs mit CSS
- 29. Erstellen eines Canvas-Element und Einstellung seiner Breite und Höhe Attribute mit jQuery
- 30. Entwerfen einer Benutzeroberfläche in Canvas mit HTML5
Alles, was ich sehen kann, ist ein kleiner Fehler wie folgt: '
Danke Adib, ich hatte die Schließung> im Code, es war ein Tippfehler in der Post. –