status of css grid layout implementation...status of css grid layout implementation manuel rego...

48
STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS ( ) @regocas BlinkOn 6 / 16-17 June 2016 (Munich)

Upload: others

Post on 31-Mar-2020

44 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

STATUS OFCSS GRID LAYOUTIMPLEMENTATIONMANUEL REGO CASASNOVAS ( )@regocas

BlinkOn 6 / 16-17 June 2016 (Munich)

Page 2: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

ABOUT MECSS Grid Layout implementor (Chromium/Blink &

Safari/WebKit)

Member of Igalia Web Platform Team

Page 3: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

GRID CONCEPTSHeader

MainAside

Footer

Page 4: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

GRID LINESHeader

MainAside

Footer

1 2 31

2

34

Page 5: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

GRID TRACKS

Page 6: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

GRID TRACKSROWS

Header

MainAside

Footer

Page 7: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

GRID TRACKSCOLUMNS

Header

MainAside

Footer

Page 8: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

GRID CELLSHeader

MainAside

Footer

Page 9: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

GRID AREASHeader

MainAside

Footer

Page 10: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

IMPLEMENTATIONSTATUS

Page 11: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

GRID CONTAINERSProperty: display

Values Status

grid DONE

inline-grid DONE

subgrid TODO (at-risk) - #618969

Page 12: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

GRID ITEMSProperties Status

order DONE

z-index DONE

min-size: auto DONE

Page 13: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

EXPLICIT GRID (I)Properties: grid-template-columns|rows

Values Status

auto, length, percentage DONE

flex (fr unit) DONE

min-contet, max-content DONE

minmax() DONE

fit-content() TODO - #618972

Page 14: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

EXPLICIT GRID (I) - EXAMPLEABCD

.grid { display: grid; grid-template-columns: ; grid-template-rows: ; }

<div class="grid">    <div class="a">A</div>    <div class="b">B</div>    <div class="c">C</div>    <div class="d">D</div></div>

Page 15: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

EXPLICIT GRID (II)Properties: grid-template-columns|rows

Values/Features Status

repeat(integer, ) DONE

repeat(auto-fill, ) DONE

repeat(auto-fit, ) WIP -

Multiple tracks TODO -

#589460

#619930

Page 16: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

EXPLICIT GRID (II) - EXAMPLEABCDEF

.grid { display: grid; grid-template-columns: repeat(3, 100px) ; grid-template-rows: repeat(2, 100px) ; }

<div class="grid">    <div class="a">A</div>    <div class="b">B</div>    <div class="c">C</div>    <div class="d">D</div>    <div class="e">E</div>    <div class="f">F</div></div>

Page 17: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

EXPLICIT GRID (III)Properties Status

grid-template-areas DONE

grid-template shorthand DONE

Page 18: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

EXPLICIT GRID (III) - EXAMPLEABCD

.grid { display: grid; grid-auto-columns: 100px; grid-auto-rows: 75px; grid-template-areas: "head head" "nav main" "foot foot"; }.a { grid-area: head; }.b { grid-area: main; }.c { grid-area: nav; }.d { grid-area: foot; }

<div class="grid">    <div class="a">A</div>    <div class="b">B</div>    <div class="c">C</div>    <div class="d">D</div></div>

Page 19: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

IMPLICIT GRID (I)Properties Status

grid-auto-columns|rows DONE

grid-auto-columns|rows multipletracks

TODO -#618970

Page 20: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

IMPLICIT GRID (II)Properties Status

grid-auto-flow DONE

grid shorthand DONE

grid shorthand new syntax TODO - #618971

Page 21: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

PLACING GRID ITEMS (I)Properties: grid-column|row-start|end

Values Status

auto DONE

line name DONE

span DONE

Page 22: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

PLACING GRID ITEMS (II)Properties/Features Status

grid-column|rows shorthands DONE

grid-area shorthand DONE

Placement algorithm DONE

Page 23: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

PLACING GRID ITEMS - EXAMPLEABC

.grid { display: grid; grid: 100px 100px / 200px 200px; }.a { }

<div class="grid">    <div class="a">A</div>    <div class="b">B</div>    <div class="c">C</div></div>

Page 24: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

ABSOLUTE POSITIONINGFeatures Status

Placement DONE

Alignment TODO - #603423

Page 25: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

ABSOLUTE POSITIONING - EXAMPLE

0 1 2 4 -00

1

2

3

-0

position: absolute;grid-column: 1 / auto;grid-row: 2 / auto;

top: 80px;

bottom: 60px;

left:90px;

right:70px;

Page 26: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

GUTTERSProperties/Values Status

grid-column|row-gap length DONE

grid-column|row-gappercentage

WIP (at risk) -

grid-gap shorthand DONE

#615248

Page 27: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

GUTTERS - EXAMPLEABCDE

.grid { display: grid; grid: 100px 100px / 100px 100px 100px; grid-row-gap: ; grid-column-gap: ; }

<div class="grid">    <div class="a">A</div>    <div class="b">B</div>    <div class="c">C</div>    <div class="d">D</div>    <div class="e">E</div></div>

Page 28: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

ALIGNMENT (I)Properties Status

auto margins DONE

justify|align-self DONE

justify|align-items DONE

justify|align-content DONE

Page 29: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

ALIGNMENT (I) - EXAMPLE (I)ABC

.grid { display: grid; grid: 100px 100px / 200px 200px; align-items: ; justify-items: ; }.b { align-self: ; justify-self: ; }

<div class="grid">    <div class="a">A</div>    <div class="b">B</div>    <div class="c">C</div></div>

Page 30: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

ALIGNMENT (I) - EXAMPLE (II)ABC

.grid { display: grid; grid: 100px 100px / 150px 150px; align-content: ; justify-content: ; }

<div class="grid">    <div class="a">A</div>    <div class="b">B</div>    <div class="c">C</div></div>

Page 31: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

ALIGNMENT (II)Features Status

normal value WIP -

Overflow alignment DONE

Baseline alignment WIP -

#565883

#412410

Page 32: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

GRID SIZINGFeatures Status

Track sizing algorithm DONE

Orthogonal flows support WIP - #445742

Page 33: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

FRAGMENTATIONFeatures Status

Fragmentation algorithm TODO - #614667

Page 34: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

SUBGRIDS

Page 35: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

SUBGRIDS

Nested Grid

A B C

D

E

S1 Sub2

S3 Sub4

Subgrid

A B C

D

E

Sub1 Sub2

Sub3 Sub4

Page 36: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

REDUCED PROPOSALDISPLAY: SUBGRID;

Track sizing definition from the parent grid(no grid-template-columns|rows)Subgrids have no implicit grid(no grid-auto-columns|rows)grid-template-area can be used within the subgrid

Page 37: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

SUBGRIDS - EXAMPLEInputCheckboxSubmit form

ul { display: grid; }li { display: grid; }label { grid-column: 1; }

<form><ul>    <li><label>Input</label><input></li>    <li><label>Checkbox</label><input type    <li><button>Submit form</button></li</ul></form>

Page 38: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

PERFORMANCEOptimizations to avoid re-layout in some situations

Page 39: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

W3C TEST SUITEComplete the test suite

Currently (most unreviewed)117 tests

Import test suite once it's ready

Page 40: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

CHROME DEVTOOLSAdd grid layout support

Ideas: show grid lines, highlight item's grid area, etc.

Page 41: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

DISPLAY: CONTENTS;Avoid box generation

Useful for other things (not only Grid Layout)

Already supported on Firefox

Page 42: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

SPEC STATUS

Page 43: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

W3C SPECIFICATIONCSS Grid Layout - https://dra�s.csswg.org/css-grid/

Started by Microso� in 2010

Last Working Dra� 19 May 2016

W3C Test Suite

Page 44: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

CAN I USE GRID? ὢ�

Page 45: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

BROWSERS ADOPTION ὠ�Oldimplementationsince IE 10

Prefixed: -ms

Getting ready ⚐Experimental Web PlatformFeatures

Very close toChrome

Enabled by default on SafariTechnology Preview

Getting ready too ⚐layout.css.grid.enabled

Polyfill: https://github.com/FremyCompany/css-grid-polyfill

Page 46: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

EXAMPLES by Igalia

by Rachel Andrewhttp://igalia.github.io/css-grid-layout/http://gridbyexample.com/

Page 47: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

ACKNOWLEDGEMENTS

and working together to build a better webIgalia Bloomberg

Page 48: STATUS OF CSS GRID LAYOUT IMPLEMENTATION...STATUS OF CSS GRID LAYOUT IMPLEMENTATION MANUEL REGO CASASNOVAS (@regocas) BlinkOn 6 / 16-17 June 2016 (Munich) ABOUT ME CSS Grid Layout

© Waldemar Merger https://www.flickr.com/photos/paxx/5064768528/

THANK YOU!Twitter: Mail: Blog:

@[email protected]://blogs.igalia.com/mrego/