Ich frage mich, wie ich ein Layout mit ansprechenden Quadraten erstellen soll . Jedes Quadrat hätte vertikal und horizontal ausgerichteten Inhalt. Das spezifische Beispiel wird unten angezeigt ...
html
css
responsive-design
grid-layout
aspect-ratio
garethdn
quelle
quelle
Antworten:
Sie können nur mit CSS ein ansprechendes Quadratraster mit vertikal und horizontal zentriertem Inhalt erstellen . Ich werde erklären, wie in einem schrittweisen Prozess, aber zuerst hier sind 2 Demos von dem, was Sie erreichen können:
Nun wollen wir sehen, wie man diese ausgefallenen reaktionsschnellen Quadrate macht!
1. Erstellen der Antwortquadrate:
Der Trick, um Elemente quadratisch zu halten (oder ein anderes Seitenverhältnis), besteht darin, Prozent zu verwenden
padding-bottom
.Randnotiz: Sie können auch die obere Polsterung oder den oberen / unteren Rand verwenden, aber der Hintergrund des Elements wird nicht angezeigt.
Da die obere Polsterung gemäß der Breite des übergeordneten Elements berechnet wird ( siehe MDN als Referenz ), ändert sich die Höhe des Elements entsprechend seiner Breite. Sie können jetzt das Seitenverhältnis entsprechend der Breite beibehalten.
An dieser Stelle können Sie Folgendes codieren:
HTML :
CSS
Hier ist ein einfaches Layoutbeispiel für ein 3 * 3-Quadrat-Raster unter Verwendung des obigen Codes.
Mit dieser Technik können Sie jedes andere Seitenverhältnis erstellen. In der folgenden Tabelle sind die Werte der Bodenpolsterung entsprechend dem Seitenverhältnis und einer Breite von 30% angegeben.
2. Hinzufügen von Inhalten innerhalb der Quadrate
Da Sie Inhalte nicht direkt in die Quadrate einfügen können (dies würde ihre Höhe erweitern und Quadrate wären keine Quadrate mehr), müssen Sie untergeordnete Elemente (in diesem Beispiel verwende ich divs) in ihnen erstellen
position: absolute;
und den Inhalt in sie einfügen . Dadurch wird der Inhalt aus dem Fluss entfernt und die Größe des Quadrats beibehalten.Vergessen Sie nicht,
position:relative;
die übergeordneten Divs hinzuzufügen, damit die absoluten Kinder relativ zu ihren Eltern positioniert sind.Fügen wir unserem 3x3-Quadratgitter einige Inhalte hinzu:
HTML :
CSS :
ERGEBNIS <- mit etwas Formatierung, um es hübsch zu machen!
3.Zentrieren des Inhalts
Horizontal:
Dies ist sehr einfach, man muss nur hinzufügen
text-align:center
zu.content
.ERGEBNIS
Vertikale Ausrichtung
Das wird ernst! Der Trick ist zu verwenden
Wir können
display:table;
on.square
oder.content
divs jedoch nicht verwenden, da dies in Konflikt steht. Daherposition:absolute;
müssen wir zwei Kinder in.content
divs erstellen . Unser Code wird wie folgt aktualisiert:HTML :
CSS:
Wir sind jetzt fertig und können uns das Ergebnis hier ansehen:
LIVE FULLSCREEN ERGEBNIS
bearbeitbare Geige hier
quelle
* { box-sizing: border-box; }
Sie die Höhe und Breite im .content div auf 100% einstellen. :)justify-content: center; align-items: center; flex-flow: column nowrap;
Sie können vw-Einheiten (Ansichtsbreite) verwenden, wodurch die Quadrate entsprechend der Bildschirmbreite reagieren.
Ein kurzes Modell davon wäre:
quelle
margin-left: -4px;
verwendenmargin-right:-4px
. Verwirren Sie sich lieber nicht mit Inkonsistenzen im Mincharspace, sondern setzen Sie die übergeordnete Wrapper-Schriftgröße auf 0 und dann auf die untergeordneten Elemente, die auf1rem
(relative-em) zurückgesetzt wurdenDie akzeptierte Antwort ist großartig, aber dies kann mit getan werden
flexbox
.Hier ist ein Rastersystem mit BEM-Syntax , mit dem 1-10 Spalten pro Zeile angezeigt werden können.
Wenn dort die letzte Zeile unvollständig ist (Sie möchten beispielsweise 5 Zellen pro Zeile anzeigen und es gibt 7 Elemente), werden die nachfolgenden Elemente horizontal zentriert. Um die horizontale Ausrichtung der nachfolgenden Elemente zu steuern, ändern Sie einfach die
justify-content
Eigenschaft unter der.square-grid
Klasse.Code-Snippet anzeigen
Geige: https://jsfiddle.net/patrickberkeley/noLm1r45/3/
Dies wird in FF und Chrome getestet.
quelle
Ich benutze diese Lösung für reaktionsschnelle Boxen mit verschiedenen Rationen:
HTML:
CSS:
Siehe Demo auf JSfiddle.net
quelle