The Dark Side of the Grid

A presentation at A-Tag’18 in September 2018 in Vienna, Austria by Manuel Matuzovic

Slide 1

Slide 1

Slide 2

Slide 2

Manuel Matuzovic • Frontend Developer aus Wien (zensations ❤) @mmatuzo

Slide 3

Slide 3

Manuel Matuzovic • Frontend Developer aus Wien (zensations ❤) • Spezialisiert auf CSS, Performance und Accessibility @mmatuzo

Slide 4

Slide 4

Manuel Matuzovic • Frontend Developer aus Wien (zensations ❤) • Spezialisiert auf CSS, Performance und Accessibility • Schreibe Artikel, halte Vortr ge und Workshops @mmatuzo

Slide 5

Slide 5

Manuel Matuzovic • Frontend Developer aus Wien (zensations ❤) • Spezialisiert auf CSS, Performance und Accessibility • Schreibe Artikel, halte Vortr ge und Workshops • webclerks und CodePen Meetup in Wien @mmatuzo

Slide 6

Slide 6

Manuel Matuzovic • Frontend Developer aus Wien (zensations ❤) • Spezialisiert auf CSS, Performance und Accessibility • Schreibe Artikel, halte Vortr ge und Workshops • webclerks und CodePen Meetup in Wien • @mmatuzo auf Twitter @mmatuzo

Slide 7

Slide 7

27.09.2018 im stockwerk.co.at https://meetup.com/webclerks @mmatuzo

Slide 8

Slide 8

Slide 9

Slide 9

The Dark Side of the Grid

Slide 10

Slide 10

Was ist CSS Grid Layout? CSS Grid ist ein auf Rastern basierendes Layout-System, das f r zweidimensionale Layouts designt wurde. @mmatuzo

Slide 11

Slide 11

Was ist CSS Grid Layout? CSS Grid ist ein auf Rastern basierendes Layout-System, das f r zweidimensionale Layouts designt wurde. @mmatuzo

Slide 12

Slide 12

Was ist besonders an Grid? @mmatuzo

Slide 13

Slide 13

Was ist besonders an Grid? • Das erste richtige Layout-System in CSS. @mmatuzo

Slide 14

Slide 14

Was ist besonders an Grid? • Das erste richtige Layout-System in CSS. • float, display: inline-block, position, display: table waren urspr nglich nicht f r das Bauen von Layouts konzipiert. @mmatuzo

Slide 15

Slide 15

Was ist besonders an Grid? • Das erste richtige Layout-System in CSS. • float, display: inline-block, position, display: table waren urspr nglich nicht f r das Bauen von Layouts konzipiert. • Irgendwie wie table-Layouts, aber responsive, flexibel und in CSS formuliert und nicht in HTML. @mmatuzo

Slide 16

Slide 16

Grids Geschichte in K rze @mmatuzo

Slide 17

Slide 17

Grids Geschichte in K rze • 2011: Microsoft liefert die erste Implementierung von Grid hinter dem -ms- Browserprefix in IE 10. @mmatuzo

Slide 18

Slide 18

Grids Geschichte in K rze • 2011: Microsoft liefert die erste Implementierung von Grid hinter dem -ms- Browserprefix in IE 10. •J nner 2017: CSS Grid in Chromium 56 f r Android @mmatuzo

Slide 19

Slide 19

Grids Geschichte in K rze • 2011: Microsoft liefert die erste Implementierung von Grid hinter dem -ms- Browserprefix in IE 10. •J • Fr nner 2017: CSS Grid in Chromium 56 f r Android her M rz 2017: Chrome und Firefox @mmatuzo

Slide 20

Slide 20

Grids Geschichte in K rze • 2011: Microsoft liefert die erste Implementierung von Grid hinter dem -ms- Browserprefix in IE 10. •J • Fr nner 2017: CSS Grid in Chromium 56 f r Android her M rz 2017: Chrome und Firefox • Ende M rz 2017: Opera und Safari @mmatuzo

Slide 21

Slide 21

Grids Geschichte in K rze • 2011: Microsoft liefert die erste Implementierung von Grid hinter dem -ms- Browserprefix in IE 10. •J • Fr nner 2017: CSS Grid in Chromium 56 f r Android her M rz 2017: Chrome und Firefox • Ende M rz 2017: Opera und Safari • 17. Oktober 2017: Edge @mmatuzo

Slide 22

Slide 22

Grid(-verwandte) Eigenschaften und Werte • display • justify-content • grid-column • grid-template-columns • align-content • grid-row • grid-template-rows • place-content • grid-area • grid-template-areas • grid-auto-columns • justify-self • grid-template • grid-auto-rows • align-self grid-auto-flow • place-self • min-content, max-content, fitcontent • grid-column-gap • • grid-row-gap • grid • grid-gap • grid-column-start • fr • justify-items • grid-column-end • repeat() • align-items • grid-row-start • minmax() • place-items • grid-row-end @mmatuzo

Slide 23

Slide 23

Grid(-verwandte) Eigenschaften und Werte • display • justify-content • grid-column • grid-template-columns • align-content • grid-row • grid-template-rows • place-content • grid-area • grid-template-areas • grid-auto-columns • justify-self • grid-template • grid-auto-rows • align-self grid-auto-flow • place-self • min-content, max-content, fitcontent • grid-column-gap • • grid-row-gap • grid • grid-gap • grid-column-start • fr • justify-items • grid-column-end • repeat() • align-items • grid-row-start • minmax() • place-items • grid-row-end @mmatuzo

Slide 24

Slide 24

Grid(-verwandte) Eigenschaften und Werte • display • justify-content • grid-column • grid-template-columns • align-content • grid-row • grid-template-rows • place-content • grid-area • grid-template-areas • grid-auto-columns • justify-self • grid-template • grid-auto-rows • align-self grid-auto-flow • place-self • min-content, max-content, fitcontent • grid-column-gap • • grid-row-gap • grid • grid-gap • grid-column-start • fr • justify-items • grid-column-end • repeat() • align-items • grid-row-start • minmax() • place-items • grid-row-end @mmatuzo

Slide 25

Slide 25

Cover des Albums „The Dark Side of the Moon“, 1973 erschienen.

Slide 26

Slide 26

PINK FLOYD FUN FACT #1 45 Million en verkau fte Tontr ger @mmatuzo

Slide 27

Slide 27

PINK FLOYD FUN FACT #1 45 Million en verkau fte Tontr ger The Dark Side of the Moon ist mit ber 45 Millionen verkauften Tontr gern auf Platz 3 der meistverkauften Alben weltweit. @mmatuzo

Slide 28

Slide 28

PINK FLOYD FUN FACT #1 45 Million en verkau fte Tontr ger The Dark Side of the Moon ist mit ber 45 Millionen verkauften Tontr gern auf Platz 3 der meistverkauften Alben weltweit. #1 Thriller von Michael Jackson (66 Millionen) #2 Back in Black von AC/DC (50 Millionen) @mmatuzo

Slide 29

Slide 29

@mmatuzo

Slide 30

Slide 30

PINK FLOYD FUN FACT #1 45 Million en verkau fte Tontr ger @mmatuzo

Slide 31

Slide 31

PINK FLOYD FUN FACT #1 45 Million en verkau fte Tontr ger The Dark Side of the Moon ist mit ber 45 Millionen verkauften Tontr gern auf Platz 3 Platz 4 der meistverkauften Alben weltweit. @mmatuzo

Slide 32

Slide 32

PINK FLOYD FUN FACT #1 45 Million en verkau fte Tontr ger The Dark Side of the Moon ist mit ber 45 Millionen verkauften Tontr gern auf Platz 3 Platz 4 der meistverkauften Alben weltweit. #1 Thriller von Michael Jackson (66 Millionen) #2 The Greatest Hits (1971–1975) von Eagles (51 Millionen) #3 Back in Black von AC/DC (50 Millionen) @mmatuzo

Slide 33

Slide 33

V IS U E L L E R E I H E NF O L G E @mmatuzo

Slide 34

Slide 34

Visuelle Reihenfolge Sowohl die Tab-Reihenfolge als auch die Reihenfolge in der Screenreader Inhalte lesen folgen der Reihenfolge im DOM. @mmatuzo

Slide 35

Slide 35

Wenn die visuelle Reihenfolge nicht der Reihenfolge im DOM entspricht.

  1. Keyboard User tun sich schwer, zu erahnen, welches Element als n chstes fokussiert wird. @mmatuzo

Slide 36

Slide 36

Wenn die visuelle Reihenfolge nicht der Reihenfolge im DOM entspricht. 2. Benutzer von Bildschirmlupen sind irritiert, wenn der Bildausschnitt st ndig hin und her springt. @mmatuzo

Slide 37

Slide 37

Wenn die visuelle Reihenfolge nicht der Reihenfolge im DOM entspricht. 3. Wenn ein blinder Screenreader User gemeinsam mit einem sehenden User arbeitet und sie auf Inhalte in unterschiedlicher Reihenfolge stoßen, kann es zu Verwirrungen kommen. @mmatuzo

Slide 38

Slide 38

Wer navigiert mit dem Keyboard? @mmatuzo

Slide 39

Slide 39

Wer navigiert mit dem Keyboard? • Menschen, die aus physischen Gr nden keine Maus bedienen k nnen. @mmatuzo

Slide 40

Slide 40

Wer navigiert mit dem Keyboard? • Menschen, die aus physischen Gr nden keine Maus bedienen k nnen. • Menschen mit chronischen Erkrankungen, die k rperliche Belastung meiden sollten. @mmatuzo

Slide 41

Slide 41

Wer navigiert mit dem Keyboard? • Menschen, die aus physischen Gr nden keine Maus bedienen k nnen. • Menschen mit chronischen Erkrankungen, die k rperliche Belastung meiden sollten. • Jemand, der/die tempor r keine Maus verwenden kann (bspw. wegen einer Verletzung) @mmatuzo

Slide 42

Slide 42

Wer navigiert mit dem Keyboard? • Menschen, die aus physischen Gr nden keine Maus bedienen k nnen. • Menschen mit chronischen Erkrankungen, die k rperliche Belastung meiden sollten. • Jemand, der/die tempor r keine Maus verwenden kann (bspw. wegen einer Verletzung) • Poweruser (bspw. DeveloperInnen oder DesignerInnen 😉) @mmatuzo

Slide 43

Slide 43

Wer navigiert mit dem Keyboard? • Menschen, die aus physischen Gr nden keine Maus bedienen k nnen. • Menschen mit chronischen Erkrankungen, die k rperliche Belastung meiden sollten. • Jemand, der/die tempor r keine Maus verwenden kann (bspw. wegen einer Verletzung) • Poweruser (bspw. DeveloperInnen oder DesignerInnen 😉) @mmatuzo

Slide 44

Slide 44

Wer verwendet Screenreader? @mmatuzo

Slide 45

Slide 45

Wer verwendet Screenreader? • Blinde Menschen. @mmatuzo

Slide 46

Slide 46

Wer verwendet Screenreader? • Blinde Menschen. • Menschen mit Sehschw chen, die erg nzend einen Screenreader verwenden. @mmatuzo

Slide 47

Slide 47

Wer verwendet Screenreader? • Blinde Menschen. • Menschen mit Sehschw chen, die erg nzend einen Screenreader verwenden. • Menschen mit Lernschw chen. @mmatuzo

Slide 48

Slide 48

Visuelle Reihenfolge ndern @mmatuzo

Slide 49

Slide 49

Visuelle Reihenfolge ndern • Explizite Platzierung @mmatuzo

Slide 50

Slide 50

Visuelle Reihenfolge ndern • Explizite Platzierung • Order @mmatuzo

Slide 51

Slide 51

Visuelle Reihenfolge ndern • Explizite Platzierung • Order • Absolute Positionierung @mmatuzo

Slide 52

Slide 52

Visuelle Reihenfolge ndern • Explizite Platzierung • Order • Absolute Positionierung • Auto flow @mmatuzo

Slide 53

Slide 53

Visuelle Reihenfolge ndern • Explizite Platzierung • Order • Absolute Positionierung • Auto flow • Areas @mmatuzo

Slide 54

Slide 54

V I S U E L L E RE I H E N F OL GE A R E A S @mmatuzo

Slide 55

Slide 55

Beispiel: Mobiles Layout.

Slide 56

Slide 56

$ areas body { display: grid; grid-template-columns: minmax(auto, 480px); grid-template-areas: "header" "content" "ads" "newsletter" "comments" "related" "footer"; } @mmatuzo

Slide 57

Slide 57

$ areas body { display: grid; grid-template-columns: minmax(auto, 480px); grid-template-areas: "header" "content" "ads" "newsletter" "comments" "related" "footer"; } @mmatuzo

Slide 58

Slide 58

$ areas body { display: grid; grid-template-columns: minmax(auto, 480px); grid-template-areas: "header" "content" "ads" "newsletter" "comments" "related" "footer"; } @mmatuzo

Slide 59

Slide 59

$ areas body { display: grid; grid-template-columns: minmax(auto, 480px); grid-template-areas: "header" "content" "ads" "newsletter" "comments" "related" "footer"; } @mmatuzo

Slide 60

Slide 60

$ areas body { display: grid; grid-template-columns: minmax(auto, 480px); grid-template-areas: "header" "content" "ads" "newsletter" "comments" "related" "footer"; } @mmatuzo

Slide 61

Slide 61

$ areas body { display: grid; grid-template-columns: minmax(auto, 480px); grid-template-areas: "header" "content" "ads" "newsletter" "comments" "related" "footer"; } @mmatuzo

Slide 62

Slide 62

$ areas body { display: grid; grid-template-columns: minmax(auto, 480px); grid-template-areas: "header" "newsletter" "content" "ads" "comments" "related" "footer"; } @mmatuzo

Slide 63

Slide 63

15,7% der befragten Screenreaderuser verwenden immer oder oft ein Keyboard auf ihrem mobilen Endger t.

Slide 64

Slide 64

$ areas body { grid-template-columns: 1fr 400px; grid-template-areas: "header header" "newsletter newsletter" "content partners" "content related" "comments comments" "footer footer"; } @mmatuzo

Slide 65

Slide 65

$ areas body { grid-template-columns: 1fr 400px; grid-template-areas: "header header" "newsletter newsletter" "content partners" "content related" "comments comments" "footer footer"; } @mmatuzo

Slide 66

Slide 66

$ areas body { grid-template-columns: 1fr 400px; grid-template-areas: "header header" "newsletter newsletter" "content partners" "content related" "comments comments" "footer footer"; } @mmatuzo

Slide 67

Slide 67

$ areas body { grid-template-columns: 1fr 400px; grid-template-areas: "header header" "newsletter newsletter" "content partners" "content related" "comments comments" "footer footer"; } @mmatuzo

Slide 68

Slide 68

$ areas body { grid-template-columns: 1fr 400px; grid-template-areas: "header header" "newsletter newsletter" "content partners" "content related" "comments comments" "footer footer"; } @mmatuzo

Slide 69

Slide 69

$ areas body { grid-template-columns: 1fr 400px; grid-template-areas: "header header" "newsletter newsletter" "content partners" "content related" "comments comments" "footer footer"; } @mmatuzo

Slide 70

Slide 70

https://codepen.io/matuzo/pen/QVOXdR @mmatuzo

Slide 71

Slide 71

https://codepen.io/matuzo/pen/QVOXdR @mmatuzo

Slide 72

Slide 72

B EI WE M L I EG T DI E V E R A NT W OR T UNG ? @mmatuzo

Slide 73

Slide 73

Unsere Optionen @mmatuzo

Slide 74

Slide 74

Unsere Optionen • Source Order dynamisch bei jedem Breakpoint mit JS anpassen. 🙄 @mmatuzo

Slide 75

Slide 75

Unsere Optionen • Source Order dynamisch bei jedem Breakpoint mit JS anpassen. 🙄 • tabindex oder aria-flow-to allen Elementen zuweisen und entsprechend ordnen. 😭 @mmatuzo

Slide 76

Slide 76

Unsere Optionen • Source Order dynamisch bei jedem Breakpoint mit JS anpassen. 🙄 • tabindex oder aria-flow-to allen Elementen zuweisen und entsprechend ordnen. 😭 • Browsersniffing - Je nach Client/Ger tetyp unterschiedliches HTML ausliefern. 🤢 @mmatuzo

Slide 77

Slide 77

Unsere Optionen @mmatuzo

Slide 78

Slide 78

Unsere Optionen • Das Problem mindern indem man Skiplinks zur Verf gung stellt. 😐 @mmatuzo

Slide 79

Slide 79

Unsere Optionen • Das Problem mindern indem man Skiplinks zur Verf gung stellt. 😐 • Die visuelle Reihenfolge nicht ndern. 🙄 @mmatuzo

Slide 80

Slide 80

„Authors must use order and the grid-placement properties only for visual, not logical, reordering of content.“ – https://drafts.csswg.org/css-grid/#order-accessibility

Slide 81

Slide 81

Brilliant on the one hand for them trying to at least advise everybody in the right direction but really — come on. [⋯] Suggesting that we don’t all use it just because of this, i think, is wishful thinking. –Léonie Watson FF Conf 2016 https://www.youtube.com/watch?v=spxT2CmHoPk

Slide 82

Slide 82

Was machen wir also? @mmatuzo

Slide 83

Slide 83

Was machen wir also? • ber die Reihenfolge Gedanken machen noch bevor HTML oder CSS geschrieben wird. So fr h wie m glich eng mit den DesignerInnen zusammenarbeiten. @mmatuzo

Slide 84

Slide 84

Was machen wir also? • ber die Reihenfolge Gedanken machen noch bevor HTML oder CSS geschrieben wird. So fr h wie m glich eng mit den DesignerInnen zusammenarbeiten. • Mit sauber strukturiertem HTML beginnen. @mmatuzo

Slide 85

Slide 85

Was machen wir also? • ber die Reihenfolge Gedanken machen noch bevor HTML oder CSS geschrieben wird. So fr h wie m glich eng mit den DesignerInnen zusammenarbeiten. • Mit sauber strukturiertem HTML beginnen. • CSS mobile first schreiben und entsprechend das Layout anpassen. @mmatuzo

Slide 86

Slide 86

Was machen wir also? @mmatuzo

Slide 87

Slide 87

Was machen wir also? • Das Layout testen indem man mit der Tab-Taste auf unterschiedlichen Bildschirmgr ßen durch die Seiten navigiert. @mmatuzo

Slide 88

Slide 88

Was machen wir also? • Das Layout testen indem man mit der Tab-Taste auf unterschiedlichen Bildschirmgr ßen durch die Seiten navigiert. • Wenn es Diskrepanzen in der Reihenfolge gibt, zur ck zum Source Code und das HTML anpassen. @mmatuzo

Slide 89

Slide 89

PINK FLOYD FUN FACT #2 736 Wochen in d e n C harts @mmatuzo

Slide 90

Slide 90

PINK FLOYD FUN FACT #2 736 Wochen in d e n C harts The Dark Side of The Moon war 736 Wochen in den amerikanischen Billboard Charts. Das sind mehr als 14 Jahre! @mmatuzo

Slide 91

Slide 91

DOKUMENTSTRUKTUR AB FLACHEN @mmatuzo

Slide 92

Slide 92

„I believe there will be a strong temptation, especially with Grid, to flatten out document structure in order that all elements become a child of the element with the Grid declared. Making layout simple, but at what cost?“ –Rachel Andrew (https://rachelandrew.co.uk/archives/2015/07/28/modern-css-layout-power-and-responsibility/)

Slide 93

Slide 93

$ dokumentstruktur abflachen <form> <div> <label for="name">What's your name?"</label> <input type="text" id="name" "/> "</div> <div> <label for="email">E-Mail"</label> <input type="email" id="email" "/> "</div> ""... @mmatuzo

Slide 94

Slide 94

$ dokumentstruktur abflachen … <fieldset> <legend>Shirt size"</legend> <div> <input type="radio" id="s" name="r"> <label for="s">S"</label> "</div> <div> <input type="radio" id="m" name="r"> <label for="m">M"</label> "</div> "</fieldset> "</form> @mmatuzo

Slide 95

Slide 95

https://s.codepen.io/matuzo/pen/BOWYLB?editors=1100 @mmatuzo

Slide 96

Slide 96

$ dokumentstruktur abflachen form { display: grid; grid-template-columns: max-content minmax(auto, 600px); grid-gap: 10px 20px; } @mmatuzo

Slide 97

Slide 97

https://s.codepen.io/matuzo/pen/BOWYLB?editors=1100 @mmatuzo

Slide 98

Slide 98

$ dokumentstruktur abflachen

<div> <label for="name">What's your name?"</label> <input type="text" id="name" "/> "</div> <div> <label for="email">E-Mail"</label> <input type="email" id="email" "/> "</div> @mmatuzo

Slide 99

Slide 99

$ dokumentstruktur abflachen

<div> <label for="name">What's your name?"</label> <input type="text" id="name" "/> "</div> <div> <label for="email">E-Mail"</label> <input type="email" id="email" "/> "</div> @mmatuzo

Slide 100

Slide 100

$ dokumentstruktur abflachen <fieldset> <legend strong>Shirt size"</legend strong> <div> <div> <input type="radio" id="s"> <label for="s">S"</label> "</div> <div> <input type="radio" id="m"> <label for="m">M"</label> "</div> "</div> "</fieldset> @mmatuzo

Slide 101

Slide 101

$ dokumentstruktur abflachen <fieldset> <legend strong>Shirt size"</legend strong> <div> <div> <input type="radio" id="s"> <label for="s">S"</label> "</div> <div> <input type="radio" id="m"> <label for="m">M"</label> "</div> "</div> "</fieldset> @mmatuzo

Slide 102

Slide 102

https://s.codepen.io/matuzo/pen/BOWYLB?editors=1100 @mmatuzo

Slide 103

Slide 103

Darstellung des Formulars ohne CSS

Slide 104

Slide 104

D O K U ME N T S T R U K TU R AB FL A C H E N S U B G RI D @mmatuzo

Slide 105

Slide 105

„A grid container that is itself a grid item can defer the definition of its rows and columns to its parent grid container, making it a subgrid.“ – https://drafts.csswg.org/css-grid-2/

Slide 106

Slide 106

$ dokumentstruktur abflachen div { display: grid; grid-template-columns: subgrid; } @mmatuzo

Slide 107

Slide 107

$ dokumentstruktur abflachen div { display: grid; grid-template-columns: subgrid; } @mmatuzo

Slide 108

Slide 108

Subgrid kommt erst mit Level 2 der Spezifikation

Slide 109

Slide 109

„display: contents causes an element's children to appear as if they were direct children of the element's parent, ignoring the element itself“ – https://caniuse.com/#search=contents

Slide 110

Slide 110

$ dokumentstruktur abflachen form > div, fieldset { display: contents; } @mmatuzo

Slide 111

Slide 111

$ dokumentstruktur abflachen form > div, fieldset { display: contents; } @mmatuzo

Slide 112

Slide 112

https://codepen.io/matuzo/pen/Mqrpbm @mmatuzo

Slide 113

Slide 113

display: contents; wird in allen großen Browsern außer Edge unterst tzt

Slide 114

Slide 114

Wegen eines Bugs entfernt display: contents; Elemente aus dem Accessibility-Tree.

Slide 115

Slide 115

$ dokumentstruktur abflachen .contents { display: contents; } @mmatuzo

Slide 116

Slide 116

$ dokumentstruktur abflachen .contents { display: contents; } @mmatuzo

Slide 117

Slide 117

$ dokumentstruktur abflachen .contents { display: contents; } @mmatuzo

Slide 118

Slide 118

PINK FLOYD FUN FACT #3 Mo nty Python and the Holy Grail @mmatuzo

Slide 119

Slide 119

PINK FLOYD FUN FACT #3 Mo nty Python and the Holy Grail Pink Floyd haben 1975 dabei geholfen, den Monty Python Film „Die Ritter der Kokosnuß“ zu finanzieren. Andere Investoren waren unter anderem Led Zeppelin und Genesis. @mmatuzo

Slide 120

Slide 120

C RO S S B RO WSER S U PPO RT @mmatuzo

Slide 121

Slide 121

Kurze Wiederholung der Geschichte @mmatuzo

Slide 122

Slide 122

Kurze Wiederholung der Geschichte • 2011: Microsoft liefert die erste Implementierung von Grid hinter dem -ms- Browserprefix in IE 10. @mmatuzo

Slide 123

Slide 123

Kurze Wiederholung der Geschichte • 2011: Microsoft liefert die erste Implementierung von Grid hinter dem -ms- Browserprefix in IE 10. • Chrome, Firefox, Opera, Safari und Edge implementieren Grid im Laufe des Jahres 2017. @mmatuzo

Slide 124

Slide 124

Eigenschaften: Level 1 vs. MS Spezifikation CR Level 1 Eigenschaft grid-template-columns grid-template-rows grid-template-areas grid-template grid-auto-columns grid-auto-rows grid-auto-flow grid grid-row-start grid-column-start grid-row-end grid-column-end IE10 Implementation -ms-grid-columns -ms-grid-rows x x x x x x -ms-grid-row -ms-grid-column x x CR Level 1 Eigenschaft grid-row grid-column grid-area grid-row-gap grid-column-gap grid-auto-flow grid-gap align-self justify-self IE10 Implementation x x x x x x x -ms-grid-column-span -ms-grid-row-span -ms-grid-column-align -ms-grid-row-align @mmatuzo

Slide 125

Slide 125

Eigenschaften: Level 1 vs. MS Spezifikation CR Level 1 Eigenschaft grid-template-columns grid-template-rows grid-template-areas grid-template grid-auto-columns grid-auto-rows grid-auto-flow grid grid-row-start grid-column-start grid-row-end grid-column-end IE10 Implementation -ms-grid-columns -ms-grid-rows x x x x x x -ms-grid-row -ms-grid-column x x CR Level 1 Eigenschaft grid-row grid-column grid-area grid-row-gap grid-column-gap grid-auto-flow grid-gap align-self justify-self IE10 Implementation x x x x x x x -ms-grid-column-span -ms-grid-row-span -ms-grid-column-align -ms-grid-row-align @mmatuzo

Slide 126

Slide 126

Eigenschaften: Level 1 vs. MS Spezifikation CR Level 1 Eigenschaft grid-template-columns grid-template-rows grid-template-areas grid-template grid-auto-columns grid-auto-rows grid-auto-flow grid grid-row-start grid-column-start grid-row-end grid-column-end IE10 Implementation -ms-grid-columns -ms-grid-rows x x x x x x -ms-grid-row -ms-grid-column x x CR Level 1 Eigenschaft grid-row grid-column grid-area grid-row-gap grid-column-gap grid-auto-flow grid-gap align-self justify-self IE10 Implementation x x x x x x x -ms-grid-column-span -ms-grid-row-span -ms-grid-column-align -ms-grid-row-align @mmatuzo

Slide 127

Slide 127

Eigenschaften: Level 1 vs. MS Spezifikation CR Level 1 Eigenschaft grid-template-columns grid-template-rows grid-template-areas grid-template grid-auto-columns grid-auto-rows grid-auto-flow grid grid-row-start grid-column-start grid-row-end grid-column-end IE10 Implementation -ms-grid-columns -ms-grid-rows x x x x x x -ms-grid-row -ms-grid-column x x CR Level 1 Eigenschaft grid-row grid-column grid-area grid-row-gap grid-column-gap grid-auto-flow grid-gap align-self justify-self IE10 Implementation x x x x x x x -ms-grid-column-span -ms-grid-row-span -ms-grid-column-align -ms-grid-row-align @mmatuzo

Slide 128

Slide 128

Eigenschaften: Level 1 vs. MS Spezifikation CR Level 1 Eigenschaft grid-template-columns grid-template-rows grid-template-areas grid-template grid-auto-columns grid-auto-rows grid-auto-flow grid grid-row-start grid-column-start grid-row-end grid-column-end IE10 Implementation -ms-grid-columns -ms-grid-rows x x x x x x -ms-grid-row -ms-grid-column x x CR Level 1 Eigenschaft grid-row grid-column grid-area grid-row-gap grid-column-gap grid-auto-flow grid-gap align-self justify-self IE10 Implementation x x x x x x x -ms-grid-column-span -ms-grid-row-span -ms-grid-column-align -ms-grid-row-align @mmatuzo

Slide 129

Slide 129

Eigenschaften: Level 1 vs. MS Spezifikation CR Level 1 Eigenschaft grid-template-columns grid-template-rows grid-template-areas grid-template grid-auto-columns grid-auto-rows grid-auto-flow grid grid-row-start grid-column-start grid-row-end grid-column-end IE10 Implementation -ms-grid-columns -ms-grid-rows x x x x x x -ms-grid-row -ms-grid-column x x CR Level 1 Eigenschaft grid-row grid-column grid-area grid-row-gap grid-column-gap grid-auto-flow grid-gap align-self justify-self IE10 Implementation x x x x x x x -ms-grid-column-span -ms-grid-row-span -ms-grid-column-align -ms-grid-row-align @mmatuzo

Slide 130

Slide 130

Eigenschaften: Level 1 vs. MS Spezifikation CR Level 1 Eigenschaft grid-template-columns grid-template-rows grid-template-areas grid-template grid-auto-columns grid-auto-rows grid-auto-flow grid grid-row-start grid-column-start grid-row-end grid-column-end IE10 Implementation -ms-grid-columns -ms-grid-rows x x x x x x -ms-grid-row -ms-grid-column x x CR Level 1 Eigenschaft grid-row grid-column grid-area grid-row-gap grid-column-gap grid-auto-flow grid-gap align-self justify-self IE10 Implementation x x x x x x x -ms-grid-column-span -ms-grid-row-span -ms-grid-column-align -ms-grid-row-align @mmatuzo

Slide 131

Slide 131

Eigenschaften: Level 1 vs. MS Spezifikation CR Level 1 Eigenschaft grid-template-columns grid-template-rows grid-template-areas grid-template grid-auto-columns grid-auto-rows grid-auto-flow grid grid-row-start grid-column-start grid-row-end grid-column-end IE10 Implementation -ms-grid-columns -ms-grid-rows x x x x x x -ms-grid-row -ms-grid-column x x CR Level 1 Eigenschaft grid-row grid-column grid-area grid-row-gap grid-column-gap grid-auto-flow grid-gap align-self justify-self IE10 Implementation x x x x x x x -ms-grid-column-span -ms-grid-row-span -ms-grid-column-align -ms-grid-row-align @mmatuzo

Slide 132

Slide 132

Eigenschaften: Level 1 vs. MS Spezifikation CR Level 1 Eigenschaft grid-template-columns grid-template-rows grid-template-areas grid-template grid-auto-columns grid-auto-rows grid-auto-flow grid grid-row-start grid-column-start grid-row-end grid-column-end IE10 Implementation -ms-grid-columns -ms-grid-rows x x x x x x -ms-grid-row -ms-grid-column x x CR Level 1 Eigenschaft grid-row grid-column grid-area grid-row-gap grid-column-gap grid-auto-flow grid-gap align-self justify-self IE10 Implementation x x x x x x x -ms-grid-column-span -ms-grid-row-span -ms-grid-column-align -ms-grid-row-align @mmatuzo

Slide 133

Slide 133

$ browser support .grid { display: -ms-grid; -ms-grid-columns: 200px 200px; -ms-grid-rows: 130px 130px; display: grid; grid-template-columns: 200px 200px; grid-template-rows: 130px 130px; } @mmatuzo

Slide 134

Slide 134

$ browser support .grid { display: -ms-grid; -ms-grid-columns: 200px 200px; -ms-grid-rows: 130px 130px; display: grid; grid-template-columns: 200px 200px; grid-template-rows: 130px 130px; } @mmatuzo

Slide 135

Slide 135

$ browser support .grid { display: -ms-grid; -ms-grid-columns: 200px 200px; -ms-grid-rows: 130px 130px; display: grid; grid-template-columns: 200px 200px; grid-template-rows: 130px 130px; } @mmatuzo

Slide 136

Slide 136

$ browser support .grid { display: -ms-grid; -ms-grid-columns: 200px 200px; -ms-grid-rows: 130px 130px; display: grid; grid-template-columns: 200px 200px; grid-template-rows: 130px 130px; } @mmatuzo

Slide 137

Slide 137

Chrome 4 Elemente in einem 2 x 2 Grid ohne explizite Platzierung: Darstellung in Chrome und IE11

Slide 138

Slide 138

Chrome IE 11 4 Elemente in einem 2 x 2 Grid ohne explizite Platzierung: Darstellung in Chrome und IE11

Slide 139

Slide 139

$ browser support .item:nth-child(1) { .item:nth-child(3) { -ms-grid-column: 1; -ms-grid-column: 1; -ms-grid-row: 1; -ms-grid-row: 2; } } .item:nth-child(2) { .item:nth-child(4) { } -ms-grid-column: 2; -ms-grid-column: 2; -ms-grid-row: 1; -ms-grid-row: 2; } @mmatuzo

Slide 140

Slide 140

$ browser support .item:nth-child(1) { .item:nth-child(3) { -ms-grid-column: 1; -ms-grid-column: 1; -ms-grid-row: 1; -ms-grid-row: 2; } } .item:nth-child(2) { .item:nth-child(4) { } -ms-grid-column: 2; -ms-grid-column: 2; -ms-grid-row: 1; -ms-grid-row: 2; } @mmatuzo

Slide 141

Slide 141

$ browser support .item:nth-child(1) { .item:nth-child(3) { -ms-grid-column: 1; -ms-grid-column: 1; -ms-grid-row: 1; -ms-grid-row: 2; } } .item:nth-child(2) { .item:nth-child(4) { } -ms-grid-column: 2; -ms-grid-column: 2; -ms-grid-row: 1; -ms-grid-row: 2; } @mmatuzo

Slide 142

Slide 142

$ browser support .item:nth-child(1) { .item:nth-child(3) { -ms-grid-column: 1; -ms-grid-column: 1; -ms-grid-row: 1; -ms-grid-row: 2; } } .item:nth-child(2) { .item:nth-child(4) { } -ms-grid-column: 2; -ms-grid-column: 2; -ms-grid-row: 1; -ms-grid-row: 2; } @mmatuzo

Slide 143

Slide 143

4 Elemente in einem 2 x 2 Grid mit expliziter Platzierung: Darstellung in IE11

Slide 144

Slide 144

11,6% IE Nutzer in sterreich.

Slide 145

Slide 145

Internet Explorer Unterst tzung stellt f r viele EntwicklerInnen noch eine große H rde da.

Slide 146

Slide 146

„I don’t think we owe it to any users to make it all exactly the same. Therefore we can get away with keeping fallbacks very simple. My hypothesis: users don’t mind, they’ve come for the content.“ –Hidde de Vries https://hiddedevries.nl/en/blog/2018-08-11-lets-serve-everyone-good-looking-content

Slide 147

Slide 147

Th ere is no d ar k sid e of t h e mo o n g r i d r e a l l y . M at te r of f ac t i t ' s al l da r k . PINK FLOYD: ECLIPSE @mmatuzo

Slide 148

Slide 148

Verantwortlicher Umgang mit Grid @mmatuzo

Slide 149

Slide 149

Verantwortlicher Umgang mit Grid • Eigenschaften wie grid-template-areas; oder andere Techniken, die die visuelle Reihenfolge ver ndern, bei interaktionsintensiven Komponenten vermeiden. @mmatuzo

Slide 150

Slide 150

Verantwortlicher Umgang mit Grid • Eigenschaften wie grid-template-areas; oder andere Techniken, die die visuelle Reihenfolge ver ndern, bei interaktionsintensiven Komponenten vermeiden. • Komponenten mit dem Keyboard testen. @mmatuzo

Slide 151

Slide 151

Verantwortlicher Umgang mit Grid • Eigenschaften wie grid-template-areas; oder andere Techniken, die die visuelle Reihenfolge ver ndern, bei interaktionsintensiven Komponenten vermeiden. • Komponenten mit dem Keyboard testen. • Nicht die Semantik verschlechtern und die Dokumentstruktur abflachen. @mmatuzo

Slide 152

Slide 152

Verantwortlicher Umgang mit Grid @mmatuzo

Slide 153

Slide 153

Verantwortlicher Umgang mit Grid • Wenn man Autoprefixer verwendet, dann so, dass zu jeder Zeit f r jede/n im Team klar ist, was warum passiert. @mmatuzo

Slide 154

Slide 154

Verantwortlicher Umgang mit Grid • Wenn man Autoprefixer verwendet, dann so, dass zu jeder Zeit f r jede/n im Team klar ist, was warum passiert. • Sicher gehen, dass die Komponenten auch in lteren / eingeschr nkteren Browsern funktionieren. @mmatuzo

Slide 155

Slide 155

Verantwortlicher Umgang mit Grid • Wenn man Autoprefixer verwendet, dann so, dass zu jeder Zeit f r jede/n im Team klar ist, was warum passiert. • Sicher gehen, dass die Komponenten auch in lteren / eingeschr nkteren Browsern funktionieren. • Die Macht von Progressive Enhancement ausnutzen. @mmatuzo

Slide 156

Slide 156

Danke manuel@matuzo.at @mmatuzo