Ich habe Probleme mit meiner Canvas-basierten Anwendung.Flexbox, Leinwand & dynamische Größenanpassung
Ich habe 4 (oder mehr) Leinwand, jede in Div mit beiseite Inhalt gewickelt. Diese Wrapper sind selbst in "hbox" verpackt. Das Ziel besteht darin, ein dynamisches Raster aus Leinwänden unter Verwendung von flexbox
zu erstellen.
<div id="primaryScene" class="scene">
<div class="hbox" id="hbox0" style="flex-grow: 1.2;">
<div class="viewWrapper" id="view0" style="flex-grow: 0.4;">
<canvas class="canvasView"></canvas>
<aside class="sideContent"></aside>
</div>
<div class="viewWrapper" id="view1" style="flex-grow: 1.6;">
<canvas class="canvasView"></canvas>
<aside class="sideContent"></aside>
</div>
</div>
<div class="hbox" id="hbox1" style="flex-grow: 0.8;">
<div class="viewWrapper" id="view2">
<canvas class="canvasView"></canvas>
<aside class="sideContent"></aside>
</div>
<div class="viewWrapper" id="view3">
<canvas class="canvasView"></canvas>
<aside class="sideContent"></aside>
</div>
</div>
</div>
mit CSS:
.scene {
display: -webkit-flex;
display: flex;
-webkit-flex-flow: column;
flex-flow: column;
overflow: hidden;
}
.hbox {
min-height: 0;
-webkit-flex: 1 1 0%;
flex: 1 1 0%;
display: -webkit-flex;
display: flex;
position: relative;
}
.viewWrapper {
min-height: 0;
-webkit-flex: 1 1 0%;
flex: 1 1 0%;
position: relative;
margin: 0 2px 2px 0;
}
.canvasView {
display: block;
}
.canvasView {
position: absolute;
}
.sideContent{
max-width: 120px;
overflow-x: hidden;
overflow-y: auto;
margin-right: 6px;
}
Weil ich einige Ereignisse die Größe benötigen, ich verwende nicht die CSS-Eigenschaft resize: both;
Troubles anhängen, wenn ich versuche .sideContent
hinzufügen, weil ich sie auf der rechten wollen jede Leinwand.
Davor, mit der Leinwand in absolut, ich brauchte nur dynamisch Breite und Höhe mit {.viewWrapper}.getBoundingClientRect().width|height
zu aktualisieren (neben der Tatsache, dass sie flex:1
, viewWrapper und hbox sind oben manuell verkleinern mit flex-grow
wie im Code gezeigt). Jetzt, wenn ich die Zeichenfläche zu flex:1;
wechseln und die absolute Eigenschaft entfernen, schrumpfen sie nicht mehr. Ich bekomme auch verschiedene Werte von {oneCanvas}.getBoundingClientRect()
zwischen Chrome und Firefox (nicht auf IE getestet), so dass ich dies auch nicht verwenden kann.
Was kann ich tun? Sag mir, wenn du mehr Informationen brauchst.
Up. Brauche wirklich Hilfe hier o/ –
Kannst du eine Geige machen? – user1156544
Es ist möglich, ein Kinderspiel zu machen? –