Die überwiegende Mehrheit der Websites da draußen verwendet ein Raster. Sie haben möglicherweise kein explizites Rastersystem, aber wenn sie einen „Hauptinhaltsbereich“ nach links und eine „Seitenleiste“ nach rechts verschieben, ist das ein einfaches Raster.
Wenn sich ein komplexeres Layout ergibt, greifen die Leute oft nach einem Gitter-Framework. Sie gehen davon aus, dass Gitter super schwierige Dinge sind, die am besten Super-CSS-Nerds überlassen bleiben. Diese Idee wird durch die Tatsache aufrechterhalten, dass viele der Gitter-Systeme, nach denen sie greifen, *sehr* kompliziert *sind*.
Beachten Sie, dass dieser Artikel 2012 veröffentlicht wurde. Floats waren immer noch die primäre Methode für ein Rastersystem, und dieser Artikel konzentriert sich auf *wirklich* einfache Methoden dafür, wie das einfache Verschieben von vier 25%-Elementen und nicht das Verrücktwerden mit Mathematik und exotischen Gutter-Systemen. Heutzutage würde ich dringend empfehlen, CSS Grid oder Flexbox für Ihr Rastersystem zu verwenden, wenn Sie überhaupt ein abstrahiertes Raster erstellen müssen. Es ist wohl noch einfacher und definitiv flexibler und leistungsfähiger.
So baue ich Gitter. Es ist nicht schwer oder kompliziert. Selbst das flexible Gestalten ist keine große Sache.
Kontext
Ein Block-Level-Element ist so breit wie das übergeordnete Element, in dem es sich befindet (width: auto;). Wir können es als 100% breit betrachten. Der Wrapper für ein Raster hat wahrscheinlich nichts mit Semantik zu tun, es ist nur ein generischer Wrapper, daher ist ein div in Ordnung.
<div class="grid">
<!-- 100% wide -->
</div>

Spalten
Beginnen wir mit einem praktischen und häufigen Bedarf: Ein Hauptinhaltsbereich, der 2/3 der Breite hat, und eine Seitenleiste, die 1/3 der Breite hat. Wir erstellen einfach zwei Spalten-Divs mit entsprechenden Klassennamen.
<div class="grid">
<div class="col-2-3">
Main Content
</div>
<div class="col-1-3">
Sidebar
</div>
</div>
Damit sie nebeneinander liegen, müssen wir sie nur verschieben und Breiten zuweisen. Wir können beide so auswählen
[class*='col-'] {
float: left;
}
und die individuelle Breite so
.col-2-3 {
width: 66.66%;
}
.col-1-3 {
width: 33.33%;
}
Das ist die ganze Prämisse, Gitter nicht zu überdenken.
Kontextbereinigung
Das übergeordnete Element kollabiert auf null Höhe, da es nur verschobene Kinder hat. Lassen Sie uns das beheben, indem wir es bereinigen. Heutzutage brauchen Sie nur noch das
.grid:after {
content: "";
display: table;
clear: both;
}
Gutter
Der schwierigste Teil bei Gittern sind Gutter. Bisher haben wir unser Gitter durch die Verwendung von Prozentwerten für Breiten flexibel gemacht. Wir könnten die Mathematik kompliziert gestalten und auch Prozente für Gutter verwenden, aber persönlich mag ich keine prozentualen Gutter, ich mag feste Pixel-Gutter. Außerdem versuchen wir, zu viel Denken daraus zu vermeiden.
Der erste Schritt dazu ist die Verwendung von box-sizing: border-box;. Ich verwende es gerne für absolut alles.
*, *:after, *:before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
Jetzt, wenn wir eine Breite einstellen, bleibt dieses Element trotz angewandtem Padding oder Rahmen *diese* Breite.
Der zweite Schritt ist das Anwenden eines festen Abstands auf der rechten Seite aller Spalten außer der letzten.
[class*='col-'] {
padding-right: 20px;
}
[class*='col-']:last-of-type {
padding-right: 0;
}

Das ist alles, was es für grundlegende Gutter gibt.
Außen-Gutter
Brauchen Sie Gutter außen? Ich verwende gerne eine Opt-in-Klasse dafür
<div class="grid grid-pad">
Grid with outside gutters also
</div>
Schritt eins ist das Hinzufügen eines linken Abstands zum Gitter-Elternteil (und optional oben und unten).
.grid-pad {
padding: 20px 0 20px 20px;
}
Schritt zwei ist das Wiederherstellen des rechten Abstands der letzten Spalte.
.grid-pad > [class*='col-']:last-of-type {
padding-right: 20px;
}

Mehr Spaltenauswahlen
Super einfach
.col-1-2 {
width: 50%;
}
.col-1-4 {
width: 25%;
}
.col-1-8 {
width: 12.5%;
}
Machen Sie, was Sie wollen. Stellen Sie nur sicher, dass die Spaltenbrüche sich zu 1 addieren. Ja, ein wenig Nachdenken, aber einfacher als sonst.

Sass
Ich benutze es hier nicht intensiv, aber das Ganze wird mit SCSS/Compass noch etwas prägnanter.
* {
@include box-sizing(border-box);
}
$pad: 20px;
.grid {
background: white;
margin: 0 0 $pad 0;
&:after {
/* Or @extend clearfix */
content: "";
display: table;
clear: both;
}
}
[class*='col-'] {
float: left;
padding-right: $pad;
.grid &:last-of-type {
padding-right: 0;
}
}
.col-2-3 {
width: 66.66%;
}
.col-1-3 {
width: 33.33%;
}
.col-1-2 {
width: 50%;
}
.col-1-4 {
width: 25%;
}
.col-1-8 {
width: 12.5%;
}
/* Opt-in outside padding */
.grid-pad {
padding: $pad 0 $pad $pad;
[class*='col-']:last-of-type {
padding-right: $pad;
}
}
Module
Ich arbeite gerne mit diesen Gittern mit „Modulen“.
<div class="grid">
<div class="col-2-3">
<article class="module">
stuff
</article>
<article class="module">
stuff
</article>
</div>
<div class="col-1-3">
<aside class="module">
Sidebar stuff. Sub modules?
</aside>
</div>
</div>
Es fühlt sich gut an, Inhalte auf diese Weise in Bits aufzuteilen. Der positive Nebeneffekt ist, dass jedes Modul seinen eigenen Abstand haben kann, wodurch Text von den Rändern des Gitters ferngehalten wird.
Ergebnis
Hier ist eine Demo auf CodePen.
Browser und Sonstiges
Funktioniert in IE 8 und höher und allen anderen Standarddingen. Wenn Sie IE 7-Unterstützung benötigen, müssen Sie etwas anderes tun =).
Außerdem wird Flexbox dies noch einfacher und besser machen (in verschiedenen Aspekten, einschließlich der Neuanordnung nach Bedarf), aber ich denke, wir brauchen noch etwa ein Jahr, bis wir daran denken können, es zu verwenden.
Verwandt
Schauen Sie sich OOCSS Grids an.
Hey Chris, das ist cool!! Danke, ich werde es ausprobieren
Donna Phillips
Es gibt ein Polyfill für box-sizing https://github.com/Schepp/box-sizing-polyfill
Quelle @goetter http://www.knacss.com/ (gleiches Gitter mit Float und andere Option mit table-cell)
Hmmmm… Interessant!
Schön
Oder Sie könnten ein Mixin verwenden, wenn Sie darauf stehen. Ich bin sicher, das könnte besser geschrieben werden. =)
Was ich mich bei diesem Beispiel und vielen Gitter-Frameworks frage, sind die Nebeneffekte des Benennungsschemas. In diesem Beispiel haben Sie eine Menge Klassennamen, die effektiv die Darstellung in ihren Namen kodiert haben (col-1-3, col-2-3, usw.). Was passiert, wenn Sie ein neues Stylesheet für einen User-Agenten mit einem viel schmaleren Bildschirm erstellen müssen? Jetzt haben Sie Klassennamen, die semantisch keinen Sinn ergeben… „col-1-3“ könnte 100% Breite haben.
Die Benennung von Klassen ist für mich immer ein ständiger Kampf. Wenn ich versuche, elitäre, rein semantische Namen zu verwenden, enden ich mit einer Reihe von Klassen/IDs, die so generisch sind, dass das Stylesheet unmöglich zu interpretieren ist.
Sie müssen diese Namen nicht verwenden, Sie können Ihre eigenen semantischen Klassennamen verwenden, wie „menu“ und „entries“, und dann legen Sie in CSS fest, wie groß die Spalten von allem sind, wie
so benutze ich es, um HTML semantisch zu halten.
Was ein klassischer Anwendungsfall für @extend ist =)
@Chris Genau!
Ich habe keine Probleme, nicht-semantische Klassennamen in mein Markup einzufügen, aber wenn Sie sich darüber aufregen, erweitern Sie Ihre semantische Klasse/ID einfach in der SASS auf die Gitterklasse.
Ich war nie verwirrt, dass alle Gitterklassen auf dem Handy 100% Breite haben. Nun… weil sie alle 100% sind?
Ähm, hallo! Zuerst habe ich @extend mit SASS gesehen… wo war ich?! Werde jetzt bereitstellen! Danke!
@joe seien Sie vorsichtig mit @extend, wenn Sie Media Queries verwenden.
Fallstricke
http://designshack.net/articles/css/sass-and-media-queries-what-you-can-and-cant-do/
SASS 3.2 Media Queries und @extend
http://thesassway.com/intermediate/responsive-web-design-in-sass-using-media-queries-in-sass-32
Problem bei @extend hier ist, dass es nicht „[class*=‘col-‘]“ verwendet. Sie verpassen also Ihr „float: left;“. Nur eine schnelle Benachrichtigung.
Würde die neue %placeholder-Syntax hier keinen großartigen Nutzen haben, um die Spaltenklassennamen nicht in Ihren Code aufzunehmen, aber sie weiterhin zu nutzen, um sicherzustellen, dass Sie Ihr Gitter einhalten (vorausgesetzt, Sie müssen keine Spalten dynamisch für die Zwecke der Website erstellen, die Sie für das Gitter verwenden, obwohl Sie die Klassennamen immer noch verwenden und nur den entsprechenden %placeholder erstellen können), um die Anzahl der Selektoren, die Sie in Ihrem Stylesheet verwenden, erheblich zu reduzieren?
Gitter-Systeme, die auf spezifischem (und oft übermäßig verbosem) HTML basieren, machen mich verrückt. Ich glaube fest daran, dass alle Klassennamen die Art der enthaltenen Daten widerspiegeln sollten und dass jeder layoutgesteuerte Code strikt in der CSS-Datei bleiben sollte. HTML-Gitter-Systeme untergraben dies jedoch vollständig und erinnern mich auf eine Weise an die Zeiten, als wir Tabellen für Layouts verwendeten.
Ich bin ziemlich neu in diesem Zeug, aber das Problem, das ich sehe, ist, dass Präsentation und Inhalt wirklich nicht zu 100% trennbar sind. Was ist, wenn ich verschiedene Arten von Inhalten auf verschiedenen Seiten unterschiedlich anzeige? Jetzt muss ich mehr Selektoren im Stylesheet für Fälle pro Seite definieren. Während, wenn ich nur eine einzigartige Seite mache und Inhalte auf eine bestimmte Weise anordnen möchte, kann ich spezifische Gitterklassen verwenden, um dies direkt im Markup zu tun, ohne ein Stylesheet aufschlüsseln zu müssen. Wenn Sie versuchen, Präsentation zu 100 % von Inhalt zu abstrahieren, zielen Sie nur auf eine Teilmenge von Anwendungsfällen ab. Es gibt keine Einzellösung für jedes Designproblem.
Ist die Verwendung von *:after, *:before erforderlich? Ich habe immer nur * verwendet.
Siehe: https://twitter.com/garazi/statuses/234076720595075072
Die meisten Gitter-Systeme sind nicht komplizierter als dieses. Was ist der Unterschied zwischen div-1-3 / div-2-3 und span4 / span8? Grundsätzlich ist es dasselbe. Außer vielleicht dem Pixel-basierten Gutter. Es ist nur so, dass die meisten Gitter-Systeme nur ein kleiner Teil eines größeren CSS-Frameworks sind. Aber ich habe oft einfach die benötigten Elemente ausgewählt und alles andere verworfen. Das Endergebnis ist dasselbe.
Ich bin aber neugierig. Ich sehe, dass viele Leute einen ähnlichen clearfix zu ihrem CSS hinzufügen. Warum? Fast jedes Mal führt das Hinzufügen von overflow hidden zum Elternteil zum gleichen Ergebnis, ohne zusätzlichen Inhalt hinzuzufügen, den wir nicht brauchen.
Ich wünschte, jemand hätte auf jochems Frage geantwortet. Ich habe mich genau das Gleiche gefragt. Gibt es Hilfe?
overflow: hidden hinzuzufügen ist ein sehr einfacher und guter Weg. Aber wenn Sie Inhalte haben, die überlappend angezeigt werden müssen und im selben Feld markiert sind (z. B. kleine Layer/Tooltips oder Validierungsblasen), dann können Sie overflow: hidden nicht verwenden.
Prost
Guter Beitrag, Chris.
Ich habe ein teilfertiges (Sass-basiertes) Gitter-System, das einige dieser Dinge tut, aber
inline-blockverwendet, um einige ziemlich praktische Layout-Vorteile zu erzielen, und es versucht, im reaktionsschnellen Designbereich gut zu funktionieren – https://github.com/necolas/griddleEin paar Kommentare
Dies ist ein Teilzeichenfolgenabgleich, was bedeutet, dass er nicht sehr robust ist. Wenn Sie eine andere Klasse haben, die
col-enthält, werden die Stile auch dort angewendet. Im Allgemeinen vermeide ich es, diesen Arten von Selektoren für Komponenten zu verwenden, insbesondere in größeren Codebasen.Ja, Sie können Floats mit diesem Code enthalten (Sie könnten genauso gut
display: blockverwenden), aber dies führt zu einer anderen Einbeziehung von oberen und unteren Rändern und Inkonsistenzen mit alternativen Float-Einbeziehungsmethoden wieoverflow: hidden. Um beide Probleme zu vermeiden, benötigen Sie immer noch das Pseudo-Element:before.Dies ist kein so großes Problem in einer Gitterkomponente, aber für die allgemeine Float-Einbeziehung empfehle ich immer noch die Verwendung von
:before.Danke.
Danke für die Updates.
Eine Alternative zu
[class*='col-']könnte einfach das Hinzufügen einer zusätzlichen Klasse im HTML sein, z. B.class="col col-1-3". In meinem Fall bin ich normalerweise sehr vertraut mit meiner gesamten Codebasis, daher ist mir der einzelne Klassenname egal, aber in größeren, weniger vertrauten Gruppen-Codebasen ist die zweite Klasse besser.Empfehlen Sie also, *beide*
:beforeund:afterzu verwenden?Nicolas sagte: „für die allgemeine Float-Einbeziehung empfehle ich immer noch die Verwendung von :before.“
Re: Sie schlagen ein Float-Einbeziehungsmodell vor, das nicht mit IE 7 und 8 kompatibel ist, es sei denn, Sie beabsichtigen, den JavaScript-Hack einzubeziehen, der ‚before‘-Unterstützung für diese Browser hinzufügt, aber ich vermute, Sie werden unvorhersehbare Ergebnisse erzielen.
Ich empfehle dringend, bei Dingen wie Float-Einbeziehung auf abwärtskompatible Methoden zurückzugreifen.
Großartige Arbeit, wie immer. Ich bin ein Verfechter der „sinnvollen“ Verwendung von Gittern (z. B. nicht nur ein Gitter unter ein Design werfen, nur um zu sagen, dass man eines benutzt hat!) Und dies ist eine großartige Möglichkeit, ein leichtes (code-technisch), effizientes Gitter zu implementieren. Ich mag auch die Border-Box-Methode.
Tolle Arbeit!
Ich liebe die Idee hinter Gittern (reguläres Layout) und verwende es für Wireframes und Mockups. Aber ich hasse Gitter-Frameworks, weil sie viel semantikfreies HTML in meinen Code füllen.
Und ich mag auch keine flexiblen Gitter. Viele Webdesigner vernachlässigen einen wichtigen Fakt (keine Beleidigung, Chris): Dass die Lesbarkeit (ein wichtiger Teil der Benutzererfahrung) abnimmt, wenn die Textlänge pro Zeile zu kurz oder zu lang ist.
Das ist jedoch nicht wirklich die Schuld der Gitter, oder? Ich stimme Ihrer Einschätzung völlig zu, dass die Textlänge/Zeile nicht zu kurz oder zu lang sein sollte, aber meine Meinung dazu ist, dass die Sicherstellung eines guten Mittels darin besteht, mehr Breakpoints usw. in jegliche Media Queries einzufügen. Zum Beispiel habe ich ein ziemlich standardmäßiges Inhalts-Seitenleisten-Layout, bei dem, sobald der Bildschirm groß genug wird, die beiden höhere Ränder bekommen und ein paar Schritte danach der Inhalt zusätzliche Abstände erhält.
Dies bedeutet natürlich immer noch, dass die Textlänge nicht konstant ist, aber die Stärke und Schwäche des Webs sind dieselben: Man kann nie wissen, was jemand anderes verwendet, noch warum.
(und am Rande bemerkt, ich mag das Antwort-/Kommentar-Layout wirklich. Sauber, attraktiv, interessant)
Danke für den Beitrag Chris. Ich mag die Einfachheit in Ihrem Gitter. Und Tipp Nr. 1 mit dem * Selektor und den Pseudo-Elementen (:before & :after).
Ist dieses Gitter-System mit all den „last-of-type“-Selektoren wirklich IE8 und höher? Ich frage mich wirklich, da es großartig aussieht, aber nicht sicher bin, wie das funktionieren wird?
leider nur ie9 und höher
gerade geprüft – „last-of-type“ funktioniert nicht in ie8
Tatsächlich funktioniert das nicht in IE8. Aber IE8 unterstützt
:first-child, daher können Sie die CSS ändern, um es zu verwenden.Natürlich dürfen keine anderen Arten von Elementen vor der ersten Spalte stehen.
Das war auch meine Frage. Ich wünschte, sie würden den Artikelinhalt aktualisieren, um die Tatsache widerzuspiegeln, dass die „last-of-type“-Formatierung in IE8 nicht funktioniert, falls Leute dieses Gitter-System ohne sorgfältige Faktenprüfung implementieren.
Als ich zum ersten Mal „Transcending CSS“ von Andy Clarke las, war die wichtigste Erkenntnis für mich die Idee, dass man, um browserübergreifend ein spaltenbasiertes Layout (auch mit IE7) zu verwenden, seinen Inhalt innerhalb des Containers einschließen und dem Inhalt darin Abstände geben muss – wobei der eigentliche Container unverändert bleibt. Natürlich ist es mehr Markup durch die Verwendung zusätzlicher
divs.Ich stimme zu, dass die Layoutstruktur super einfach ist, aber wir brauchen immer noch Spalten, um bei engen Ausrichtungen zu helfen. Ich meine… sicher, Sie haben diese wunderbare proportionale Box, aber wie richten Sie den Inhalt darin aus? Wo sind die Hilfslinien? Hier macht Gridset meiner Meinung nach gewaltige Fortschritte, indem es uns hilft, unser Layout schön und gerade zu halten.
Warum nicht die Abstände auf allen Seiten hinzufügen? Fehlt mir etwas bei der gesamten
[class*='col-']:last-of-typeErgänzung.*fehlt mir
Wenn Sie auf allen Seiten des übergeordneten .grid Abstände hinzufügen, ist die letzte Spalte falsch. Die Technik im Artikel hält sie alle gleich.
Das habe ich mir auch gedacht. Chris, wenn Sie zum CodePen Demo gehen, können Sie den Unterschied sehen: Fügen Sie Folgendes ein
und ändern Sie dann eines der gepolsterten Gitter, um grid-pad2; zu verwenden, während Sie das „2“ hinzufügen und löschen, können Sie den Unterschied in den Abständen sehen. Es ist nicht wirklich klar, welches bei dem Drittel-Beispiel „am besten“ ist, aber es ist offensichtlich, dass es bei dem Achtel-Beispiel falsch gelaufen ist.
Das Problem ist, dass *beide* Methoden schrecklich aussehen, wenn Sie versuchen, einen anderen Außenabstand zu verwenden. Das sehen Sie hier: diese Version auf CodePen.
Ich habe eine Weile versucht, über eine bessere Methode nachzudenken, die all diese Fälle abdeckt, aber ich konnte es nicht ganz herausfinden. Ich denke, die wirkliche Antwort ist: Warten Sie auf Flexbox! *Grinsen*
Ja… es ist realistischer, wenn wir Gitter bauen, die auf unser Design zugeschnitten sind, anstatt auf einem Gitter zu entwerfen.
Ich wusste absolut nichts über Gitter. Danke!
Ich liebe das Gitter Chris, ich benutze schon lange das Bootstrap-Gitter, außerdem verwende ich diese Art von Abstraktionen auch bei Modulen. Eine Sache, für die ich immer noch keine Lösung finde, wenn ich Gitter verwende, ist, wenn ich eine reaktionsschnelle Website erstelle und im Design ein festes Breakpoint habe, ein Fehler tritt bei einer bestimmten Breite auf, aber diese Gitterklassen werden auf der ganzen Seite verwendet. Wenn ich also eine dieser Klassen ansteuere, um das Problem zu beheben, wird diese Behebung alle anderen Instanzen dieser Klasse beeinflussen und das Layout ruinieren. Daher war ich gezwungen, diese Fehler mit elternbasierten Klassen zu beheben, vielleicht mit der spezifischen Body-Klasse für die Seite oder einem Elternteil des Gitters, wo dieser Fehler aufgetreten ist, irgendwelche Ideen dazu?
Einer der längsten Sätze, die ich je in einem Kommentar gelesen habe.
Ich habe eine Reihe von Frameworks ausprobiert und bin derzeit recht zufrieden mit semantic.gs. Weil ich die Namen im CSS behalten kann. Ich verwende es bei der Arbeit für große multinationale Websites. Es gibt es in Less, Sass und ist sehr kompakt und clever gemacht.
Ich stimme voll und ganz zu. semantic.gs scheint das beste Gitter-System bisher zu sein.
– Reaktionsschnell
– Semantisch
– Frei von HTML-Bloat
– Basiert auf LESS / SASS
Was hält Chris Coyier von dieser Idee? Kein HTML-Bloat!
Ich möchte Beispiele für Websites sehen, die mit semantic.gs erstellt wurden…
Mit CSS (für das Gitter), angewendet auf Header, Artikel, Sektion, Seitenleiste, Footer, kann man sie nur einmal verwenden (?)
Ich kann einige *einfache* Layouts erkennen, aber nachdem ich das CSS der Startseite von semantic.gs gelesen habe (http://semantic.gs/stylesheets/screen.css)
CSS basierend auf IDs?
Wie Atimoda sagte, kann man seinen HTML semantisch halten
ändere Chris' Beispiel zu
und dein HTML ist „semantisch“.
Man kann die gewünschten Elemente auswählen und so ist der HTML-Code sauber.
Schauen Sie sich diesen HTML-Code an
Verschachtelt
Sie richten es so ein
Hallo! Ich habe Ihren Artikel gelesen. Er war wirklich hilfreich und informativ. Ich werde Ihren Blog wieder besuchen, um neue Updates zu erhalten..
Es ist schön, aber das Problem tritt auf, wenn man z. B. 20 % braucht, aber nicht weniger als 200 Pixel. Dann muss die andere Spalte Platz nach der ersten Spalte einnehmen.
Das ist eine wirklich gute Erklärung Chris. Ich hatte nur ein paar schnelle Fragen
Warum display:table anstelle von display:block verwenden, wenn Sie bereinigen? Ich verwende immer display:block, also frage ich mich, ob es einen Vorteil (oder Nachteil) gibt, den ich verpasse.
Zweitens, wenn Sie den rechten Rand wiederherstellen, warum nicht einfach die Regel entfernen, die ihn entfernt hat? Oder haben Sie beide Regeln beibehalten, damit Sie optional grid-pad verwenden können, wenn Sie Abstände wünschen, und es nicht verwenden, wenn Sie es nicht tun? (Nachdem ich diese Frage aufgeschrieben habe, glaube ich, dass ich sie bereits beantwortet habe – aber sie ist es wert, bestätigt zu werden).
Nichtsdestotrotz ein hervorragend geschriebener Artikel – danke!
Ich stimme den obigen Kommentaren zu, dass es semantisch bleiben und Präprozessoren für Gitter verwenden sollte.
Selbst die einfache Änderung des Layouts einer 10-seitigen statischen Website kann eine ziemliche Qual sein, wenn Sie das Layout fest in das HTML einprogrammiert haben… vielleicht bin ich aber auch der Einzige, da ich einen psychotischen Anfall bekomme, jedes Mal, wenn ich Anti-Semantikismus sehe! ;o)
Ich benutze Susy responsive Grids. Johans Vorschlag für semantic.gs sieht gut aus (danke), ich werde heute damit spielen. :)
Gibt es Nachteile bei der Verwendung von negativen Rändern am Gitter und der Beibehaltung des Abstands links und rechts jeder Spalte? Z. B. Hat der Gittercontainer einen linken und rechten Rand von -10px und die Spalten verwenden einen linken und rechten Abstand von 10px. Dann könnten Sie einfach die negativen Ränder entfernen, wenn Sie Abstände am Gitter wünschen.
Hallo Chris,
Vielen Dank für einen tollen Beitrag. Ich habe mit Ihrem Code herumgespielt und mich gefragt, ob Sie das Verschachteln von Grids in Betracht gezogen haben, da dies meiner Meinung nach sehr nützlich sein wird. Ich habe dies hinzugefügt, um ein Problem zu beheben, das ich damit gefunden habe.
Ich habe auch bemerkt, dass, wenn Sie nicht .grid-pad für jede Zeile verwenden, die letzte div etwas größer wird als die anderen, da die entfernte Polsterung nicht gleichmäßig auf alle anderen divs verteilt wird.
Haben Sie eine Idee, wie man das beheben kann?
Beste Grüße
Paul
Ich wusste, dass jemand anderes das Problem bemerken würde. ;-) Falls Pauls Korrektur nicht klar war, hat das Original standardmäßig padding-right 0, während Padding auf allen Seiten der Standard sein sollte.
Das Original hat daher das Gegenteil von dem, was beabsichtigt ist: Das letzte Element vom Typ HAT padding-right. Pauls Korrektur zeigt, dass padding-right bei der letzten seiner Art null sein sollte.
Ich habe angefangen, mich mit Grids zu beschäftigen und ein paar heruntergeladen, aber nie verstanden, warum ich ein Grid-System brauchen würde, das mehr Streifen hat als meine Boxershorts. (Entschuldigung für das mentale Bild)
Das ergibt für mich mehr Sinn, es könnte leicht aufgerüstet werden, indem bei Bedarf ein 1-1-1-4 bei 24% hinzugefügt wird oder was auch immer.
äh...
oder sogar 1-1-1-4 bei 25% ツ
Tolle Arbeit! Sehr nützliche Informationen, ist SASS Ihr bevorzugtes Werkzeug zur Optimierung Ihres CSS? Danke
Toller Beitrag, Chris. Ich denke, ein Grid zu erstellen, das für SIE funktioniert, ist das Wichtigste. Warum ein 12-24-Spalten-Grid verwenden, wenn man nur drei Spalten braucht?
Ich arbeite an einem Sass/Compass Grid-System, das asymmetrische Grids unterstützt. Dies ermöglicht komplexe Dinge, aber die meisten Leute brauchen nur zwei oder drei Spalten, und mit Webkit-Rundungsfehlern können einheitliche 24-Spalten-Grids ziemlich schlecht werden. Es ist oft besser, ein Gitter mit geringerer Auflösung und asymmetrisch zu verwenden, das Ihren Bedürfnissen entspricht. $columns: 70%, 10%, 20%;
Das einzige Problem, wenn Sie Hintergrundfarben für Ihre Blöcke verwenden und der Inhalt der Spalten unterschiedlich ist.
Beispiel: http://codepen.io/anon/pen/ruFGc
Warum verwenden Sie schwimmende Blöcke, wenn Sie Tabellenelemente ohne Clearfix verwenden können? Alle wichtigen Browser unterstützen es (IE 8+ unterstützt es, aber ich denke, das ist mehr als genug).
Eine Tabelle ist meiner Meinung nach semantisch falsch.
Gut gemacht, Chris. Als Python-Entwicklerin und auch als Frau bin ich erstaunt zu sehen, wie mühelos Webentwickler und Designer mit CSS arbeiten. Ich habe während meines Urlaubs versucht, mich in Webdesign einzuarbeiten, aber ich war hoffnungslos darin.
Tolles Ergebnis übrigens :)
Prägnant und raffiniert.
Ich bringe den Code und die Konventionen aus diesem Beitrag gerade in das
concrete5 html5 Boilerplate Template ein. Passt sehr gut.
Danke, dass Sie die Grid-Theorie gestreift haben, um die Grundlagen auf eine Weise zu demonstrieren, die mein Gehirn verstehen kann.
Liebe css-tricks und ShopTalk
Danke! Schöner Beitrag.
Sehr geehrte CSS-Tricks,
Ich möchte Ihre Babys haben. Und ich mag keine Kinder. Und ich bin ein Junge.
Sie sind spitze,
twrecks
Sie sollten Susy ausprobieren, es ist ein Grid-System für Sass/Compass, keine zusätzliche Markup nötig
Interessante Zeit, ich habe gerade ein schönes flexibles Grid-System für ein Projekt bei der Arbeit erdacht. Ich habe auch
box-sizing: border-box;, prozentuale Breiten und Padding als Ränder verwendet.Ein Hinweis
Die Konvertierung des Paddings von rechts...
zu links, in Verbindung mit
:first-child...plus ein
box-sizingPolyfill sollten Ihnen Browserunterstützung in IE7 mit den gleichen Techniken verschaffen. (habe es nicht getestet, also fehlen mir vielleicht noch andere Dinge, die nicht unterstützt werden.)Hervorragend... :)
Können Sie uns bitte ein Beispiel geben, das auch in IE7 funktioniert?
Gibt es eine Bekleidungslinie für CodePen? Gibt es Silbersterne? Was ist der Unterschied zwischen laut und leise?
Mach es, Roosevelt!!!
Dieser Beitrag hat mir wirklich gefallen; ich habe einige neue Dinge gelernt und es sogar auf einem Projekt ausprobiert.
Mein einziges Problem ist, wie schaffe ich es, dass sich ein ganzes „modul“ von einer div in einen Link ändert und trotzdem die Breite beibehält. Wenn ich das mit einem Bild und Text versuche, umschließt der Padding des Moduls die Seite des Textes/Bildes.
Hier ist ein Auszug von dem, was ich zu erreichen versuche: http://codepen.io/anon/pen/qfcJw
Jede Hilfe wäre willkommen und danke für den Artikel, Chris.
Ihr Link muss Block-Level sein. In Ihrem Beispiel löst das Hinzufügen von
display: block;zu.linkblockIhr Problem (wenn ich es richtig verstanden habe).Pen
Das ist perfekt, Brendan, ich weiß deine Antwort wirklich zu schätzen.
Danke! :)
Ich habe mich jahrelang nicht mit Grids beschäftigt, unter dem Eindruck, dass es „reiner“ sei, benutzerdefinierte Layouts zu erstellen. Gott sei Dank habe ich diese Idee aufgegeben, Grids sind großartig. Wie Chris verwende ich Grids, aber ich erstelle meine eigenen für bestimmte Projekte, anstatt ein Framework zu verwenden.
Ich verwende gerne einen Stil, den ich zuerst bei Harry Roberts (@csswizardry) in Inuit.css gesehen habe. Er erfordert eine zusätzliche <div> für die Beschriftung, aber das ist keine große Sache. Im Grunde hat die Klasse .grids einen negativen Rand, der den Randabständen entspricht. Das bedeutet, wenn Sie mehrere Elemente haben, die sich über mehrere Zeilen erstrecken, müssen Sie dem HTML keine mehreren first/last-Klassen zuweisen, und es funktioniert auch, wenn Sie die Ansicht verkleinern, wenn Sie responsiv aufbauen.
Ich habe hier einen CodePen erstellt, um das zu veranschaulichen. http://codepen.io/anon/pen/GLyjF
Versuchen Sie, das Browserfenster zu verkleinern, und Sie werden sehen, dass die Boxen automatisch zur nächsten Zeile springen und links ausgerichtet sind. Keine Notwendigkeit, first- oder last-Divs beim Verkleinern des Browsers zu berechnen.
Das Problem ist, dass die Seite nicht zentriert ist, sondern um 20 Pixel nach einer Seite verschoben ist. Außerdem haben Sie ein horizontales Scrollen und es wird sich zum Beispiel bei 480px neu anordnen, wenn es sich bei 500px neu anordnen sollte.
Chris, du bist ein genialer Kerl :) Obwohl vieles davon wie eine Fremdsprache für mich ist.
Ich bin froh, dass du das gepostet hast, da ich mich schon seit einiger Zeit mit Grids beschäftige.
Was die Bereinigung von Floats angeht, was ist der Unterschied zwischen display: block; und display: table;?
Casey.
Interessant, aber „Funktioniert einfach super in IE 8 und höher und all die anderen Standard-Sachen. Wenn Sie IE 7 Unterstützung benötigen, müssen Sie etwas anderes tun =). “ macht es schon schwieriger ;) Toll mit allen neuen Browsern natürlich. Aber ich denke, deshalb ist die Verwendung eines voll funktionsfähigen Grid-Systems so großartig: Wir können es auch für ältere Browser verwenden (außer für die wirklich uralten Dinosaurier, offensichtlich ;)).
Gute Arbeit, Chris. Ich habe es gerne gelesen und gelernt.
Hallo,
Es gibt etwas, das ich nicht verstehe. Wenn ich zwei Spalten mit der gleichen Breite haben möchte, muss ich das verwenden
Aber wenn ich Ränder verwende, hat meine erste
Liege ich falsch?
Box-sizing stellt sicher, dass die Breite gleich ist, unabhängig vom Padding.
Ja, aber nein. Meine beiden werden den gleichen Platz einnehmen, aber die Inhaltsbreite der ersten Box wird kleiner sein als die Inhaltsbreite der zweiten Box. Beispiel
Hier sind meine beiden nicht gleich breit, obwohl die beiden Spalten die gleiche Breite haben sollen.
Das funktioniert und macht die Spalten gleich. Verlässt sich nicht auf
:last-of-type, was meiner Meinung nach vorzuziehen ist.Ich würde persönlich keinen Attributselektor pro Spalte verwenden, sondern einfach eine Klasse von
.grid-colhinzufügen.Mehr zu dieser Lösung
Ich habe festgestellt, dass die Verwendung von „last“-Typ-Selektoren zu Leistungseinbußen bei der Browser-Rendering führt. Es ist für den Browser viel schneller, „first-of's“ zu finden. Daher würde ich den obigen Code ändern in
[class*='col-'] { padding-left: 20px; } [class*='col-']:first-of-type { padding-left: 0; }Vielen Dank für die Veröffentlichung dieser Technik. Der Border-Box scheint der Schlüssel zu sein, damit dies einfach funktioniert.
Ja, die Trennung von Grid und modularem Inhalt ist der richtige Weg. Ich riskiere, zur Menge zu predigen und Ihnen zu sagen, warum ich es so sehr mag
1. Es fühlt sich einfach richtig an.
2. Wenn Sie ein Modul an einen anderen Spaltenplatz verschieben müssen, ist es so einfach wie Aufnehmen und Ablegen. Sie müssen keine Grid-Klassen ändern, um es an seinen neuen Platz anzupassen.
3. Ich mag es, margin-bottom zu allen meinen semantischen, kontextschaffenden HTML5-Elementen (section, article, nav, aside) hinzuzufügen, wie z.B. margin-bottom: 30px. Dies garantiert, dass die Bereiche, die logisch getrennt sein sollen, auch visuell getrennt sind. Ich verwende dann einige Hilfsklassen, um den Rand von Modulen, die ihn möglicherweise benötigen, hinzuzufügen oder zu verringern. Da der Rand auf alle HTML5-kontextschaffenden Elemente angewendet wird, wähle ich einfach das passende für das Modul aus (meistens section) und weiß, dass die Abstände gut aussehen werden. Wenn ich also meine Website aufbaue, muss ich mich nicht zu sehr um Abstände kümmern. Ich lege einfach mein Grid aus, beginne mit dem Hinzufügen von Modulen, und alles ist automatisch schön abgesetzt.
Beispiel
4. Ich mag es auch, diesen großen Codeblock hinzuzufügen, um die Abstände noch enger und konsistenter zu gestalten.
Dies stellt sicher, dass das letzte Element in einem Modul keinen unteren Rand hat. Auf diese Weise trägt das letzte Element innerhalb eines Moduls nicht zum Abstand zwischen zwei Modulen bei, die innerhalb einer Grid-Spalte gestapelt sind. Ihr Abstand wird rein durch den margin-bottom des HTML5-Elements des Moduls bestimmt. Dies hilft auch, wenn Sie dem Modul einen Hintergrund und Padding hinzufügen, da es diesen zusätzlichen Abstand nach unten entfernt und einen gleichmäßigen Abstand rundherum schafft.
Deshalb trenne ich gerne Grids und Module. Das macht es einfach, Module zu verschieben und Abstände vertikal zu gestalten. Ich wollte das nur teilen. Gibt es Kommentare oder Vorschläge zu diesem Ansatz?
Genau so werden Grids gemacht. Ich weiß nicht, warum Leute immer auf komplizierte Grid-Systeme setzen.
@Christian Krammer, Leute mögen komplizierte Grid-Systeme, weil sie Dinge schwerer erscheinen lassen, als sie wirklich sein müssen. Ich schätze, das ist eine Sache des Egos :)
Schöner Beitrag! Schade, dass alles flüssig ist, es wäre schön, wenn es auch ein 2-Spalten-Fluid-Fixed-Beispiel gäbe.
Grüße J
Toller Beitrag! Ich hatte Angst, mich mit Grids zu beschäftigen, aber Sie haben die Sache etwas geklärt. Danke!
Hier werden großartige Techniken verwendet, und es ist sicherlich ziemlich einfach und oft vorzuziehen, eigene Grids zu erstellen.
Ich habe kürzlich etwas erstellt, das mir dabei hilft, in meinem Proportional Grids Framework, das negative Ränder am Grid-Wrapper anstelle von
:last-of-typeverwendet, um das Randproblem zu beseitigen.Es verwendet auch feste Ränder (Chris, sie sind sinnvoll!) und Proportionen, um Grids schnell nur mit Klassen zu erstellen, spezifisch für jeden Breakpoint.
Schauen Sie es sich trotzdem an, vielleicht findet es jemand nützlich :)
http://builtbyboon.com/blog/proportional-grids
Hervorragender Artikel und ich habe das Ressourcen-reiche Feedback von allen wirklich geschätzt.
Matt, dein Layout und deine Menüs sind soooooooooo praktisch.
Danke für das Teilen.
Ich habe Chris's Responsive Menu auf meiner Website verwendet und ich wünschte wirklich, es wäre möglich, das Select-Menü mit besseren Farbauswahlen zu gestalten.
Ich habe dasselbe bemerkt, was Tiste bereits früher in dieser Diskussion bemerkt hat. In diesem Beispiel
der 1. Absatz und der 2. sind nicht gleich, weil der rechte Rand der ersten Spalte den Platz davon einnimmt.
So habe ich es behoben: Ich habe allen Spalten an beiden Seiten Padding hinzugefügt (10 Pixel links und 10 Pixel rechts). Dies erweitert .grid natürlich um 20 Pixel (10 Pixel links bei der ersten und 10 Pixel rechts bei der letzten), was Probleme verursacht. Ich habe es mit negativen Rändern bei .grid wie folgt behoben
Probieren Sie es aus. Es funktioniert für mich.
Man kann auch das tun
.grid { overflow: hidden; margin-left: -20px; /* same as your gutter */ } [class*="col-"] { padding-left: 20px; }Ich musste eine responsive Grid-basierte Seite erstellen, die IE7+ unterstützt und konnte nichts finden, was mir gefiel, also habe ich meine eigene erstellt (basierend auf verschiedenen Grid-Systemen im Internet). Sie ermöglicht die Kombination von festen und flüssigen Spalten in einer einzigen Zeile und funktioniert mit IE7+ (über JS). Ich bin kein erfahrener Frontend-Entwickler, daher würde ich gerne Kommentare oder Kritik hören.
Vielen Dank im Voraus :)
Finden Sie es unter http://www.pataphysicalturkey.ch/less_test/
Jonas
Toller Artikel, ich würde mich mehr mit Mobile Web und Grid beschäftigen.
Chris, das ist so cool. Es muss eines meiner besten sein. Ich habe es geliebt.
Großartig! Vielen Dank für diesen nützlichen Beitrag.
Ich hatte nicht erkannt, dass ich mir das Leben durch die Verwendung von Grid-Frameworks wie dem 960 Grid System erschwerte, anstatt es einfacher zu machen...
Danke Chris für diesen schönen und informativen Beitrag. Ich bin ein CSS-Anfänger, ich habe ihn auf einmal gelesen, mit jedem einzelnen Kommentar. Es war sehr interessant und hilfreich.
Danke nochmal
Toller Artikel, aber… oh nein! Ich kann immer noch nicht aufhören, zu viel nachzudenken. Eigentlich wäre meine eine Sorge die verschachtelten Grid-Komponenten in fluiden Grids, wie in Ihrem Beispiel. Ich wäre neugierig zu wissen, was Ihre Best Practice für den Umgang damit ist.
Wenn Sie gleiche Ränder auch beim Verschachteln haben wollten, könnten Sie feste Ränder (em) anstelle von % verwenden, was funktionieren würde.
Ich werde hierfür zurückkommen müssen – mit einem Grid-System, das ich kürzlich verwendet habe, war es *viel* zu kompliziert *und* ich musste die Spaltenbreite wegen des Padding-Problems ständig anpassen – ich wusste nicht, dass es einen Trick gibt, der die Spalte zwingt, diese Breite unabhängig von Padding/Margen usw. beizubehalten.
Also danke!
Ich mag den Kommentar, wenn man es für IE 7 zum Laufen bringen will – etwas anderes verwenden. „box-sizing“ auf „border-box“ zu setzen ist eine schöne Lösung, bis genau dann.
Wenn Sie IE10 oder Windows 8 anvisieren, können Sie -ms-grid verwenden und es ist ziemlich süß! Ich weiß, dass es nicht funktioniert, um das breite Web anzusprechen, aber wenn Sie Windows 8 Apps mit HTML/CSS/JS erstellen, ist das Grid-System sehr schön. Schauen Sie es sich unter http://ie.microsoft.com/testdrive/Graphics/hands-on-css3/hands-on_grid.htm an. Ach ja, es gibt auch eine gute Implementierung von Flexbox und ein WinJS (das ist die JavaScript-Bibliothek unter Windows 8) Steuerelement namens ViewBox, das seine Inhalte automatisch skaliert und übersetzt, wenn sich das Layout ändert.
Hallo zusammen. Ich wollte nur sagen, dass ich darüber nachgedacht habe, mein persönliches leichtgewichtiges CSS-Framework zu erstellen, das ein Grid-System beinhalten würde, und ich dachte, was Chris hier präsentiert hat, war so großartig, dass es (wenn auch modifiziert) ein Meilenstein in meinem Projekt namens „Kaleidoscope“ wurde. Sie finden es hier: https://github.com/emilbrann/Kaleidoscope. Wenn jemand es ausprobieren und mir Feedback geben möchte, wäre das fantastisch! Danke ;)
Matt Berridge
„Wenn Sie gleiche Ränder auch beim Verschachteln haben wollten, könnten Sie feste Ränder (em) anstelle von % verwenden, was funktionieren würde…“
Ich bezog mich auf die Kumulation von Prozentwerten. Was ist zum Beispiel, wenn Sie eine 7/8-Spalte hätten… die eine 3/7-Spalte und eine 4/7-Spalte enthalten müsste?
@Matt Berridge
Ja, du hast Recht. Ich glaube, der Punkt ging irgendwo verloren (wie es oft der Fall ist), wenn Leute versuchen, Prozente im Webdesign zu verwenden.
Ich mag die Idee, mein eigenes Grid auf diese Weise zu codieren, insbesondere weil bei vielen Frameworks schwer zu erkennen ist, was im Hintergrund vor sich geht.
Aber ich frage mich auch, wie Sie mit verschachtelten Spalten mit dieser Methode umgehen würden? Soweit ich das beurteilen kann, hätten alle verschachtelten Spalten auf der rechten Seite Padding, einschließlich der letzten, was sie aus der Ausrichtung mit dem Grid bringt. Gibt es dafür eine einfache Lösung?
Das würde ich auch gerne beantwortet haben. Ich konnte nichts herausfinden.
Chris; Dieses so einfache Grid hat mir heute das Leben gerettet!
Ich hatte Probleme mit WordPress und der Verwendung einer .last-Klasse für eine Thumbnail-Galerie. Was bei responsiven Frameworks wie Bootstrap(?) und 1140 usw. sehr üblich ist.
Nochmals vielen Dank.
Ich verwende das Foundation Framework, das auch box-sizing: border-box; und Padding für linke und rechte Ränder verwendet. Hier ist mein Problem damit:
Wenn jede Spalte Padding (als Ränder) hat, bedeutet das, dass ich nie eine div innerhalb einer Spalte mit einem Hintergrund oder einem oberen/unteren Rand haben kann, der bis zum linken und rechten Rand dieser Spalte reicht. Das ist etwas, das ich oft designe, aber jetzt nicht mehr einfach mit diesem Rand-System implementieren kann. Es wird immer Padding geben, das verhindert, dass mein Kind-Div den äußersten Rand des Elterndivs (Spalte) berührt.
Irgendwelche Gedanken dazu, oder hat jemand anderes die Notwendigkeit erlebt, etwas visuell innerhalb des Spaltenrandes darzustellen?
Welches subtile CSS-Verhalten fehlt mir, das erklärt, warum wir $pad nicht überall im Grid verwenden können; z.B.
/* Optionaler äußerer Rand */
.grid-pad {
padding: $pad
}
Ich sehe, WAS passiert, wenn wir das tun: Wir bekommen den richtigen äußeren Rand am Grid, aber die letzte Spalte wird etwas breiter (in ihren Rand-Padding hinein). Ich verstehe einfach nicht, WARUM.
Ich habe einen Stylus-Mixin erstellt, um dies zu automatisieren
Um eine 1-3 Box zu erstellen
Um eine 2-3 Box zu erstellen
Das kann wahrscheinlich in Sass oder was auch immer umgewandelt werden.
Brian Danin hat eine Sass-Portierung eingereicht.
@jochem Ich denke, es liegt an den Spaltenbreiten, span4 / span8 usw. gehen alle davon aus, dass die Spalten gleich groß sind, während mit div-1-3 / div-2-3 in einem System verwendet werden können, in dem die „Spalten“ variabel sein können. div-1-3 bedeutet eine Spalte von Span 1 von insgesamt 3 Spalten, was bei der Berechnung zu einem Drittel der Bildschirmbreite mit Padding, Margen usw. berechnet wird. Sie können dann auch div-1-4 haben, was 1 Span von 4 bedeutet, was bedeutet, dass jede der Spalten effektiv 25% breit ist.
Hallo! Ich versuche, Ihren Sass-Code zu verwenden, aber ich bekomme ständig diesen Fehler beim Kompilieren: syntaxerror on line[¨24¨] of C:/path/config.rb:11: sytax error, unexpected tINDENTIFIER, expecting end of input @ mixin box-zinzing $pad
Ich finde keine Lösung dafür. Können Sie vielleicht helfen?
Verstehe ich es falsch oder bin ich der Einzige, dem es wichtig ist, dass die Spalten nicht gleich breit sind!?
http://codepen.io/mattweb/pen/Jgrdm
Ich stimme zu, dass gleich breite Spalten meiner Meinung nach in vielen Fällen SEHR notwendig sind. Danke, dass Sie ein so klares Beispiel dafür gepostet haben, wie die Spalten bei dieser Lösung nicht gleich sind. Während diese Grid-Option also eine großartige Idee ist, weit besser als die meisten verrückten Grids da draußen, stimme ich zu, dass die unebenen Spalten ein Fehler sind.
Aber ich hatte sehr guten Erfolg bei der Implementierung des negativen Rand-Fixes, der in diesem Kommentar oben gepostet wurde. Er funktioniert wahrscheinlich nicht in allen Fällen, aber wenn Sie Ihr enthaltendes Element sorgfältig aufbauen, bietet es eine gute Lösung, die es Ihnen ermöglicht, diese fantastisch einfache Grid-Lösung weiterhin zu nutzen. Ich persönlich hatte damit bisher gute Erfolge bei meinen Website-Erstellungen.
Chris, ich kämpfe, ich nehme gerade Ihren Lynda.com-Kurs WordPress 3: Creating and Editing Custom Themes und versuche, mein CSS und HTML in Ordnung zu bringen, damit ich dieses Theme zum Laufen bringen kann. Ich möchte 2 Sidebars (links und rechts) und eine Mitte (für den Hauptinhalt)….können Sie mir helfen, denn es funktioniert bei mir nicht.
Mitnichten ist das einfach oder leicht zu lesen.
Haben Sie Grids in einem vernünftigen Framework bearbeitet?
WPF zum Beispiel hat WrapPanels (ähnlich wie HTML), StackPanels (horizontal, vertikal), Grids, Canvas usw. Es ist so einfach, einfache oder komplexe Muster zu erstellen wie ein Glas Milch zu trinken.
Ich weiß nicht, warum Webentwickler so unterwürfig sind. Es gibt etwas inhärent Schlechtes daran, wie das W3C das Web konstruiert hat, und wenn niemand etwas sagt, außer „Oh, wir fügen hier einen schmutzigen Hack ein und dann bricht es nicht zusammen“, dann wird sich nichts ändern!
Das hier
Es ist kein Grid. Es ist ein kryptischer, außerirdischer Durcheinanderhaufen, und es ist kein Wunder, dass das Web so erbärmlich aussieht, weil sich nur wenige Designer das Ausmaß von missbräuchlicher Sprache leisten können, das HTML/CSS wirklich ist, und es ist kein Wunder, dass sie sich an Custom-Element-Bibliotheken klammern, um zumindest die Lesbarkeit zurückzubekommen.
Zu diesem Zeitpunkt hoffe ich, dass Google JS durch Dart und HTML durch vernünftige benutzerdefinierte Tags ersetzt. Wir könnten native Inhalte leicht in unseren Browsern ausführen, wenn es diese wahnsinnigen Sprachen nicht gäbe.
Ich habe ein Textumbruchproblem mit einem der Absätze innerhalb der divs (unverändert aus dem ursprünglichen Beispiel).
Beispiel Pen
Es tritt nur bei einigen Textzeichenketten auf, die aber nicht besonders lang oder ungewöhnlich sind.
Kann mir jemand sagen, warum das passiert? Das CSS ist an sich recht einfach, daher wundert es mich wirklich, wie dieser Absatzüberlauf plötzlich auftritt? Es ist, als würde er sich plötzlich nicht mehr auf die Größe der div beschränken.
Nun, ich habe kürzlich beschlossen, mein eigenes Grid zu erstellen und es so weit wie möglich zu vereinfachen. Ich wollte in Bezug auf (MED) denken. Was ist die minimale wirksame Dosis für ein flüssiges Grid-Framework ohne den ganzen Schnickschnack der meisten Frameworks. Ich wurde vom „tot einfach Grid“ inspiriert (http://mourner.github.io/dead-simple-grid/).
Mein Grid verwendet keine Ränder. Stattdessen ermittle ich den Rand für den Inhalt, nachdem ich den Inhalt auf der Seite platziert habe. Der Prozess, den ich verwende, ist, alles ohne visuelle Stile zu kodieren, daher arbeite ich zuerst am visuellen Layout. Ich habe auf die harte Tour gelernt, dass zu frühes Styling mehr Debugging-Aufwand für CSS bedeutet. Bitte kritisieren Sie, denn ich habe vielleicht übermäßig vereinfacht.
Ich erstelle Spalten, indem ich meine Klasse
.contentmit einer „Größenklasse“ (.col-1, .col-2, .col-3usw.) kombiniere. Ich gehe nur bis zu 10 Spalten, anstatt der üblichen zwölf. Das macht einfache Prozentsätze und einfache Verschachtelungen (10%, 20% usw.). Außerdem geht es bei Layouts mehr darum, Spalten zu kombinieren, um die Seite in Layoutblöcke zu unterteilen (Seitenleiste, rechterInhalt usw.). Daher sehe ich keinen Bedarf, mich an den 12-Spalten-Raster zu halten, der in den meisten Frameworks existiert.Ich verwende dies anfangs nur bei der Entwicklung der Website. Sobald das anfängliche Layout der Website entwickelt ist, ändere ich mein gesamtes Grid-CSS von
.content .col-3zu semantischerem CSS.sidebar.Ich werde mein Reset- und Normalize-CSS nicht einbeziehen, da dies heutzutage in den meisten Frameworks gegeben ist.
Mein Infant Grid mit einigen Klassenhelfern.
/* Zeile */
.wrapper { display: inline-block; width: 100%; }
/* Inhalt */
.content { float: left; }
/* .content Media-Abfrage für Mobilgeräte */
.content { float: none; width: 100%; display: inline-block; }
/* Größenklasse für .content */
.col-1 { width: 10%; }
.col-2 { width: 20%; }
.col-3 { width: 30%; }
.col-4 { width: 40%; }
.col-5 { width: 50%; }
.col-6 { width: 60%; }
.col-7 { width: 70%; }
.col-8 { width: 80%; }
.col-9 { width: 90%; }
.col-10 { width: 100%; }
/* Globale Layouthelfer */
.left { float: left; }
.right { float: right; }
.clear { clear: both; }
Ich denke, "Don't overthink it grids" ist endlich verstanden. Ich habe jetzt meine Version davon gemacht.
http://codepen.io/riwakawebsitedesigns/pen/iCEsu
http://codepen.io/riwakawebsitedesigns/full/iCEsu
Mit Inhalts-nach-Klassen für Gerätetests.
Versuche, die rechten Abstände des Grid-Pads im Code von Chris zu verstehen
/* Optionale äußere Abstände */
.grid-pad {
padding: 20px 0 20px 20px;
}
.grid-pad [class*='col-']:last-of-type {
padding-right: 20px;
}
Warum nicht einfach mit einer Zeile angeben, um das gleiche Ergebnis zu erzielen?
/* Optionaler äußerer Rand */
.grid-pad {
padding: 20px;
}
Fehlt mir hier etwas? Danke
Hallo Frontend-Leute und alle anderen ;)
Ich bin zu diesem Artikel zurückgekehrt, um mein eigenes Dilemma zu lösen, eine 3-Spalten-Lösung für mich mit fließenden Spalten zu verwenden.
Mein Dilemma war, dass die dritte Spalte etwas breiter wurde. Also bin ich hierher zurückgekehrt, um etwas Code zu stehlen. Aber ohne Erfolg.
In Ihrem Code macht die Verwendung von 3 Spalten "col-1-3" die letzte Div breiter als die anderen beiden Drittel.
Sie können eine Abzweigung meiner Demo hier sehen
Aber bei all diesen Kommentaren oben habe ich immer noch das Gefühl, dass das hätte gelöst werden sollen?
Vergessen Sie es. Ich habe es herausgefunden, alles, was ich tun musste, war, meinen Kopf aus dem Hintern zu ziehen, und es funktionierte gut, jetzt mit gewünschtem Leerraum.
Was ist der sauberste Weg, um dem Grid eine Hintergrundfarbe hinzuzufügen – gilt es als saubere Praxis, eine zweite Klasse zum Grid-Div hinzuzufügen, oder sollte sie auf ein anderes Element gehen?
Der Grund, warum ich frage, ist, dass ich das Gefühl habe, dass es sauberer wäre, all diese Arten von Stilen innerhalb der Module zu halten, aber ich bin mir dann nicht sicher, wie ich eine Hintergrundfarbe auf das anwenden soll, was idealerweise auf dem Grid-Div platziert wäre.