Mach ein quadratisch, wenn sich die Breite basierend auf dem Prozentsatz dynamisch ändert [duplicate]
Lesezeit: 4 Minuten
Nate
Ich arbeite an einer Webanwendung, die ein NxN-Raster basierend auf der Auswahl von N durch den Benutzer generiert. Ich möchte, dass die Gesamtbreite des Rasters relativ ist (dh 100 % des verfügbaren Platzes), damit Benutzer auf verschiedenen Papierformaten drucken können .
Ich kann die Breite der Quadrate im Raster leicht in % berechnen (dh: 100% / N), aber ich habe Probleme bei der Berechnung der Höhe. Die Höhe einer Webseite wird immer unendlich sein, es sei denn, ich begrenze sie künstlich, was ich, wie gesagt, nicht möchte.
Wie kann ich machen die Quadrate in meinem Raster sind quadratisch im Vergleich zu rechteckig, wenn die Höhen- und Breitenbeschränkungen meines Rasters dynamisch und nicht quadratisch sind?
Das real Das Problem ist nicht die Größe der Quadrate: Das ist einfach (Höhe / n). Das Problem besteht darin, die Gesamthöhe des Rasters auf die gleiche Breite einzustellen. Es ist schwierig, ohne Annahmen über feste Größen zu treffen oder irgendeine Form von Skripting zu verwenden.
– Grafikgöttlich
16. April 2010 um 7:51 Uhr
Web-Tiki
Es gibt 2 Haupttechniken, um das Seitenverhältnis eines responsiven Elements beizubehalten, indem Polsterung und vw-Einheiten verwendet werden: (Für eine vollständige Lösung für ein reaktionsfähiges Gitter aus Quadraten können Sie diese Antwort sehen.)
Verwendung von vw-Geräten
Sie können verwenden vw Einheiten, um Ihre Elemente quadratisch und reaktionsschnell zu machen (Viewport-Einheiten auf MDN). 1vw = 1% of viewport width So können Sie die Höhe der Elemente entsprechend einstellen Breite des Ansichtsfensters (oder Höhe mit vh Einheiten).
Beispiel mit einem 4×4-Raster:
Das gleiche Verhalten kann erreicht werden, indem das Element entsprechend der Viewport-Höhe usin skaliert wird vh Einheiten.
Polsterung verwenden
Die Polsterung wird entsprechend der Breite des Containers berechnet, sodass Sie damit die Höhe des Blocks entsprechend seiner Breite festlegen können.
Beispiel mit einem 4×4-Raster:
Das ist in Ordnung, solange Sie erkennen, dass vw und vh relativ zur Größe des Ansichtsfensters sind, nicht zu einem bestimmten Container (leider)
– frankt
15. Oktober 2014 um 6:40 Uhr
@frumbert Ich habe meine Antwort mit einer Lösung bearbeitet, die auf der Breite des Containers basiert (“Padding-Technik”)
– Web-Tiki
15. Oktober 2014 um 7:59 Uhr
das ist ein toller Hack! Programmierer für den Sieg!!
– quemeful
11. Mai 2016 um 12:46 Uhr
Mit CSS ist es ziemlich einfach, ein Div in ein Quadrat zu verwandeln. Sie legen eine Breite fest, sagen wir 50 %. Dann fügen Sie einen padding-bottom mit dem gleichen Wert hinzu:
div {
width: 50%;
padding-bottom: 50%;
}
und es bleibt quadratisch, wenn Sie die Größe des Fensters ändern.
.
.
Sie können dies mit einem beliebigen Seitenverhältnis tun, wenn Sie möchten, dass die Box 16: 9 ist, berechnen Sie:
9/16 = 0,56
die du dann mit der Breite deines Elements multiplizierst (in diesem Fall 50 % (= 0,5)), also:
9/16*0,5= 0,28 = 28 %
Ich habe nach einem reinen CSS-Weg gesucht, danke!
Zu Ihrer Information, ich habe diese Lösung verwendet, um einen dynamischen perfekten Kreis aufrechtzuerhalten, aber ich musste explizit festlegen height: 0 damit es überhaupt funktioniert.
– MarsAndBack
25. September 2018 um 0:02 Uhr
Leider scheint dies wann zu brechen maximale Breite eingestellt ist, dh max-width: 200px;;
– ClayRay
1. September 2020 um 0:13 Uhr
Dies ist ungetestet, ich weiß nicht, wie man das nur in CSS macht, ich würde jQuery verwenden.
$('div').height($('div').width());
Ich kannte JQuery damals nicht, aber als ich es gelernt hatte, war es einfach genug. Vielen Dank!
– Nate
29. Dezember 2010 um 21:56 Uhr
Dies schlägt fehl, wenn die Größe der Seite geändert wird.
– Mohammed Shareef C
5. Dezember 2020 um 12:43 Uhr
Ich glaube nicht, dass der Erhaltungsbereich relevant ist. Das OP möchte nicht, wie man ein Element basierend auf seiner Breite quadratisch macht. Das Ändern dieser Breite verfehlt den Zweck. -1
– Jon P
11. Dezember 2012 um 5:51 Uhr
11768300cookie-checkMach ein quadratisch, wenn sich die Breite basierend auf dem Prozentsatz dynamisch ändert [duplicate]yes
Das real Das Problem ist nicht die Größe der Quadrate: Das ist einfach (Höhe / n). Das Problem besteht darin, die Gesamthöhe des Rasters auf die gleiche Breite einzustellen. Es ist schwierig, ohne Annahmen über feste Größen zu treffen oder irgendeine Form von Skripting zu verwenden.
– Grafikgöttlich
16. April 2010 um 7:51 Uhr