Dies ist der erste Teil einer dreiteiligen Serie darüber, wie Sie CSS Grid so verwenden können, dass es nicht nur in modernen Browsern, sondern auch im Internet Explorer (IE) funktioniert. Stellen Sie sich vor, Sie schreiben CSS Grid-Code, ohne ein Fallback-Layout schreiben zu müssen! Viele von uns denken, das sei eine ferne Zukunft, die noch viele Jahre entfernt ist. Wenn nur der IE11 Sie von dieser Realität abhält (prüfen Sie caniuse.com), dann haben Sie Glück! Dieser Tag ist heute! Oder zumindest wird er es sein, wenn Sie diese Serie gelesen haben. 😉
Artikelserie
- Entlarvung gängiger IE Grid-Irrtümer (Dieser Beitrag)
- CSS Grid und der neue Autoprefixer
- Ein Auto-Placement-Grid mit Lücken vortäuschen
- Doppelte Bereichsnamen werden jetzt unterstützt!
Zu Beginn wird dieser erste Teil einige gängige Irrtümer über die native Grid-Implementierung von IE11 entlarven.
In Teil 2 werde ich den Mythos widerlegen, dass die Verwendung von CSS Grid in IE11 super schwierig ist. Keine miesen Fallback-Layouts mehr für IE11!
In Teil 3 zeige ich Ihnen eine coole Flexbox-Technik, mit der ich einfache Auto-Placement-Grids erstelle. Diese gefälschten Auto-Placement-Grids haben feste, pixelbasierte Gitterabstände, die perfekt mit denen übereinstimmen, die mit echtem CSS Grid erstellt wurden. Sie funktionieren perfekt im IE11, sind vollständig responsiv und das Aktualisieren ihrer Spaltenanzahl basierend auf der Bildschirmbreite erfordert nur die Änderung eines einzigen Breitenwertes in einer Media Query.
Genug der Einleitungen, fangen wir mit diesen Irrtümern an!
IE hat ein implizites Grid
Im CSS Grid ist das explizite Grid dasjenige, das Sie manuell mit allen grid-template-* Eigenschaften definieren. Das implizite Grid ist, wie der Browser die Platzierung von Zellen handhabt, die außerhalb des expliziten Grids platziert werden.
Bei der Verwendung von CSS Grid in modernen Browsern ist das implizite Grid ziemlich offensichtlich, da das Grid weiterhin automatisch Rasterzellen erstellt und platziert, ohne dass Sie diese definieren müssen. IE hat kein Auto-Placement, daher ist es leicht anzunehmen, dass IE kein implizites Grid hat. Das tut es aber – Sie müssen nur bei der Verwendung etwas expliziter sein.
Sehen Sie den Pen Explizites vs. implizites Grid von Daniel Tonon (@daniel-tonon) auf CodePen.
Der häufigste Anwendungsfall für die Verwendung des impliziten Grids von IE ist die automatische Erzeugung von Zeilen. Wenn alle Zeilen im Grid ihre Höhe durch den Inhalt diktiert haben sollen, müssen Sie sich nicht die Mühe machen, -ms-grid-rows (die IE-Version von grid-template-rows) zu definieren. Die Zeilen werden in IE automatisch für Sie generiert, wenn Sie Ihre Rasterzellen platzieren.
Wichtig zu beachten ist jedoch, dass moderne Browser Zugriff auf die Eigenschaften grid-auto-rows und grid-auto-columns haben. Diese Eigenschaften ermöglichen es Ihnen, die Größenbestimmung von Zeilen und Spalten im impliziten Grid zu steuern. IE hat kein Konzept für diese Eigenschaften. Die impliziten Zeilen und Spalten von IE können nur als auto dimensioniert werden.
IE hat Repeat-Funktionalität
Keine Angst! Sie müssen 1fr 20px nicht 12 Mal für Ihr wertvolles 12-Spalten-Grid aufschreiben (IE hat keine native Gitterabstandsunterstützung). IE wird mit voller repeat()-Funktionalität ausgeliefert. Sie versteckt sich nur hinter einer anderen Syntax.
Die moderne Syntax für die Wiederholung von Werten in Spalten und Zeilen lautet repeat(12, 1fr 20px), was bedeutet: „Wiederhole das Muster 1fr 20px 12 Mal.“ Die IE-Version der Syntax lautet (1fr 20px)[12]. Die IE-Version hat die gleiche Funktionalität, nur eine andere Syntax.
/* This grid... */
.grid-one {
display: -ms-grid;
display: grid;
-ms-grid-columns: 1fr 20px 1fr 20px 1fr 20px 1fr;
grid-template-columns: 1fr 20px 1fr 20px 1fr 20px 1fr;
}
/* ...is exactly the same as this grid: */
.grid-two {
display: -ms-grid;
display: grid;
/* IE repeat syntax */
-ms-grid-columns: 1fr (20px 1fr)[3];
/* Modern repeat syntax */
grid-template-columns: 1fr repeat(3, 20px 1fr);
}
Abgesehen von der Syntax gibt es nur einen Unterschied zwischen der Art und Weise, wie moderne Browser und IE die repeat()-Funktion implementieren. Moderne Browser haben die Schlüsselwörter auto-fit und auto-fill zur Funktion hinzugefügt. Da IE Auto-Placement nicht unterstützt, sind diese Schlüsselwörter für IE ziemlich bedeutungslos, vermeiden Sie sie daher.
minmax() wird nativ in IE unterstützt
minmax() ist eine CSS-Funktion zur Größenbestimmung, die (zumindest im Moment) exklusiv für CSS Grid ist. Ihre Funktionalität ist ziemlich selbsterklärend. Sie übergeben ihr einen Mindestwert im ersten Parameter und einen Höchstwert im zweiten Parameter. Die Spalte oder Zeile, auf die dies angewendet wird, kann dann zwischen diesen beiden Werten schrumpfen und wachsen, wenn der verfügbare Platz zu- und abnimmt. Versuchen Sie, das unten stehende Codepen zu vergrößern, um es in Aktion zu sehen.
Sehen Sie den Pen minmax() Demo von Daniel Tonon (@daniel-tonon) auf CodePen.
Viele Leute denken, dass dieses großartige kleine Feature in IE nicht unterstützt wird, aber es wird tatsächlich nativ unterstützt. Ich vermute, das liegt an mindestens einem der beiden folgenden Gründe:
- Es ist eine coole Funktionalität und sie denken, IE kann keine coolen Dinge wie diese haben, weil IE schlecht ist.
- Jeder hat diesen magischen Code-Schnipsel gesehen und seine Träume wurden zerstört, als er feststellte, dass er in IE nicht funktionieren würde:
grid-template-columns: repeat( auto-fit, minmax(250px, 1fr) );.
(Wenn Sie diesen Schnipsel noch nie gesehen haben, sehen Sie sich dieses kurze Video an und bereiten Sie sich darauf vor, dass Ihr Verstand gesprengt wird.)
Da der magische Schnipsel in IE nicht funktioniert, gehen die Leute wahrscheinlich davon aus, dass nichts im Schnipsel IE-freundlich ist. In Wirklichkeit ist der einzige Grund, warum der Code-Schnipsel in IE nicht replizierbar ist, dass IE das auto-fit-Schlüsselwort und Auto-Placement nicht unterstützt.
min-content und max-content sind beide zu 100% IE-freundlich
IE hat volle native Unterstützung für beide Werte min-content und max-content.
min-content ist ein Schlüsselwortwert, der die Spalte/Zeile auf die kleinstmögliche Breite schrumpfen lässt, auf die sich der Inhalt schrumpfen lässt. Wenn er auf eine Spalte angewendet wird, bedeutet dies im Wesentlichen, dass die Spalte die Breite des längsten Wortes hat.
Sehen Sie den Pen min-content Demo von Daniel Tonon (@daniel-tonon) auf CodePen.
max-content hingegen lässt die Spalte/Zeile auf die maximal mögliche Breite ihres Inhalts wachsen und nicht weiter. Wenn Sie jemals white-space: nowrap auf einen großen Textabschnitt gesetzt haben, wird dies sehr ähnlich aussehen.
Sehen Sie den Pen max-content Demo von Daniel Tonon (@daniel-tonon) auf CodePen.
Ich hatte nicht erwartet, dass IE diese Werte unterstützt, hauptsächlich aufgrund von Grund eins unter minmax(). Ich war angenehm überrascht, als ich bei der Recherche zur IE11 Grid-Unterstützung widerlegt wurde. In Kombination mit minmax() gibt es nicht viele Grids, die ein moderner Browser erstellen kann, die IE nicht handhaben kann (solange die Grids kein Auto-Placement beinhalten).
fit-content() ist nicht IE-freundlich, aber...
fit-content() funktioniert in IE nicht nativ. 😢
Glücklicherweise ist fit-content() eine Art Kurzschrift-Syntax und wenn Sie sie ausgeschrieben schreiben, unterstützt IE sie doch! 🎉
Der ausgeschriebene Weg ist, auto (oder genauer gesagt, minmax(min-content, max-content)) auf die Spalte/Zeile in der Grid-Vorlage anzuwenden und dann max-width: [Wert] auf das Kind-Element zu setzen.
Hier ist ein Beispiel, wie Sie die Funktion fit-content() in einem modernen Browser verwenden könnten
/* This is not IE-friendly */
.grid {
display: grid;
grid-template-columns: 100px fit-content(300px) 1fr;
}
.cell {
grid-column: 2;
}
Was fit-content() hier im Grunde sagt, ist: „Lassen Sie die mittlere Spalte die maximale Breite ihres Inhalts einnehmen (d. h. ihren max-content-Wert), bis sie 300 Pixel erreicht, danach wächst sie nicht weiter, es sei denn, sie wird dazu gezwungen.“
Sehen Sie den Pen fit-content() modernes Beispiel 1 von Daniel Tonon (@daniel-tonon) auf CodePen.
Wenn Sie dies auf einem Mobilgerät lesen, sehen Sie die Codepen-Demos dieses Abschnitts im Querformat, um ein besseres Verständnis zu erhalten.
Um IE in gewisser Weise ähnlich verhalten zu lassen, müssten Sie den Code wie folgt schreiben:
/* IE-friendly `fit-content()` alternative */
.grid {
display: -ms-grid;
display: grid;
-ms-grid-columns: 100px auto 1fr;
grid-template-columns: 100px auto 1fr;
}
.cell {
-ms-grid-column: 2;
grid-column: 2;
max-width: 300px;
}
Sehen Sie den Pen fit-content IE Hack von Daniel Tonon (@daniel-tonon) auf CodePen.
Beachten Sie, dass dies keine narrensichere Methode zur Replikation von fit-content() in IE ist. Wenn es eine andere Rasterzelle mit Inhalt gibt, der mehr Breite einnimmt als die max-width-Einstellung der anderen Zelle, wächst die Rasterspalte, um die größere Zelle zu passen. Sie wird nicht bei 300 Pixeln begrenzt, wie es bei fit-content() der Fall wäre.
Sehen Sie den Pen Kaputter fit-content Hack von Daniel Tonon (@daniel-tonon) auf CodePen.
Vergleichen Sie das mit der modernen Funktion fit-content(), die die gesamte Spalte begrenzt
Sehen Sie den Pen fit-content() modernes Beispiel von Daniel Tonon (@daniel-tonon) auf CodePen.
Wo wir gerade dabei sind, sollte ich einen gängigen Irrtum bezüglich der Funktion fit-content() klären. Der Irrtum ist, dass die Spalte (oder Zeile), auf die sie angewendet wird, niemals den Wert überschreiten kann, den Sie der Funktion angegeben haben. Das ist nicht der Fall. Wenn eine Spalte auf eine Breite von fit-content(300px) eingestellt ist und eine Rasterzelle innerhalb dieser Spalte auf eine Breite von 400px eingestellt ist, beträgt die Spaltenbreite 400px, nicht 300px, wie viele Leute erwarten.
Sehen Sie den Pen Kaputtes modernes fit-content von Daniel Tonon (@daniel-tonon) auf CodePen.
IE auto != Modern auto
Der Wert auto in IE verhält sich etwas anders als auto in modernen Browsern. In IE entspricht auto strikt minmax(min-content, max-content). Eine Spalte oder Zeile, die in IE auf auto gesetzt ist, kann niemals kleiner als min-content schrumpfen. Sie kann auch niemals größer als max-content wachsen.
Moderne Browser behandeln den Wert auto etwas anders. Zum größten Teil, wenn der Wert allein verwendet wird, behandeln sie auto immer noch wie minmax(min-content, max-content). Es gibt jedoch einen kleinen, aber kritischen Unterschied: auto kann in modernen Browsern durch die Eigenschaften align-content und justify-content gestreckt werden. IE erlaubt das nicht.
Wenn auto zur Größenbestimmung von Spalten in einem modernen Browser verwendet wird, verhält sich auto eher wie 1fr, wenn nicht genügend Inhalt vorhanden ist, um die Spalte zu füllen. IE nicht. IE schrumpft die Spalte immer auf die Größe von max-content.
Wenn Sie also diesen Code haben, der Ihr Grid definiert
.grid {
display: -ms-grid;
display: grid;
-ms-grid-columns: auto auto;
grid-template-columns: auto auto;
}
Sie erhalten in modernen Browsern Folgendes:

…und das in IE:

Ok, die Version des modernen Browsers sieht dem ähnlich, was wir bekommen, wenn wir 1fr verwenden. Können wir dann minmax(min-content, 1fr) für IE verwenden? Das wird es doch wie in modernen Browsern dehnen, oder?
Ja, aber dann stoßen wir auf dieses Problem:
.grid {
display: -ms-grid;
display: grid;
-ms-grid-columns: minmax(min-content, 1fr) minmax(min-content, 1fr);
grid-template-columns: auto auto;
}
Moderne Browser

IE

Nebenbei bemerkt, minmax(min-content, 1fr) ist im Wesentlichen 1fr und 1fr und entspricht nicht auto. Ich habe auch minmax(min-content, 100%) in IE ausprobiert, aber das führte nur zum gleichen Grid wie die Verwendung von 1fr. Soweit ich das beurteilen kann, ist es nicht möglich, die Auto-Funktionalität moderner Browser in IE zu replizieren.
Es gibt jedoch einen weiteren kritischen Unterschied zwischen IE und modernen Versionen des auto-Werts. Da die IE-Version von auto explizit minmax(min-content, max-content) entspricht, kann auto nicht in minmax()-Ausdrücken verwendet werden. minmax() kann nicht innerhalb einer anderen minmax()-Funktion verwendet werden, daher ist auto disqualifiziert.
Moderne Browser sind etwas nuancierter. Sie erkennen, dass auto in verschiedenen Kontexten unterschiedliche Bedeutungen haben kann. Wenn es allein verwendet wird, entspricht es im Wesentlichen minmax(min-content, max-content), jedoch mit der zusätzlichen Fähigkeit zu strecken. Wenn es als Maximalwert verwendet wird, ist auto identisch mit max-content. Wenn es als Minimalwert verwendet wird, entspricht es im Wesentlichen min-content.
Wenn Sie jetzt schwören, auto nie wieder in Ihren Grid-Vorlagen zu verwenden, sollten Sie das überdenken. Es gibt nur drei Umstände, unter denen auto zwischen modernen Browsern und IE unterschiedlich verhält. Diese sind:
autowird ingrid-template-columnsohne einefr-Einheit in derselben Deklaration verwendet.autowird ingrid-template-rowsohne einefr-Einheit in derselben Deklaration verwendet und die Höhe des Grids ist größer als die Höhe seiner Rasterzellen.autowird in einerminmax()-Funktion verwendet.
Das ist alles! Das sind die einzigen Fälle, in denen auto in IE anders verhält als in modernen Browsern. auto ist viel einfacher zu schreiben als minmax(min-content, max-content), daher lohnt es sich nicht, es wegen ein paar kleiner Browser-Inkonsistenzen, die leicht zu vermeiden sind, zu verdammen.
(Update) IE Grid funktioniert nicht bei display: inline Elementen
Wenn Sie <span>- oder <a>-Elemente als Rasterzellen in Ihrem Grid verwenden, werden Sie überrascht sein, wenn Sie im IE testen und Ihr Grid nicht wie erwartet aussieht. Alle Ihre Block-Level-Elemente (z. B. <p>, <div>, <ul> usw.) scheinen im Grid wie erwartet zu funktionieren, aber Ihre Inline-Elemente (z. B. <span>, <a>, <label> usw.) nicht.

Leider kann IE Grid display: inline-Elemente nicht korrekt in ein Grid platzieren. Sowohl <span>- als auch <a>-Elemente sind in Browsern standardmäßig auf display: inline gesetzt. Machen Sie sich aber keine Sorgen, Sie können dieses Problem in IE leicht beheben, indem Sie dem Inline-Element explizit display: block zuweisen.

Sehen Sie den Pen
Inline-Grid-Elemente funktionieren nicht in IE von Daniel Tonon (@daniel-tonon)
auf CodePen.
Standardmäßig sind HTML5-Elemente wie <main>, <header> und <footer> in Browsern normalerweise auf display: block gesetzt. Da diese Elemente jedoch nach der Veröffentlichung von IE11 erschienen sind, erkennt IE11 sie nicht. Nicht erkannte Elemente werden in nicht unterstützenden Browsern auf das Äquivalent von <span>-Elementen zurückgesetzt. Das bedeutet, wenn sie zu Grid-Elementen werden, funktionieren sie in IE standardmäßig nicht.
Sie können diese modernen Elemente wie erwartet zum Laufen bringen, indem Sie ihnen explizit display: block zuweisen. Alternativ können Sie normalize.css zu Ihrem Projekt hinzufügen, das dies für Sie tut. Es wird auch viele andere kleine Dinge tun, die Ihre Entwicklungserfahrung angenehmer machen.
Was haben wir gelernt?
- IE hat ein implizites Grid.
- IE unterstützt die Repeat-Funktionalität.
minmax(),min-contentundmax-contentwerden alle nativ unterstützt.fit-content()wird nicht unterstützt, aber Sie können es mitautoundmax-widthEinstellungen umgehen.- IE
autoist nicht gleichautoin modernen Browsern. - IE Grid funktioniert nicht bei
display: inlineElementen.
Geben Sie die Grids aber noch nicht auf. Es gibt noch viele Dinge, die Sie wissen müssen, bevor Sie IE Grids sicher in Ihre Websites implementieren können. Bleiben Sie unbedingt bei Teil 2! Ich werde Ihnen alles zeigen, was Sie wissen müssen, um Websites für IE und moderne Browser nur mit CSS Grid sicher zu erstellen. Und das Beste daran: Es gibt keine Notwendigkeit mehr für miese Fallback-Layouts!
Artikelserie
- Entlarvung gängiger IE Grid-Irrtümer (Dieser Beitrag)
- CSS Grid und der neue Autoprefixer
- Ein Auto-Placement-Grid mit Lücken vortäuschen
- Doppelte Bereichsnamen werden jetzt unterstützt!
Fazit: Nach so vielen Jahren und neuen Technologien müssen wir immer noch Ausnahmen und zusätzliche Arbeit für nur einen Browser machen.
Ich mag die Richtung, in die Microsoft mit dem Betriebssystem geht, aber wo sind die Köpfe der Leute, die die Browser machen?
Denken Sie daran, dass IE ein Legacy-Browser ist, der seit 2013 nicht mehr aktualisiert wurde. Die Tatsache, dass er überhaupt mit Grid funktioniert, ist erstaunlich. MS Edge hat die volle Unterstützung für Grid ungefähr zur gleichen Zeit erhalten, als es in Chrome, Firefox und Safari erschien.
Ich verstehe nicht, warum Sie IE unterstützen wollen. Wenn jemand immer noch IE benutzt, dann handelt es sich wahrscheinlich um eine sehr kleine und wahrscheinlich finanziell angeschlagene Gruppe von Leuten. Mir fallen so viele andere Coding-Probleme ein, an denen ich lieber arbeiten würde.
„Finanziell angeschlagen“?
Igitt. Abgesehen vom Hauptgrund für all das, nämlich bei der Arbeit zu sein, wo die bereitgestellten Computer ein altes Betriebssystem/Browser verwenden, ist es gefährlich elitär, Benutzer, die ältere Geräte verwenden, als peinlich zu betrachten. Es bedeutet: Mir sind nur Benutzer wichtig, die genau wie ich sind.
Die Regierung ist für mich der größte Grund. Ich arbeite in Canberra (Hauptstadt Australiens). Praktisch die gesamte gut bezahlte Arbeit hier kommt von Regierungskunden.
Regierungen neigen dazu, viele sehr alte Software zu haben, die nicht gut mit modernen Browsern funktioniert. IE11 wird aus diesem Grund oft als Standardbrowser in Regierungen eingestellt. Sie bestehen auch oft aus vielen technisch nicht sehr versierten Leuten.
Wenn Sie IE11 für Ihre Arbeit nutzen müssen und kein technisch versierter Mensch sind und jeder Link, den Sie aus E-Mails öffnen, in IE11 geöffnet wird, dann werden Sie wahrscheinlich IE11 für alles verwenden. Wenn Sie ein Entwickler sind, der ein Intranet für einen Regierungskunden erstellt, dann haben Sie wahrscheinlich eine Benutzerbasis von 90 % bis 99 % IE11! Glauben Sie, Sie können IE11 dann nicht unterstützen?
Wenn Sie eine öffentliche Regierungswebsite erstellen, wird der Kunde sie wahrscheinlich oft in IE11 ansehen. Sie können ihm sagen, er soll sie in Chrome ansehen, aber irgendjemand in der Befehlskette wird sich die Website in IE11 ansehen, feststellen, dass das Layout schlecht ist, und Sie dann auffordern, es zu beheben. Es kann ein schwieriger Verkauf sein, die Idee „jeder Browser muss gleich aussehen“, die Kunden im Kopf haben, aufzubrechen. Nicht jeder kann es schaffen.
Ein weiterer wichtiger Grund wären E-Commerce-Websites. Die Nutzung des IE11-Browsers liegt immer noch bei 2 % - 3 %. Wenn Sie 2 % - 3 % Ihrer Benutzer eine schlechte Erfahrung bieten, bedeutet das tausende Dollar an verlorenen Einnahmen.
Ich hätte diesen Kram wahrscheinlich am Anfang des Artikels erwähnen sollen :/
Ich arbeite für ein Unternehmen, das ein B2B-Produkt für Film- und Fernsehunternehmen herstellt. Mindestens einer unserer Hauptkunden hat IE als den Browser für seine Unternehmenscomputer. Diese sind keineswegs „finanziell angeschlagen“ und ich vermute, die „sehr kleine“ Gruppe ist nicht so klein, wenn die IT-Abteilungen von Unternehmen involviert sind; die Aufrüstung dieser Systeme dauert viel länger, als wir es uns wünschen. (Ich schaudere, wenn ich mich erinnere, wie lange wir IE8 unterstützen mussten, weil Unternehmen noch auf Windows XP liefen und IE buchstäblich nicht mehr aufrüsten konnten.)
Öffentliche Websites können vielleicht ohne IE11-Unterstützung auskommen. Wenn Sie jedoch etwas für ein Intranet schreiben, ist IE11 so lange verfügbar, wie es Sicherheitspatches erhält, also wahrscheinlich bis 2022 (Ende des Lebenszyklus von Windows 8 & Server 2012 R2).
Wir schreiben medizinische Aufzeichnungssoftware und so sehr ich auch IE-Support fallen lassen möchte, das ist einfach nicht praktikabel. Ich wollte die Vorteile von Grids nutzen, da dies einen großen Teil unseres Layouts erheblich vereinfachen würde. Dieser Artikel hat mir also viel zu denken gegeben.
Das Produkt, an dem ich arbeite, wird von führenden Finanzinvestoren und Bankinstituten in Großbritannien und Nordamerika genutzt.
Diese Leute sind das genaue Gegenteil von dem, was Sie als „finanziell angeschlagen“ definieren würden, und sind wahrscheinlich diejenigen, die Ihr Geld bei Ihren täglichen Transaktionen verwalten.
IE ist der zweithäufigste Browser auf unserer Plattform.
Bin ich darüber glücklich? Natürlich nicht. Habe ich bessere Probleme zu lösen? Das habe ich!
Detaillierte Artikel wie der obige sind genau aus diesem Grund unschätzbar wertvoll.
Ich möchte Coding-Probleme mit glänzenden neuen Funktionen wie Grid lösen, und ich bin dankbar, dass es Leute gibt, die ihre Erfahrungen damit teilen, wie man es macht, ohne die Aktivität der Benutzer auf unseren Plattformen zu stören.
Ich bin etwas verwirrt von dieser Repeat-Syntax für IE11.
Das Schreiben von
-ms-grid-columns: 1fr (1rem 1fr)[4];wird von scss-lint als Syntaxfehler betrachtet. Der Teil[4]ist unerwartet…Ich konnte keinen Hinweis darauf finden, wie man das „Syntax“-Linting deaktiviert. Es gibt viele Möglichkeiten, eine bestimmte Regel zu deaktivieren, aber was die Syntax angeht, nichts.
Hat jemand eine Idee?
Antwort: Stecken Sie die IE-Syntax nicht in Ihren Quellcode. Lassen Sie Autoprefixer die IE-Übersetzungen für Sie erledigen. Wie das geht, erkläre ich in Teil 2.
Vielen Dank, dass Sie sich die Zeit genommen haben, diesen Beitrag zu schreiben. Es ist wirklich großartig zu wissen, dass es möglich ist, IE-Unterstützung anzubieten.
Es ist derzeit etwas schwierig, den Artikel zu scannen und sich ein Bild davon zu machen, was unterstützt wird und was nicht – könnten Sie vielleicht eine Zusammenfassungstabelle mit dem, was unterstützt wird, was nicht, und ob Workarounds existieren, bereitstellen?
So etwas wie
Betrachten Sie diesen Artikel eher als Vorspeise vor dem Hauptgericht, das Teil 2 ist. Dann ist Teil 3 ein kleines Dessert.
Ich mache ungefähr das, wonach Sie in Teil 2 fragen. Ich erstelle eine aktualisierte Version der Kompatibilitätstabelle, die Sie in Rachel Andrews Artikel über IE CSS Grid finden.
Vielleicht mache ich in einem Folgebeitrag eine umfassendere Tabelle.
Ich habe einige dieser Dinge getestet, aber leider funktioniert die sogenannte „Repeat“-Funktionalität in IE 11 unter Windows 7 nicht (ich habe es in Virtual Box laufen). Alles bricht einfach zusammen.
Die Tatsache, dass ich dies nicht nutzen kann + die Tatsache, dass Sie keine Abstände hinzufügen können, macht es für die Projekte, an denen ich beteiligt bin, praktisch unbrauchbar. Wir haben ständig neue Entwickler und Praktikanten, die meisten von ihnen mit sehr wenig Wissen und müssen mit den Starter-Themes, die wir intern verwenden, um schnell Websites zu erstellen, auf den neuesten Stand gebracht werden.
Daher müssen alle Systeme, die wir verwenden, robust, zumindest ein wenig intuitiv, gut lesbar und browserübergreifend leicht zu beheben sein. Ich war hoffnungsvoll, als ich mit dem Lesen des Artikels begann, aber es ist mir immer noch sehr klar, dass der Zustand von CSS Grid für diese Arbeitsweise noch weit entfernt ist. Es ist für erfahrenere Entwickler geöffnet, die schnell arbeiten, um ihre eigene benutzerdefinierte Grid-Zeug zu erstellen, aber das war's dann auch.
Es scheint mir, als hätten Sie versucht, Auto-Placement in IE zu nutzen. IE unterstützt kein Auto-Placement. Das bedeutet jedoch nicht, dass die IE-Implementierung von CSS Grid nutzlos ist. Wenn Sie eine bekannte Anzahl von Zellen in einer bekannten Anzahl von Zeilen und Spalten haben, kann die IE-Implementierung recht nützlich sein.
Geben Sie die Hoffnung noch nicht auf! Dies ist nur Teil 1 von 3. Am Ende von Teil 2 werden Sie (und all Ihre Junior-Entwickler) CSS Grid in IE ganz einfach nutzen können.
Dank der Erklärung zu Auto in IE und modernen Browsern habe ich mein Problem mit der Responsivität in IE11 gelöst. Ich habe einfach auto durch 1fr ersetzt (was in meinem Fall perfekt funktioniert) und jetzt schrumpft mein Layout schön, wenn ich das Browserfenster verkleinere. Früher dachte ich, es sei ein min-content-Problem. Jetzt werde ich mit Repeat experimentieren.
Vielen Dank für diesen Artikel und ich warte auf Teil zwei und drei. Ich werde sicher etwas Neues lernen.
Bevor wir diese Position als elitär bezeichnen, bedenken Sie, dass es mehr Menschen auf der Welt mit Sehbehinderungen gibt als IE11-Nutzer.
WCAG AA/AAA-Konformität sollte der IE11-Kompatibilität vorgezogen werden.
Diese Serie hätte nicht zu einem besseren Zeitpunkt kommen können. Ich habe gestern etwa eine Stunde damit verbracht, nach Best Practices für die Erstellung eines benutzerdefinierten CSS-Grid-basierten Grid-Systems zu suchen, das mit IE kompatibel ist. Ehrlich gesagt, bin ich mir mit den in diesem Artikel gegebenen Informationen immer noch nicht sicher, wie das geht, aber ich hoffe, Artikel 2 und 3 der Serie werden diese Frage beantworten.
Internet Explorer ist eine solche Qual, diese Dinge tun zu müssen, aber für viele, wenn nicht die meisten Jobs, ist die Unterstützung von IE notwendig. Danke für den Artikel.
Vielen Dank für das Schreiben dieses Artikels! Diese Informationen haben mich wirklich dazu gebracht, mehr mit CSS Grid zu experimentieren, sowohl bei der Arbeit als auch in meinen persönlichen Projekten, und die erstaunliche Kraft dieser Funktion zu erkennen. Ich kann Teil 2 kaum erwarten! Wann erwarten Sie, damit fertig zu sein und ihn zu posten?
Ich habe eine kurze Frage, bei der ich Probleme habe. Ich habe ein einfaches Layout mit
-ms-grid-rows: 75px 1fr 85px, aber IE 11 beachtet die Zeilen nicht, und sie überlappen sich oben auf der Seite. Haben Sie Ideen dazu? Ich habe Autoprefixer verwendet, um die CSS-Syntax zu erhalten.