Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Future of Front End

Avatar for Justin Holt Justin Holt
November 14, 2017

The Future of Front End

Showcasing new and upcoming CSS and HTML5 features.

Avatar for Justin Holt

Justin Holt

November 14, 2017
Tweet

More Decks by Justin Holt

Other Decks in Programming

Transcript

  1. the future of front end THE FUTURE OF FRONT END

    Showcasing new and upcoming CSS and HTML5 features. Intro
  2. the future of front end A LITTLE ABOUT MYSELF •

    Native to Charlotte area Intro
  3. the future of front end A LITTLE ABOUT MYSELF •

    Native to Charlotte area • 40 years old Intro
  4. the future of front end A LITTLE ABOUT MYSELF •

    Native to Charlotte area • 40 years old • Live in Plaza Midwood/East Charlotte with my wife Alison, son Hollis Intro
  5. the future of front end A LITTLE ABOUT MYSELF •

    Native to Charlotte area • 40 years old • Live in Plaza Midwood/East Charlotte with my wife Alison, son Hollis • Currently FED Wray Ward, 1.5 years Intro
  6. the future of front end A LITTLE ABOUT MYSELF •

    Native to Charlotte area • 40 years old • Live in Plaza Midwood/East Charlotte with my wife Alison, son Hollis • Currently FED Wray Ward, 1.5 years • Passion for FED; Interaction, Performance, Tooling, Animation Intro
  7. the future of front end A LITTLE ABOUT MYSELF •

    Native to Charlotte area • 40 years old • Live in Plaza Midwood/East Charlotte with my wife Alison, son Hollis • Currently FED Wray Ward, 1.5 years • Passion for FED; Interaction, Performance, Tooling, Animation • @justinholtweb www.justinholt.com [email protected] [email protected] Intro
  8. the future of front end WHY GIVE THIS PRESENTATION? •

    We are in a new era for Front End Development. Intro Intro
  9. the future of front end WHY GIVE THIS PRESENTATION? •

    We are in a new era for Front End Development. • Front End Eras:
 Tables, Divs, Flash, CSS3, HTML5, SVGs, Animation, Responsive Design, WebVR, Modules, Agile and Design Thinking Intro Intro
  10. the future of front end WHY GIVE THIS PRESENTATION? •

    We are in a new era for Front End Development. • Front End Eras:
 Tables, Divs, Flash, CSS3, HTML5, SVGs, Animation, Responsive Design, WebVR, Modules, Agile and Design Thinking • Now?
 Layout revolution, PWAs, Performance Intro Intro
  11. the future of front end • Help solve the usual

    headaches of cumbersome solutions to everyday design challenges GOALS Intro Intro Intro
  12. the future of front end • Help solve the usual

    headaches of cumbersome solutions to everyday design challenges • Introduce new solutions and features that can help improve development, save time, prevent headaches GOALS Intro Intro Intro
  13. the future of front end • Help solve the usual

    headaches of cumbersome solutions to everyday design challenges • Introduce new solutions and features that can help improve development, save time, prevent headaches • Take away new features you can ship right now in production GOALS Intro Intro Intro
  14. the future of front end • Help solve the usual

    headaches of cumbersome solutions to everyday design challenges • Introduce new solutions and features that can help improve development, save time, prevent headaches • Take away new features you can ship right now in production • Start thinking about future features and how they affect your work/tooling GOALS Intro Intro Intro
  15. the future of front end • No live coding, some

    examples but some just discussions A FEW NOTES Intro Intro Intro Intro
  16. the future of front end • No live coding, some

    examples but some just discussions • CSS examples may be in SASS/SCSS A FEW NOTES Intro Intro Intro
  17. the future of front end • No live coding, some

    examples but some just discussions • CSS examples may be in SASS/SCSS • Only display normal declarations, post process for browser-prefixes (Autoprefixer) ** A FEW NOTES Intro Intro Intro
  18. the future of front end • No live coding, some

    examples but some just discussions • CSS examples may be in SASS/SCSS • Only display normal declarations, post process for browser-prefixes (Autoprefixer) ** • JavaScript examples may be in ES6, post process for transpiling (Babel/Browserify or Webpack) A FEW NOTES Intro Intro Intro
  19. the future of front end • No live coding, some

    examples but some just discussions • CSS examples may be in SASS/SCSS • Only display normal declarations, post process for browser-prefixes (Autoprefixer) ** • JavaScript examples may be in ES6, post process for transpiling (Babel/Browserify or Webpack) • 4 space tabs always, well because… A FEW NOTES Intro Intro Intro
  20. the future of front end MODERN CSS • Flexbox •

    Grid • How Flexbox and Grid work together Agenda
  21. the future of front end MODERN CSS • Flexbox •

    Grid • How Flexbox and Grid work together • Feature Queries (@supports) Agenda
  22. the future of front end MODERN CSS • Flexbox •

    Grid • How Flexbox and Grid work together • Feature Queries (@supports) • Clip paths Agenda
  23. the future of front end MODERN CSS • Flexbox •

    Grid • How Flexbox and Grid work together • Feature Queries (@supports) • Clip paths • Initial letter Agenda
  24. the future of front end MODERN CSS • Flexbox •

    Grid • How Flexbox and Grid work together • Feature Queries (@supports) • Clip paths • Initial letter • Shape outside Agenda
  25. the future of front end MODERN CSS • Flexbox •

    Grid • How Flexbox and Grid work together • Feature Queries (@supports) • Clip paths • Initial letter • Shape outside • Multi columns Agenda
  26. the future of front end MODERN CSS • Flexbox •

    Grid • How Flexbox and Grid work together • Feature Queries (@supports) • Clip paths • Initial letter • Shape outside • Multi columns • Backdrop filter Agenda
  27. the future of front end MODERN CSS • Flexbox •

    Grid • How Flexbox and Grid work together • Feature Queries (@supports) • Clip paths • Initial letter • Shape outside • Multi columns • Backdrop filter • Background blend modes Agenda
  28. the future of front end MODERN CSS • Flexbox •

    Grid • How Flexbox and Grid work together • Feature Queries (@supports) • Clip paths • Initial letter • Shape outside • Multi columns • Backdrop filter • Background blend modes • Variables (in pure css!) Agenda
  29. the future of front end HTML5 APIS • Intersection observer

    • Resize observer • Mutation observer Agenda
  30. the future of front end HTML5 APIS • Intersection observer

    • Resize observer • Mutation observer • Performance observer Agenda
  31. the future of front end HTML5 APIS • Intersection observer

    • Resize observer • Mutation observer • Performance observer • Fetch API Agenda
  32. the future of front end HTML5 APIS • Intersection observer

    • Resize observer • Mutation observer • Performance observer • Fetch API • Push API Agenda
  33. the future of front end HTML5 APIS • Intersection observer

    • Resize observer • Mutation observer • Performance observer • Fetch API • Push API • Payment handler and request APIs Agenda
  34. the future of front end HTML5 APIS • Intersection observer

    • Resize observer • Mutation observer • Performance observer • Fetch API • Push API • Payment handler and request APIs • PWA interest - Vibration, Screen Orientation, Page Transition, Page Visibility, Fullscreen, Web Bluetooth APIs Agenda
  35. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display Agenda
  36. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky Agenda
  37. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky • :matches and :not selectors Agenda
  38. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky • :matches and :not selectors • CSS element queries Agenda
  39. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky • :matches and :not selectors • CSS element queries • Css object fit and object-position Agenda
  40. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky • :matches and :not selectors • CSS element queries • Css object fit and object-position • CSS image-set Agenda
  41. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky • :matches and :not selectors • CSS element queries • Css object fit and object-position • CSS image-set • CSS media query ranges Agenda
  42. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky • :matches and :not selectors • CSS element queries • Css object fit and object-position • CSS image-set • CSS media query ranges • CSS color-mod and gray Agenda
  43. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky • :matches and :not selectors • CSS element queries • Css object fit and object-position • CSS image-set • CSS media query ranges • CSS color-mod and gray • CSS nesting and when/else rules Agenda
  44. the future of front end FLEXBOX Layout method of positioning

    elements in horizontal or vertical stacks. Modern CSS
  45. the future of front end FLEXBOX Layout method of positioning

    elements in horizontal or vertical stacks. 
 Intended to accommodate different screen sizes and different display devices, by adapting the width and height of flex boxes to vary based on the display space. Modern CSS
  46. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> </ul> Modern CSS
  47. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> </ul> Modern CSS
  48. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> </ul> Modern CSS
  49. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> </ul> Modern CSS
  50. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> </ul> Modern CSS
  51. the future of front end FLEXBOX Main Concepts • Flex

    Container • Rows and Columns Modern CSS
  52. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> </ul> Modern CSS
  53. the future of front end FLEXBOX Main Concepts • Flex

    Container • Rows and Columns • Flex Wrap Modern CSS
  54. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> </ul> Modern CSS
  55. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap-reverse; } Modern CSS
  56. the future of front end FLEXBOX Main Concepts • Flex

    Container • Rows and Columns • Flex Wrap • Main Axis Location Modern CSS
  57. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> </ul> Modern CSS
  58. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: flex-start; } Modern CSS
  59. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: flex-start; } Modern CSS
  60. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: flex-start; } Modern CSS
  61. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: flex-end; } Modern CSS
  62. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: center; } Modern CSS
  63. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-between; } Modern CSS
  64. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; } Modern CSS
  65. the future of front end FLEXBOX Main Concepts • Flex

    Container • Rows and Columns • Flex Wrap • Main Axis Location • Cross Axis Location Modern CSS
  66. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> </ul> Modern CSS
  67. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: stretch; } Modern CSS
  68. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: stretch; } Modern CSS
  69. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: stretch; } Modern CSS
  70. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: flex-start; } Modern CSS
  71. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: flex-end; } Modern CSS
  72. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; } Modern CSS
  73. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: baseline; } Modern CSS
  74. the future of front end FLEXBOX Main Concepts • Flex

    Container • Rows and Columns • Flex Wrap • Main Axis Location • Cross Axis Location • Item Ordering Modern CSS
  75. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Have a Nice Day </p> </li> </ul> Modern CSS
  76. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Have a Nice Day </p> </li> </ul> Modern CSS
  77. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item is—exit”> <p class=“list__text”> Have a Nice Day </p> </li> </ul> Modern CSS
  78. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; } .list__item { &.is—exit { order: 1; } } Modern CSS
  79. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item is—exit”> <p class=“list__text”> Have a Nice Day </p> </li> </ul> Modern CSS
  80. the future of front end FLEXBOX Main Concepts • Flex

    Container • Rows and Columns • Flex Wrap • Main Axis Location • Cross Axis Location • Item Ordering • Item Sizing Modern CSS
  81. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item is—exit”> <p class=“list__text”> Have a Nice Day </p> </li> </ul> Modern CSS
  82. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item is—exit”> <p class=“list__text”> Have a Nice Day </p> </li> </ul> Modern CSS
  83. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; } .list__item { &.is—exit { order: 1; flex-grow: 2; } } Modern CSS
  84. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; } .list__item { flex-grow: 1; &.is—exit { order: 1; flex-grow: 2; } } Modern CSS
  85. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; } .list__item { flex-grow: 1; &.is—exit { order: 1; flex-shrink: 2; } } Modern CSS
  86. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; } .list__item { flex-basis: 1; &.is—exit { order: 1; flex-shrink: 2; } } Modern CSS
  87. the future of front end FLEXBOX Main Concepts • Flex

    Container • Rows and Columns • Flex Wrap • Main Axis Location • Cross Axis Location • Item Ordering • Item Sizing • Main Axis Item Location Modern CSS
  88. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item is—exit”> <p class=“list__text”> Have a Nice Day </p> </li> </ul> Modern CSS
  89. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item is—exit”> <p class=“list__text”> Have a Nice Day </p> </li> </ul> Modern CSS
  90. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; } .list__item { flex-basis: 1; &.is—exit { order: 1; flex-grow: 2; align-self: flex-start; } } Modern CSS
  91. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; } .list__item { &.is—exit { order: 1; flex-grow: 2; align-self: flex-end; } } Modern CSS
  92. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; } .list__item { &.is—exit { order: 1; flex-grow: 2; align-self: center; } } Modern CSS
  93. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; } .list__item { &.is—exit { order: 1; flex-grow: 2; align-self: baseline; } } Modern CSS
  94. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; } .list__item { &.is—exit { order: 1; flex-grow: 2; align-self: stretch; } } Modern CSS
  95. the future of front end FLEXBOX Main Concepts • Flex

    Container • Rows and Columns • Flex Wrap • Main Axis Location • Cross Axis Location • Item Ordering • Item Sizing • Main Axis Item Location • Cross Axis Item Location Modern CSS
  96. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item is—exit”> <p class=“list__text”> Have a Nice Day </p> </li> </ul> Modern CSS
  97. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; align-content: stretch; } .list__item { &.is—exit { order: 1; flex-grow: 2; align-self: flex-start; } } Modern CSS
  98. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; align-content: stretch; } .list__item { &.is—exit { order: 1; flex-grow: 2; align-self: flex-start; } } Modern CSS
  99. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; align-content: stretch; } .list__item { &.is—exit { order: 1; flex-grow: 2; align-self: flex-start; } } Modern CSS
  100. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; align-content: flex-start; } .list__item { &.is—exit { order: 1; flex-grow: 2; align-self: flex-start; } } Modern CSS
  101. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; align-content: center; } .list__item { &.is—exit { order: 1; flex-grow: 2; align-self: flex-start; } } Modern CSS
  102. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; align-content: flex-end; } .list__item { &.is—exit { order: 1; flex-grow: 2; align-self: flex-start; } } Modern CSS
  103. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; align-content: space-between; } .list__item { &.is—exit { order: 1; flex-grow: 2; align-self: flex-start; } } Modern CSS
  104. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; align-content: space-around; } .list__item { &.is—exit { order: 1; flex-grow: 2; align-self: flex-start; } } Modern CSS
  105. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; align-content: center; } .list__item { &.is—exit { order: 1; flex-grow: 2; align-self: flex-start; } } Modern CSS
  106. the future of front end <ul class=“list”> <li class=“list__item”> <p

    class=“list__text”> Hello World </p> </li> <li class=“list__item”> <p class=“list__text”> Hello World </p> </li> <li class=“list__item is—exit”> <p class=“list__text”> Have a Nice Day </p> </li> </ul> Modern CSS
  107. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; } .list__item { align-content: center; &.is—exit { order: 1; flex-grow: 2; align-self: flex-start; } } Modern CSS
  108. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; } .list__item { align-content: center; &.is—exit { order: 1; flex-grow: 2; align-self: flex-start; } } Modern CSS
  109. the future of front end .list { display: flex; flex-direction:

    row; flex-wrap: wrap; justify-content: space-around; align-items: center; align-content: center; } .list__item { &.is—exit { order: 1; flex-grow: 2; align-self: flex-start; } } Modern CSS
  110. the future of front end FLEXBOX Caveats • Mixed width

    items can get tricky • Once you're in, you're in (Hotel California) Modern CSS
  111. the future of front end FLEXBOX Caveats • Mixed width

    items can get tricky • Once you're in, you're in (Hotel California) • Specific positioning of children can get tricky Modern CSS
  112. the future of front end FLEXBOX Caveats • Mixed width

    items can get tricky • Once you're in, you're in (Hotel California) • Specific positioning of children can get tricky • It's a lot of markup… (kind of) Modern CSS
  113. the future of front end FLEXBOX Caveats • Mixed width

    items can get tricky • Once you're in, you're in (Hotel California) • Specific positioning of children can get tricky • It's a lot of markup… (kind of) • Reorder may cause accessibility concerns 
 (use aria labels, roles, semantic and valid markup) Modern CSS
  114. the future of front end FLEXBOX PERFORMS BETTER THAN FLOAT

    BASED LAYOUTS.* * ACCORDING TO GOOGLE Modern CSS
  115. the future of front end FLEXBOX Soapbox • Watch out

    older Safari, IE.
 (Browser prefix or fallback support with floats) Modern CSS
  116. the future of front end FLEXBOX Soapbox • Watch out

    older Safari, IE.
 (Browser prefix or fallback support with floats)
 (Feature-query upcoming) Modern CSS
  117. the future of front end FLEXBOX Soapbox • Watch out

    older Safari, IE.
 (Browser prefix or fallback support with floats)
 (Feature-query upcoming) • Use in production? Absolutely. Modern CSS
  118. the future of front end FLEXBOX Soapbox • Watch out

    older Safari, IE.
 (Browser prefix or fallback support with floats)
 (Feature-query upcoming) • Use in production? Absolutely. • IMO Flex should be your default layout model. Modern CSS
  119. the future of front end GRID Layout model allowing a

    page to be divided into major regions, or allowing to define the relationship in terms of size, position, and layer, between parts of a control built from HTML primitives. Modern CSS
  120. the future of front end GRID Layout model allowing a

    page to be divided into major regions, or allowing to define the relationship in terms of size, position, and layer, between parts of a control built from HTML primitives. Created a two-dimensional grid system directly in CSS. Modern CSS
  121. the future of front end GRID Layout model allowing a

    page to be divided into major regions, or allowing to define the relationship in terms of size, position, and layer, between parts of a control built from HTML primitives. Created a two-dimensional grid system directly in CSS. Requires less media query intervention with really powerful functionality like auto layout, minmax(), repeat(), and auto-fill. Modern CSS
  122. the future of front end <main class=“container”> <header class=“header—main”>This is

    the Header</header> <article class=“container__body”> <h1>Hello World</h1> <p>This is a CSS Grid! Awesome!</p> <aside class=“sidebar”> <span class=“sidebar__title”>Search</span> . . . </aside> </article> <footer class=“footer—main”>This is the Footer</footer> </main> Modern CSS
  123. the future of front end <main class=“container”> <header class=“header—main”>This is

    the Header</header> <article class=“container__body”> <h1>Hello World</h1> <p>This is a CSS Grid! Awesome!</p> <aside class=“sidebar”> <span class=“sidebar__title”>Search</span> . . . </aside> </article> <footer class=“footer—main”>This is the Footer</footer> </main> Modern CSS
  124. the future of front end <main class=“container”> <header class=“header—main”>This is

    the Header</header> <article class=“container__body”> <h1>Hello World</h1> <p>This is a CSS Grid! Awesome!</p> <aside class=“sidebar”> <span class=“sidebar__title”>Search</span> . . . </aside> </article> <footer class=“footer—main”>This is the Footer</footer> </main> Modern CSS
  125. the future of front end <main class=“container”> <header class=“header—main”>This is

    the Header</header> <article class=“container__body”> <h1>Hello World</h1> <p>This is a CSS Grid! Awesome!</p> <aside class=“sidebar”> <span class=“sidebar__title”>Search</span> . . . </aside> </article> <footer class=“footer—main”>This is the Footer</footer> </main> Modern CSS
  126. the future of front end <main class=“container”> <header class=“header—main”>This is

    the Header</header> <article class=“container__body”> <h1>Hello World</h1> <p>This is a CSS Grid! Awesome!</p> <aside class=“sidebar”> <span class=“sidebar__title”>Search</span> . . . </aside> </article> <footer class=“footer—main”>This is the Footer</footer> </main> Modern CSS
  127. the future of front end <main class=“container”> <header class=“header—main”>This is

    the Header</header> <article class=“container__body”> <h1>Hello World</h1> <p>This is a CSS Grid! Awesome!</p> <aside class=“sidebar”> <span class=“sidebar__title”>Search</span> . . . </aside> </article> <footer class=“footer—main”>This is the Footer</footer> </main> Modern CSS
  128. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  129. the future of front end GRID Main Concepts • Grid

    Container • Grid Lines Modern CSS
  130. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  131. the future of front end .container { display: grid; grid-template-columns:

    auto 1fr; grid-template-rows: 150px minmax(300px, max-content) 100px; } Modern CSS
  132. the future of front end GRID Main Concepts • Grid

    Container • Grid Lines • Grid Areas Modern CSS
  133. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  134. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  135. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  136. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  137. the future of front end <main class=“container”> <header class=“header—main”>This is

    the Header</header> <article class=“container__body”> <h1>Hello World</h1> <p>This is a CSS Grid! Awesome!</p> <aside class=“sidebar”> <span class=“sidebar__title”>Search</span> . . . </aside> </article> <footer class=“footer—main”>This is the Footer</footer> </main> Modern CSS
  138. the future of front end .container { display: grid; grid-template-columns:

    auto 1fr; grid-template-rows: 150px minmax(300px, max-content) 100px; } .header—main { grid-area: } Modern CSS
  139. the future of front end <main class=“container”> <header class=“header—main”>This is

    the Header</header> <article class=“container__body”> <h1>Hello World</h1> <p>This is a CSS Grid! Awesome!</p> <aside class=“sidebar”> <span class=“sidebar__title”>Search</span> . . . </aside> </article> <footer class=“footer—main”>This is the Footer</footer> </main> Modern CSS
  140. the future of front end <main class=“container”> <header class=“header—main”>This is

    the Header</header> <article class=“container__body”> <h1>Hello World</h1> <p>This is a CSS Grid! Awesome!</p> <aside class=“sidebar”> <span class=“sidebar__title”>Search</span> . . . </aside> </article> <footer class=“footer—main”>This is the Footer</footer> </main> Modern CSS
  141. the future of front end <main class=“container”> <header class=“header—main”>This is

    the Header</header> <article class=“container__body”> <h1>Hello World</h1> <p>This is a CSS Grid! Awesome!</p> <aside class=“sidebar”> <span class=“sidebar__title”>Search</span> . . . </aside> </article> <footer class=“footer—main”>This is the Footer</footer> </main> Modern CSS
  142. the future of front end GRID Main Concepts • Grid

    Container • Grid Lines • Grid Areas • Grid Tracks Modern CSS
  143. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  144. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  145. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  146. the future of front end GRID Main Concepts • Grid

    Container • Grid Lines • Grid Areas • Grid Tracks • Grid Cell Modern CSS
  147. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  148. the future of front end GRID Main Concepts • Grid

    Container • Grid Lines • Grid Areas • Grid Tracks • Grid Cell • Gutters Modern CSS
  149. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  150. the future of front end GRID Main Concepts • Grid

    Container • Grid Lines • Grid Areas • Grid Tracks • Grid Cell • Gutters • Grid Axis Modern CSS
  151. the future of front end GRID Main Concepts • Grid

    Container • Grid Lines • Grid Areas • Grid Tracks • Grid Cell • Gutters • Grid Axis • Grid Row Modern CSS
  152. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  153. the future of front end GRID Main Concepts • Grid

    Container • Grid Lines • Grid Areas • Grid Tracks • Grid Cell • Gutters • Grid Axis • Grid Row • Grid Column Modern CSS
  154. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  155. the future of front end GRID Main Concepts • Grid

    Container • Grid Lines • Grid Areas • Grid Tracks • Grid Cell • Gutters • Grid Axis • Grid Row • Grid Column • Magic Modern CSS
  156. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  157. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  158. the future of front end .container { display: grid; grid-template-columns:

    auto 1fr; grid-template-rows: 150px minmax(300px, max-content) 100px; grid-template-areas: “header header” “body sidebar” “footer footer”; } Modern CSS
  159. the future of front end .container { display: grid; grid-template-columns:

    auto 1fr; grid-template-rows: 150px minmax(300px, max-content) 100px; grid-template-areas: “header header” “body sidebar” “footer footer”; } .sidebar { grid-row: 1; grid-column: header; } Modern CSS
  160. the future of front end GRID AND FLEXBOX Use either,

    or both, depending on your support level and layout requirements. 
 Modern CSS
  161. the future of front end GRID AND FLEXBOX Use either,

    or both, depending on your support level and layout requirements. 
 Prefer Grid for main layout architecture. Grid performance is much better than Flexbox for entire page layout paints. Modern CSS
  162. the future of front end GRID AND FLEXBOX Use either,

    or both, depending on your support level and layout requirements. 
 Prefer Grid for main layout architecture. Grid performance is much better than Flexbox for entire page layout paints. Prefer Flexbox for child element layout architecture. Flex box excels at child concerns. Modern CSS
  163. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  164. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  165. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  166. the future of front end MAIN AXIS THIS IS THE

    HEADER HELLO WORLD SEARCH THIS IS THE FOOTER THIS IS A CSS GRID! AWESOME! Modern CSS
  167. the future of front end CSS FEATURE QUERIES Creates a

    feature query for testing support of the specified css property, similar to what Modernizr does.
 Modern CSS
  168. the future of front end CSS FEATURE QUERIES Creates a

    feature query for testing support of the specified css property, similar to what Modernizr does.
 Off-loads feature testing responsibility to the browser, where it really belonged the whole time.
 Modern CSS
  169. the future of front end CSS FEATURE QUERIES Creates a

    feature query for testing support of the specified css property, similar to what Modernizr does.
 Off-loads feature testing responsibility to the browser, where it really belonged the whole time.
 Eliminates JavaScript dependency for feature testing. Modern CSS
  170. the future of front end <!DOCTYPE html> <html prefix="og: http://ogp.me/ns#"

    xmlns="http://www.w3.org/ 1999/xhtml" lang="en-US" xml:lang="en-US" class="no--js"> <head> . . . <script src=“../dist/scripts/modernizr.js”></script> </head> . . . </html> Modern CSS
  171. the future of front end <!DOCTYPE html> <html prefix="og: http://ogp.me/ns#"

    xmlns="http://www.w3.org/ 1999/xhtml" lang="en-US" xml:lang="en-US" class="no--js"> <head> . . . <script src=“../dist/scripts/modernizr.js”></script> </head> . . . </html> Modern CSS
  172. the future of front end <!DOCTYPE html> <html prefix="og: http://ogp.me/ns#"

    xmlns="http://www.w3.org/ 1999/xhtml" lang="en-US" xml:lang="en-US" class="no--js"> <head> . . . <script src=“../dist/scripts/modernizr.js”></script> </head> . . . </html> Modern CSS
  173. the future of front end <!DOCTYPE html> <html prefix="og: http://ogp.me/ns#"

    xmlns="http://www.w3.org/ 1999/xhtml" lang="en-US" xml:lang="en-US" class="no--js no—flexbox no—cssgrid no—clip-path“> <head> . . . <script src=“../dist/scripts/modernizr.js”></script> </head> . . . </html> Modern CSS
  174. the future of front end <!DOCTYPE html> <html prefix="og: http://ogp.me/ns#"

    xmlns="http://www.w3.org/ 1999/xhtml" lang="en-US" xml:lang="en-US" class="no--js no—flexbox no—cssgrid no—clip-path“> <head> . . . <script src=“../dist/scripts/modernizr.js”></script> </head> . . . </html> Modern CSS
  175. the future of front end .list { display: flex; }

    .no—flexbox { .list { display: block; @include clearfix; } } Modern CSS
  176. the future of front end .list { display: flex; }

    .no—flexbox { .list { display: block; @include clearfix; } .list__item { float: left; } } Modern CSS
  177. the future of front end .list { display: flex; }

    .no—flexbox { .list { display: block; @include clearfix; } .list__item { float: left; margin-right: 1.5em; } } Modern CSS
  178. the future of front end .list { display: flex; }

    .no—flexbox { .list { display: block; @include clearfix; } .list__item { float: left; margin-right: 1.5em; &:nth-child(3n + 1) { margin-right: 0; } } } Modern CSS
  179. the future of front end .list { display: block; @include

    clearfix; } @supports (display: flex) { .list { display: flex; } } Modern CSS
  180. the future of front end .list { display: block; @include

    clearfix; } @supports (display: flex) { .list { display: flex; } } Modern CSS
  181. the future of front end CSS FEATURE QUERIES Main Concepts

    • Supports feature • Not supports feature Modern CSS
  182. the future of front end .list { display: block; @include

    clearfix; } @supports (display: flex) { .list { display: flex; } } Modern CSS
  183. the future of front end @supports (display: flex) { .list

    { display: flex; } } @supports not (display: flex) { .list { display: block; @include clearfix; } .list__item { . . . } } Modern CSS
  184. the future of front end CSS FEATURE QUERIES Main Concepts

    • Supports feature • Not supports feature • Or supports feature Modern CSS
  185. the future of front end .list { display: block; @include

    clearfix; } @supports (display: flex) { .list { display: flex; } } Modern CSS
  186. the future of front end .list { display: block; @include

    clearfix; } @supports (display: -webkit-box) //iOS 6- or (display: -ms-flexbox) //10- or (display: -webkit-flex) //Safari 6.1+, iOS 7.1+ or (display: flex) { .list { display: flex; } } Modern CSS
  187. the future of front end CSS FEATURE QUERIES Main Concepts

    • Supports feature • Not supports feature • Or supports feature • And supports feature Modern CSS
  188. the future of front end .list { display: block; @include

    clearfix; } @supports (display: flex) and (justify-content: space-evenly) //FF only { .list { display: flex; justify-content: space-evenly; } } Modern CSS
  189. the future of front end CSS FEATURE QUERIES Main Concepts

    • Supports feature • Not supports feature • Or supports feature • And supports feature • JavaScript event Modern CSS
  190. the future of front end // boolValue = CSS.supports(propertyName, value);

    // boolValue = CSS.supports(supportCondition); Modern CSS
  191. the future of front end // boolValue = CSS.supports(propertyName, value);

    // boolValue = CSS.supports(supportCondition); Modern CSS
  192. the future of front end // boolValue = CSS.supports(propertyName, value);

    // boolValue = CSS.supports(supportCondition); const supportsFlex = CSS.supports(display, flex); Modern CSS
  193. the future of front end // boolValue = CSS.supports(propertyName, value);

    // boolValue = CSS.supports(supportCondition); const supportsFlex = CSS.supports(display, flex); if (supportsFlex) { // Do stuff } else { // Do alternate stuff } Modern CSS
  194. the future of front end CSS FEATURE QUERIES Caveats •

    Does add bloat to stylesheet. Modern CSS
  195. the future of front end CSS FEATURE QUERIES Caveats •

    Does add bloat to stylesheet. • Better replacement for Modernizr? It depends Modern CSS
  196. the future of front end CSS FEATURE QUERIES Caveats •

    Does add bloat to stylesheet. • Better replacement for Modernizr? It depends • Your mileage may vary with pre/post-processor (Libsass, Less, PostCSS) Modern CSS
  197. the future of front end CSS FEATURE QUERIES Caveats •

    Does add bloat to stylesheet. • Better replacement for Modernizr? It depends • Your mileage may vary with pre/post-processor (Libsass, Less, PostCSS) • No polyfills for older browser support. Modern CSS
  198. the future of front end CSS FEATURE QUERIES Soapbox •

    Carefully consider browser support requirements. Modern CSS
  199. the future of front end CSS FEATURE QUERIES Soapbox •

    Carefully consider browser support requirements. • Use in production? Yes, but also use Modernizr or similar for now if your browser support requires . Modern CSS
  200. the future of front end CSS FEATURE QUERIES Soapbox •

    Carefully consider browser support requirements. • Use in production? Yes, but also use Modernizr or similar for now if your browser support requires . • Edge saturation, IE 10/11 end of life soon. Modern CSS
  201. the future of front end CSS CLIP PATHS Creates a

    clipping region that defines what part of an element should be displayed. Those portions that are inside the region are shown, while those outside are hidden. Modern CSS
  202. the future of front end CSS CLIP PATHS Creates a

    clipping region that defines what part of an element should be displayed. Those portions that are inside the region are shown, while those outside are hidden. Great for angled section layouts, custom icons and custom logo art. Modern CSS
  203. the future of front end CSS CLIP PATHS Creates a

    clipping region that defines what part of an element should be displayed. Those portions that are inside the region are shown, while those outside are hidden. Great for angled section layouts, custom icons and custom logo art. The clip-path property replaced the deprecated clip property. Modern CSS
  204. the future of front end CSS CLIP PATHS Main Concepts

    • Clip with Image/SVG Modern CSS
  205. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; } } Modern CSS
  206. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; } } Modern CSS
  207. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: url(../images/sprites/sprite.svg#clip-mask-random } } Modern CSS
  208. the future of front end CSS CLIP PATHS Main Concepts

    • Clip with Image/SVG • Clip with Box value Modern CSS
  209. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: fill-box; } } Modern CSS
  210. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: stroke-box; } } Modern CSS
  211. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: view-box; } } Modern CSS
  212. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: margin-box; } } Modern CSS
  213. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: border-box; } } Modern CSS
  214. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: padding-box; } } Modern CSS
  215. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: content-box; } } Modern CSS
  216. the future of front end CSS CLIP PATHS Main Concepts

    • Clip with Image/SVG • Clip with Box value • Clip with Geometric values Modern CSS
  217. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 100%); } } Modern CSS
  218. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: inset(100px 50px); } } Modern CSS
  219. the future of front end CSS CLIP PATHS Main Concepts

    • Clip with Image/SVG • Clip with Box value • Clip with Geometric values • Clip with Box and Geometric values combined Modern CSS
  220. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: stroke-box circle(25% at 25% 25%); } } Modern CSS
  221. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: fill-box polygon(50% 0, 100% 50%, 50% 100%, 0 100%); } } Modern CSS
  222. the future of front end CSS CLIP PATHS Main Concepts

    • Clip with Image/SVG • Clip with Box value • Clip with Geometric values • Clip with Box and Geometric values combined • Clip with Global values Modern CSS
  223. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: inherit; } } Modern CSS
  224. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: initial; } } Modern CSS
  225. the future of front end .image__container { position: relative; display:

    flex; flex-direction: column; justify-content: center; max-width: 32em; img { display: block; width: 90%; margin: 0 auto; clip-path: unset; } } Modern CSS
  226. the future of front end CSS CLIP PATHS Caveats •

    No Edge or IE support may be blocker for some browser stacks. Modern CSS
  227. the future of front end CSS CLIP PATHS Caveats •

    No Edge or IE support may be blocker for some browser stacks. • Other than a custom image, there isn’t really a fallback or polyfill. Modern CSS
  228. the future of front end CSS CLIP PATHS Caveats •

    No Edge or IE support may be blocker for some browser stacks. • Other than a custom image, there isn’t really a fallback or polyfill. • Application on a large scale, many elements on a page, may impact performance. Modern CSS
  229. the future of front end CSS CLIP PATHS Soapbox •

    Use in production? Yes, but only if your fallback isn’t overly large, then it’s not worth it. Modern CSS
  230. the future of front end CSS CLIP PATHS Soapbox •

    Use in production? Yes, but only if your fallback isn’t overly large, then it’s not worth it. • Solid color simple geometric clips can fallback with inline svgs that scale. Modern CSS
  231. the future of front end CSS WRAPPING SHAPE-OUTSIDE Defines a

    shape around which inline content should wrap. Used with floats. Modern CSS
  232. the future of front end CSS WRAPPING SHAPE-OUTSIDE Defines a

    shape around which inline content should wrap. Used with floats. By default, inline content wraps around its margin box. Modern CSS
  233. the future of front end CSS WRAPPING SHAPE-OUTSIDE Defines a

    shape around which inline content should wrap. Used with floats. By default, inline content wraps around its margin box. Adds a nice custom touch to blog author avatars, thumbnails on card listings and, coupled with use of initial-letter, custom drop caps. Modern CSS
  234. the future of front end Main Concepts • Wrap on

    Keyword values • Wrap on Function values • Wrap on Image • Wrap on Gradient • Wrap on Global values CSS WRAPPING SHAPE-OUTSIDE Modern CSS
  235. the future of front end Main Concepts • Wrap on

    Keyword values • Wrap on Function values • Wrap on Image • Wrap on Gradient • Wrap on Global values CSS WRAPPING SHAPE-OUTSIDE Modern CSS
  236. the future of front end CSS WRAPPING SHAPE OUTSIDE Caveats

    • No Edge, IE, or FF support may be blocker for some browser stacks. Modern CSS
  237. the future of front end CSS WRAPPING SHAPE OUTSIDE Caveats

    • No Edge, IE, or FF support may be blocker for some browser stacks. • Other than a custom image, there isn’t really a fallback or polyfill. Modern CSS
  238. the future of front end CSS WRAPPING SHAPE OUTSIDE Soapbox

    • Use in production? Yes, but only if your fallback isn’t overly large, then it’s not worth it. Modern CSS
  239. the future of front end CSS WRAPPING SHAPE OUTSIDE Soapbox

    • Use in production? Yes, but only if your fallback isn’t overly large, then it’s not worth it. • Solid color simple geometric clips can fallback with inline svgs that scale. Modern CSS
  240. the future of front end CSS DROP CAPS INITIAL-LETTER Property

    that selects the first letter of the element where it is applied and specifies the number of lines the letter occupies. Modern CSS
  241. the future of front end CSS DROP CAPS INITIAL-LETTER Property

    that selects the first letter of the element where it is applied and specifies the number of lines the letter occupies. Can support dropped, raised, and sunken initial letters. Modern CSS
  242. the future of front end Main Concepts • Measure with

    Numeric values CSS DROP CAPS INITIAL-LETTER Modern CSS
  243. the future of front end Modern CSS .text__block { display:

    block; max-width: 680px; &::first-letter { initial-letter: 3; } }
  244. the future of front end Modern CSS .text__block { display:

    block; max-width: 680px; &::first-letter { initial-letter: 3; } }
  245. the future of front end Modern CSS .text__block { display:

    block; max-width: 680px; &::first-letter { initial-letter: 3; } }
  246. the future of front end Modern CSS .text__block { display:

    block; max-width: 680px; &::first-letter { initial-letter: 3.5; } }
  247. the future of front end Modern CSS .text__block { display:

    block; max-width: 680px; &::first-letter { initial-letter: 3.5 2; //3.5 lines height, sink by 2 lines } }
  248. the future of front end Main Concepts • Measure with

    Numeric values • Measure with Global values CSS DROP CAPS INITIAL-LETTER Modern CSS
  249. the future of front end Modern CSS .text__block { display:

    block; max-width: 680px; &::first-letter { initial-letter: initial; } }
  250. the future of front end Modern CSS .text__block { display:

    block; max-width: 680px; &::first-letter { initial-letter: inherit; } }
  251. the future of front end Modern CSS .text__block { display:

    block; max-width: 680px; &::first-letter { initial-letter: unset; } }
  252. the future of front end CSS DROP CAPS INITIAL-LETTER Soapbox

    • Use in production? Yes, but must also use fallbacks. Modern CSS
  253. the future of front end CSS DROP CAPS INITIAL-LETTER Soapbox

    • Use in production? Yes, but must also use fallbacks. • Firefox, Edge considering support, hopeful for Chrome. Modern CSS
  254. the future of front end CSS DROP CAPS INITIAL-LETTER Soapbox

    • Use in production? Yes, but must also use fallbacks. • Firefox, Edge considering support, hopeful for Chrome. • Great ongoing conversation W3C page. Modern CSS
  255. the future of front end Layout spec that allows easy

    definition of multiple columns of text - just like in newspapers. CSS MULTI COLUMNS Modern CSS
  256. the future of front end Layout spec that allows easy

    definition of multiple columns of text - just like in newspapers. Content will flow into subsequent columns as width and height of parent is restricted. CSS MULTI COLUMNS Modern CSS
  257. the future of front end .text-block.is--two-columns .text-block { column-count: 2;

    column-gap: 40px; list-style-position: inside; page-break-inside: avoid; break-inside: avoid; } Modern CSS
  258. the future of front end .text-block.is--two-columns .text-block { column-count: 2;

    column-gap: 40px; list-style-position: inside; page-break-inside: avoid; break-inside: avoid; } Modern CSS
  259. the future of front end Main Concepts • Column Count

    • Column Gap CSS MULTI COLUMNS Modern CSS
  260. the future of front end .text-block.is--two-columns .text-block { column-count: 2;

    column-gap: 40px; list-style-position: inside; page-break-inside: avoid; break-inside: avoid; } Modern CSS
  261. the future of front end Main Concepts • Column Count

    • Column Gap • Column Rule CSS MULTI COLUMNS Modern CSS
  262. the future of front end .text-block.is--two-columns .text-block { column-count: 2;

    column-gap: 40px; column-rule: 1px solid $color-black; list-style-position: inside; page-break-inside: avoid; break-inside: avoid; } Modern CSS
  263. the future of front end Main Concepts • Column Count

    • Column Gap • Column Rule • Column Span CSS MULTI COLUMNS Modern CSS
  264. the future of front end .text-block.is--two-columns .text-block { column-count: 2;

    column-gap: 40px; list-style-position: inside; page-break-inside: avoid; break-inside: avoid; } Modern CSS
  265. the future of front end .text-block.is--two-columns .text-block { column-count: 3;

    column-gap: 40px; list-style-position: inside; page-break-inside: avoid; break-inside: avoid; } Modern CSS
  266. the future of front end .text-block.is--two-columns .text-block { column-count: 3;

    column-gap: 40px; column-span: 2; list-style-position: inside; page-break-inside: avoid; break-inside: avoid; } Modern CSS
  267. the future of front end Main Concepts • Column Count

    • Column Gap • Column Rule • Column Span • Column Width CSS MULTI COLUMNS Modern CSS
  268. the future of front end .text-block.is--two-columns .text-block { column-count: 2;

    column-gap: 40px; column-width: calc(50% - 20px); list-style-position: inside; page-break-inside: avoid; break-inside: avoid; } Modern CSS
  269. the future of front end Main Concepts • Column Count

    • Column Gap • Column Rule • Column Span • Column Width • Helpful tips CSS MULTI COLUMNS Modern CSS
  270. the future of front end .text-block.is--two-columns .text-block { column-count: 2;

    column-gap: 40px; list-style-position: inside; page-break-inside: avoid; break-inside: avoid; } Modern CSS
  271. the future of front end .text-block.is--two-columns .text-block { column-count: 2;

    column-gap: 40px; list-style-position: inside; page-break-inside: avoid; break-inside: avoid; } Modern CSS
  272. the future of front end Included as part of the

    CSS Filters specification. CSS BACKDROP FILTER Modern CSS
  273. the future of front end Included as part of the

    CSS Filters specification. Similarly to the filter property, it inherits all the filtering functions such as grayscale(), blur(), and sepia(). CSS BACKDROP FILTER Modern CSS
  274. the future of front end Included as part of the

    CSS Filters specification. Similarly to the filter property, it inherits all the filtering functions such as grayscale(), blur(), and sepia(). Applies the affects to the elements underneath the selected element, therefore to see the effect you must make the element or its background at least partially transparent. CSS BACKDROP FILTER Modern CSS
  275. the future of front end Main Concepts • Filter with

    Function values CSS BACKDROP FILTER Modern CSS
  276. the future of front end <aside class=“card__thumbnail”> <button type=“button” class=“show__image”>

    <span class=“show__message”> Click to load this awesome image </span> </button> </aside> Modern CSS
  277. the future of front end <aside class=“card__thumbnail”> <button type=“button” class=“show__image”>

    <span class=“show__message”> Click to load this awesome image </span> </button> </aside> Modern CSS
  278. the future of front end <aside class=“card__thumbnail”> <button type=“button” class=“show__image”>

    <span class=“show__message”> Click to load this awesome image </span> </button> </aside> Modern CSS
  279. the future of front end <aside class=“card__thumbnail”> <button type=“button” class=“show__image”>

    <span class=“show__message”> Click to load this awesome image </span> </button> </aside> Modern CSS
  280. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: blur(4px); } } Modern CSS
  281. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: blur(4px); } } Modern CSS
  282. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: blur(4px); } } Modern CSS
  283. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: blur(4px); } } Modern CSS
  284. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: blur(4px); } } Modern CSS
  285. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: blur(4px); } } Modern CSS
  286. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: blur(4px); } } Modern CSS
  287. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: blur(4px); } } Modern CSS
  288. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: blur(4px); } } Modern CSS
  289. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: brightness(60%); } } Modern CSS
  290. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: contrast(40%); } } Modern CSS
  291. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: drop-shadow(4px 4px 10px $color-white); } } Modern CSS
  292. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: grayscale(30%); } } Modern CSS
  293. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: hue-rotate(120deg); } } Modern CSS
  294. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: invert(70%); } } Modern CSS
  295. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: opacity(20%); } } Modern CSS
  296. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: sepia(90%); } } Modern CSS
  297. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: saturate(80%); } } Modern CSS
  298. the future of front end Main Concepts • Filter with

    Function values • Filter with Image/SVG CSS BACKDROP FILTER Modern CSS
  299. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: url(../images/sprites/sprite.svg#eagle) no-repeat; } } Modern CSS
  300. the future of front end Main Concepts • Filter with

    Function values • Filter with Image/SVG • Apply multiple filters • Filter with Global values CSS BACKDROP FILTER Modern CSS
  301. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: url(../images/sprites/sprite.svg#eagle) no-repeat blur(4px) saturate(70%); } } Modern CSS
  302. the future of front end Main Concepts • Filter with

    Function values • Filter with Image/SVG • Apply multiple filters • Filter with Global values CSS BACKDROP FILTER Modern CSS
  303. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: inherit; } } Modern CSS
  304. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: initial; } } Modern CSS
  305. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; backdrop-filter: unset; } } Modern CSS
  306. the future of front end CSS BACKDROP FILTER Soapbox •

    Use in production? Yes if it’s not crucial to not have a fallback. Modern CSS
  307. the future of front end CSS BACKDROP FILTER Soapbox •

    Use in production? Yes if it’s not crucial to not have a fallback. • Low current browser support could be blocker for some browser stacks. Modern CSS
  308. the future of front end CSS BACKDROP FILTER Soapbox •

    Use in production? Yes if it’s not crucial to not have a fallback. • Low current browser support could be blocker for some browser stacks. • No information yet on performance impact, probably very low. Modern CSS
  309. the future of front end Property that describes how the

    element's background images should blend with each other and the element's background color. CSS BACKGROUND BLEND MODES Modern CSS
  310. the future of front end Property that describes how the

    element's background images should blend with each other and the element's background color. Blending modes should be defined in the same order as the background-image CSS property. CSS BACKGROUND BLEND MODES Modern CSS
  311. the future of front end Property that describes how the

    element's background images should blend with each other and the element's background color. Blending modes should be defined in the same order as the background-image CSS property. Will be excellent for background images effects. CSS BACKGROUND BLEND MODES Modern CSS
  312. the future of front end Main Concepts • Blend with

    Keyword values CSS BACKGROUND BLEND MODES Modern CSS
  313. the future of front end <aside class=“card__thumbnail”> <button type=“button” class=“show__image”>

    <span class=“show__message”> Click to load this awesome image </span> </button> </aside> Modern CSS
  314. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; } } Modern CSS
  315. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: multiply; } } Modern CSS
  316. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: screen; } } Modern CSS
  317. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: overlay; } } Modern CSS
  318. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: darken; } } Modern CSS
  319. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: lighten; } } Modern CSS
  320. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: color-dodge; } } Modern CSS
  321. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: color-burn; } } Modern CSS
  322. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: hard-light; } } Modern CSS
  323. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: soft-light; } } Modern CSS
  324. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: difference; } } Modern CSS
  325. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: exclusion; } } Modern CSS
  326. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: hue; } } Modern CSS
  327. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: saturation; } } Modern CSS
  328. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: color; } } Modern CSS
  329. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: luminosity; } } Modern CSS
  330. the future of front end Main Concepts • Blend with

    Keyword values • Blend with Global values CSS BACKGROUND BLEND MODES Modern CSS
  331. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: initial; } } Modern CSS
  332. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: inherit; } } Modern CSS
  333. the future of front end .card__thumbnail { position: relative; display:

    flex; align-items: center; background: url(../images/eagle-attacks-trump.jpg) no-repeat 0 0; background-size: cover; .show__image { display: block; width: 50%; height: 25%; mix-blend-mode: unset; } } Modern CSS
  334. the future of front end CSS BACKGROUND BLEND MODES Soapbox

    • Use in production? Yes if it’s not crucial to not have a fallback. Modern CSS
  335. the future of front end CSS BACKGROUND BLEND MODES Soapbox

    • Use in production? Yes if it’s not crucial to not have a fallback. • No Edge, IE support could be blocker for some browser stacks. Modern CSS
  336. the future of front end CSS BACKGROUND BLEND MODES Soapbox

    • Use in production? Yes if it’s not crucial to not have a fallback. • No Edge, IE support could be blocker for some browser stacks. • No information yet on performance impact, probably very low. Modern CSS
  337. the future of front end Entities defined by authors which

    contain specific values to be reused throughout a document. CSS VARIABLES Modern CSS
  338. the future of front end Entities defined by authors which

    contain specific values to be reused throughout a document. Intended to replace variables provided by CSS pre/post processors (SASS, LESS, PostCSS) CSS VARIABLES Modern CSS
  339. the future of front end :root { --main-bg-color: brown; }

    .element { background-color: var(--main-bg-color); } Modern CSS
  340. the future of front end :root { --main-bg-color: brown; }

    .element { background-color: var(--main-bg-color); } Modern CSS
  341. the future of front end :root { --main-bg-color: brown; }

    .element { background-color: var(--main-bg-color); } Modern CSS
  342. the future of front end CSS VARIABLES Soapbox • Use

    in production? Yes, but add fallbacks for older IE for now. Modern CSS
  343. the future of front end CSS VARIABLES Soapbox • Use

    in production? Yes, but add fallbacks for older IE for now. • Any use of variables will DRY your stylesheets. Modern CSS
  344. the future of front end CSS VARIABLES Soapbox • Use

    in production? Yes, but add fallbacks for older IE for now. • Any use of variables will DRY your stylesheets. • Essential for component/module based systems. Modern CSS
  345. the future of front end MODERN CSS • Flexbox •

    Grid • How Flexbox and Grid work together • Feature Queries (@supports) • Clip paths • Initial letter • Shape outside • Multi columns • Backdrop filter • Background blend modes • Variables (in pure css!) Modern CSS
  346. the future of front end HTML5 APIS • Intersection observer

    • Resize observer • Mutation observer HTML5 Apis
  347. the future of front end HTML5 APIS • Intersection observer

    • Resize observer • Mutation observer • Performance observer HTML5 Apis
  348. the future of front end HTML5 APIS • Intersection observer

    • Resize observer • Mutation observer • Performance observer • Fetch API HTML5 Apis
  349. the future of front end HTML5 APIS • Intersection observer

    • Resize observer • Mutation observer • Performance observer • Fetch API • Push API HTML5 Apis
  350. the future of front end HTML5 APIS • Intersection observer

    • Resize observer • Mutation observer • Performance observer • Fetch API • Push API • Payment handler and request APIs HTML5 Apis
  351. the future of front end HTML5 APIS • Intersection observer

    • Resize observer • Mutation observer • Performance observer • Fetch API • Push API • Payment handler and request APIs • PWA interest - Vibration, Screen Orientation, Page Transition, Page Visibility, Fullscreen, Web Bluetooth APIs HTML5 Apis
  352. the future of front end INTERSECTION OBSERVER Provides a way

    to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport. HTML5 Apis
  353. the future of front end INTERSECTION OBSERVER Provides a way

    to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport. Eliminates required use of expensive event handlers and loops calling expensive methods like Element.getBoundingClientRect() to build up the needed information for every element affected. HTML5 Apis
  354. the future of front end const options = { root:

    document.querySelector('#scrollArea'), rootMargin: '0px', threshold: 1.0 } const observer = new IntersectionObserver(callback, options); HTML5 Apis
  355. the future of front end const options = { root:

    document.querySelector('#scrollArea'), rootMargin: '0px', threshold: 1.0 } const observer = new IntersectionObserver(callback, options); HTML5 Apis
  356. the future of front end const options = { root:

    document.querySelector('#scrollArea'), rootMargin: '0px', threshold: 1.0 } const observer = new IntersectionObserver(callback, options); HTML5 Apis
  357. the future of front end const options = { root:

    document.querySelector('#scrollArea'), rootMargin: '0px', threshold: 1.0 } const observer = new IntersectionObserver(callback, options); HTML5 Apis
  358. the future of front end const options = { root:

    document.querySelector('#scrollArea'), rootMargin: '0px', threshold: 1.0 } const observer = new IntersectionObserver(callback, options); HTML5 Apis
  359. the future of front end const options = { root:

    document.querySelector('#scrollArea'), rootMargin: '0px', threshold: 1.0 } const observer = new IntersectionObserver(callback, options); HTML5 Apis
  360. the future of front end const options = { root:

    document.querySelector('#scrollArea'), rootMargin: '0px', threshold: 1.0 } const observer = new IntersectionObserver(callback, options); const target = document.querySelector('#listItem'); observer.observe(target); HTML5 Apis
  361. the future of front end const options = { root:

    document.querySelector('#scrollArea'), rootMargin: '0px', threshold: 1.0 } const observer = new IntersectionObserver(callback, options); const target = document.querySelector('#listItem'); observer.observe(target); HTML5 Apis
  362. the future of front end INTERSECTION OBSERVER Soapbox • Use

    in production? Yes, but add fallbacks for unsupported browsers for now. HTML5 Apis
  363. the future of front end INTERSECTION OBSERVER Soapbox • Use

    in production? Yes, but add fallbacks for unsupported browsers for now. • When used, performance gains are great over alternate solutions HTML5 Apis
  364. the future of front end RESIZE OBSERVER Will allow you

    to be notified when an element’s content rectangle has changed its size, and react accordingly. HTML5 Apis
  365. the future of front end RESIZE OBSERVER Will allow you

    to be notified when an element’s content rectangle has changed its size, and react accordingly. Eliminates required attachment of a listener to the document’s resize event to get notified of any change of the viewport’s dimensions, then triggering changes to child elements, all expensive operations. HTML5 Apis
  366. the future of front end const ro = new ResizeObserver(

    entries => { for (let entry of entries) { const cr = entry.contentRect; console.log('Element:', entry.target); console.log(`Element size: ${cr.width}px x ${cr.height}px`); console.log(`Element padding: ${cr.top}px ; ${cr.left}px`); } }); HTML5 Apis
  367. the future of front end const ro = new ResizeObserver(

    entries => { for (let entry of entries) { const cr = entry.contentRect; console.log('Element:', entry.target); console.log(`Element size: ${cr.width}px x ${cr.height}px`); console.log(`Element padding: ${cr.top}px ; ${cr.left}px`); } }); HTML5 Apis
  368. the future of front end const ro = new ResizeObserver(

    entries => { for (let entry of entries) { const cr = entry.contentRect; console.log('Element:', entry.target); console.log(`Element size: ${cr.width}px x ${cr.height}px`); console.log(`Element padding: ${cr.top}px ; ${cr.left}px`); } }); HTML5 Apis
  369. the future of front end const ro = new ResizeObserver(

    entries => { for (let entry of entries) { const cr = entry.contentRect; console.log('Element:', entry.target); console.log(`Element size: ${cr.width}px x ${cr.height}px`); console.log(`Element padding: ${cr.top}px ; ${cr.left}px`); } }); // Observe one or multiple elements ro.observe(someElement); HTML5 Apis
  370. the future of front end RESIZE OBSERVER Soapbox • Use

    in production? Not yet since no evergreen browsers support at the moment. • Keep in your back pocket for later use, possibly mid-2018. HTML5 Apis
  371. the future of front end MUTATION OBSERVER Mutation Observers expose

    callback functions that can be delivered after multiple changes in the DOM (attribute, child nodes, etc.) HTML5 Apis
  372. the future of front end MUTATION OBSERVER Mutation Observers expose

    callback functions that can be delivered after multiple changes in the DOM (attribute, child nodes, etc.) Replaces slow, expensive, and error prone Mutation Events (DOMNodeRemoved, DOMAttrModified, etc.) HTML5 Apis
  373. the future of front end MUTATION OBSERVER Mutation Observers expose

    callback functions that can be delivered after multiple changes in the DOM (attribute, child nodes, etc.) Replaces slow, expensive, and error prone Mutation Events (DOMNodeRemoved, DOMAttrModified, etc.) Evergreen since 2013, becoming popular with performance at forefront. HTML5 Apis
  374. the future of front end const observer = new MutationObserver(function(mutations)

    { mutations.forEach(function(mutation) { console.log(mutation.type); }); }); // Notify me of everything! const observerConfig = { attributes: true, childList: true, characterData: true }; // Node, config // In this case we'll listen to all changes to body and child nodes const targetNode = document.body; observer.observe(targetNode, observerConfig); HTML5 Apis
  375. the future of front end const observer = new MutationObserver(function(mutations)

    { mutations.forEach(function(mutation) { console.log(mutation.type); }); }); // Notify me of everything! const observerConfig = { attributes: true, childList: true, characterData: true }; // Node, config // In this case we'll listen to all changes to body and child nodes const targetNode = document.body; observer.observe(targetNode, observerConfig); HTML5 Apis
  376. the future of front end const observer = new MutationObserver(function(mutations)

    { mutations.forEach(function(mutation) { console.log(mutation.type); }); }); // Notify me of everything! const observerConfig = { attributes: true, childList: true, characterData: true }; // Node, config // In this case we'll listen to all changes to body and child nodes const targetNode = document.body; observer.observe(targetNode, observerConfig); HTML5 Apis
  377. the future of front end const observer = new MutationObserver(function(mutations)

    { mutations.forEach(function(mutation) { console.log(mutation.type); }); }); // Notify me of everything! const observerConfig = { attributes: true, childList: true, characterData: true }; // Node, config // In this case we'll listen to all changes to body and child nodes const targetNode = document.body; observer.observe(targetNode, observerConfig); HTML5 Apis
  378. the future of front end const observer = new MutationObserver(function(mutations)

    { mutations.forEach(function(mutation) { console.log(mutation.type); }); }); // Notify me of everything! const observerConfig = { attributes: true, childList: true, characterData: true }; // Node, config // In this case we'll listen to all changes to body and child nodes const targetNode = document.body; observer.observe(targetNode, observerConfig); HTML5 Apis
  379. the future of front end const observer = new MutationObserver(function(mutations)

    { mutations.forEach(function(mutation) { console.log(mutation.type); }); }); // Notify me of everything! const observerConfig = { attributes: true, childList: true, characterData: true }; // Node, config // In this case we'll listen to all changes to body and child nodes const targetNode = document.body; observer.observe(targetNode, observerConfig); HTML5 Apis
  380. the future of front end PERFORMANCE OBSERVER Provides an interface

    for browsers to provide programmatic access to low level timing data, exposing access for third party performance analysis and visualization tools, offline and custom performance analysis, and performance assessment integrated into IDEs and other developer tools. HTML5 Apis
  381. the future of front end PERFORMANCE OBSERVER Provides an interface

    for browsers to provide programmatic access to low level timing data, exposing access for third party performance analysis and visualization tools, offline and custom performance analysis, and performance assessment integrated into IDEs and other developer tools. Bonus: asynchronously gathers information from browser, preferring to dispatch during idle time for efficiency. HTML5 Apis
  382. the future of front end function perf_observer(list, observer) { //

    Process the "measure" event } var observer2 = new PerformanceObserver(perf_observer); observer2.observe({entryTypes: ["measure"]}); HTML5 Apis
  383. the future of front end function perf_observer(list, observer) { //

    Process the "measure" event } const observer2 = new PerformanceObserver(perf_observer); observer2.observe({entryTypes: ["measure"]}); HTML5 Apis
  384. the future of front end function perf_observer(list, observer) { //

    Process the "measure" event } const observer2 = new PerformanceObserver(perf_observer); observer2.observe({entryTypes: ["measure"]}); HTML5 Apis
  385. the future of front end function perf_observer(list, observer) { //

    Process the "measure" event } const observer2 = new PerformanceObserver(perf_observer); observer2.observe({entryTypes: ["measure"]}); HTML5 Apis
  386. the future of front end FETCH API Replacement for XMLHttpRequest

    (AJAX), providing a generic definition of Request and Response objects (and other things involved with network requests.) HTML5 Apis
  387. the future of front end FETCH API Replacement for XMLHttpRequest

    (AJAX), providing a generic definition of Request and Response objects (and other things involved with network requests.) 
 Will allow them to be used wherever they are needed in the future, whether it’s for service workers, Cache API and other similar things that handle or modify requests and responses. HTML5 Apis
  388. the future of front end FETCH API Replacement for XMLHttpRequest

    (AJAX), providing a generic definition of Request and Response objects (and other things involved with network requests.) 
 Will allow them to be used wherever they are needed in the future, whether it’s for service workers, Cache API and other similar things that handle or modify requests and responses. Bonus: The API is completely Promise-based. HTML5 Apis
  389. the future of front end Provides a standard way to

    initiate payment requests from Web pages and applications. PAYMENT HANDLER AND REQUEST APIS HTML5 Apis
  390. the future of front end Provides a standard way to

    initiate payment requests from Web pages and applications. User agents implementing the API prompt the user to select a way to handle the payment request, after which the user agent returns a payment response to the originating site. PAYMENT HANDLER AND REQUEST APIS HTML5 Apis
  391. the future of front end Provides a standard way to

    initiate payment requests from Web pages and applications. User agents implementing the API prompt the user to select a way to handle the payment request, after which the user agent returns a payment response to the originating site. This specification defines capabilities that enable Web applications to handle payment requests. PAYMENT HANDLER AND REQUEST APIS HTML5 Apis
  392. the future of front end Gives web applications the ability

    to receive messages pushed to them from a server, whether or not the web app is in the foreground, or even currently loaded, on a user agent. PUSH API HTML5 Apis
  393. the future of front end Gives web applications the ability

    to receive messages pushed to them from a server, whether or not the web app is in the foreground, or even currently loaded, on a user agent. This lets developers deliver asynchronous notifications and updates to users that opt in, resulting in better engagement with timely new content. PUSH API HTML5 Apis
  394. the future of front end PWA AWESOMENESS Vibration, Screen Orientation,

    Page Transition, Page Visibility, Fullscreen, Web Bluetooth APIs HTML5 Apis
  395. the future of front end User experiences that have the

    reach of the web, and are: WHAT IS A PROGRESSIVE WEB APP? HTML5 Apis
  396. the future of front end User experiences that have the

    reach of the web, and are: 1) Reliable - Load instantly and never show the downasaur, even in uncertain network conditions. WHAT IS A PROGRESSIVE WEB APP? HTML5 Apis
  397. the future of front end User experiences that have the

    reach of the web, and are: 1) Reliable - Load instantly and never show the downasaur, even in uncertain network conditions. 2) Fast - Respond quickly to user interactions with silky smooth animations and no janky scrolling. WHAT IS A PROGRESSIVE WEB APP? HTML5 Apis
  398. the future of front end User experiences that have the

    reach of the web, and are: 1) Reliable - Load instantly and never show the downasaur, even in uncertain network conditions. 2) Fast - Respond quickly to user interactions with silky smooth animations and no janky scrolling. 3) Engaging - Feel like a natural app on the device, with an immersive user experience. WHAT IS A PROGRESSIVE WEB APP? HTML5 Apis
  399. the future of front end When launched from the user’s

    home screen, service workers enable a Progressive Web App to load instantly, regardless of the network state. RELIABLE HTML5 Apis
  400. the future of front end When launched from the user’s

    home screen, service workers enable a Progressive Web App to load instantly, regardless of the network state. A service worker, written in JavaScript, is like a client-side proxy and puts you in control of the cache and how to respond to resource requests. By pre-caching key resources you can eliminate the dependence on the network, ensuring an instant and reliable experience for your users. RELIABLE HTML5 Apis
  401. the future of front end 53% of users will abandon

    a site if it takes longer than 3 seconds to load! And once loaded, users expect them to be fast—no janky scrolling or slow-to-respond interfaces. FAST HTML5 Apis
  402. the future of front end Progressive Web Apps are installable

    and live on the user's home screen, without the need for an app store. They offer an immersive full screen experience with help from a web app manifest file and can even re-engage users with web push notifications. ENGAGING HTML5 Apis
  403. the future of front end Progressive Web Apps are installable

    and live on the user's home screen, without the need for an app store. They offer an immersive full screen experience with help from a web app manifest file and can even re-engage users with web push notifications. The Web App Manifest allows you to control how your app appears and how it's launched. You can specify home screen icons, the page to load when the app is launched, screen orientation, and even whether or not to show the browser chrome. ENGAGING HTML5 Apis
  404. the future of front end Most modern mobile devices include

    vibration hardware, which lets software code provide physical feedback to the user by causing the device to shake. VIBRATION API HTML5 Apis
  405. the future of front end Most modern mobile devices include

    vibration hardware, which lets software code provide physical feedback to the user by causing the device to shake. The Vibration API offers Web apps the ability to access this hardware, allowing use to enhance UI actions and notifications. VIBRATION API HTML5 Apis
  406. the future of front end The Screen Orientation API provides

    the ability to read the screen orientation type and angle, to be informed when the screen orientation state changes, and be able to lock the screen orientation to a specific state. SCREEN ORIENTATION API HTML5 Apis
  407. the future of front end Interface representing events providing information

    related to transitions. PAGE TRANSITION API HTML5 Apis
  408. the future of front end Interface representing events providing information

    related to transitions. Intended to provide replacement for convoluted AJAX, Push state, and History API solutions now in use to mimic SPA functionality on page changes. PAGE TRANSITION API HTML5 Apis
  409. the future of front end Lets you know when a

    webpage is visible or in focus. PAGE VISIBILITY API HTML5 Apis
  410. the future of front end Lets you know when a

    webpage is visible or in focus. Particularly useful for saving resources by giving developers the opportunity to not perform unnecessary tasks when the webpage is not visible. PAGE VISIBILITY API HTML5 Apis
  411. the future of front end Lets you know when a

    webpage is visible or in focus. Particularly useful for saving resources by giving developers the opportunity to not perform unnecessary tasks when the webpage is not visible. Can also allow garbage collection and other low level tasks to run when not visible. PAGE VISIBILITY API HTML5 Apis
  412. the future of front end Provides an easy way for

    web content to be presented using the user's entire screen. FULLSCREEN API HTML5 Apis
  413. the future of front end Provides an easy way for

    web content to be presented using the user's entire screen. Lets you easily direct the browser to make an element and its children, if any, occupy the fullscreen, eliminating all browser user interface and other applications from the screen for the duration. FULLSCREEN API HTML5 Apis
  414. the future of front end Gives web applications the ability

    to request and connect to nearby Bluetooth devices, read/write Bluetooth characteristics, receive GATT Notifications, know when a Bluetooth device gets disconnected, and even read and write to Bluetooth descriptors. WEB BLUETOOTH API HTML5 Apis
  415. the future of front end Gives web applications the ability

    to request and connect to nearby Bluetooth devices, read/write Bluetooth characteristics, receive GATT Notifications, know when a Bluetooth device gets disconnected, and even read and write to Bluetooth descriptors. As a security feature, discovering Bluetooth devices must be triggered by a user gesture such as a touch or a mouse click. Also requires HTTPS/TLS. WEB BLUETOOTH API HTML5 Apis
  416. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display The Future
  417. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky The Future
  418. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky • :matches and :not selectors The Future
  419. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky • :matches and :not selectors • CSS element queries The Future
  420. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky • :matches and :not selectors • CSS element queries • Css object fit and 
 object-position The Future
  421. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky • :matches and :not selectors • CSS element queries • Css object fit and 
 object-position • CSS image-set The Future
  422. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky • :matches and :not selectors • CSS element queries • Css object fit and 
 object-position • CSS image-set • CSS media query ranges The Future
  423. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky • :matches and :not selectors • CSS element queries • Css object fit and 
 object-position • CSS image-set • CSS media query ranges • CSS color-mod and gray The Future
  424. the future of front end THE FUTURE • Review CSS

    WG and stages • Font display • Position sticky • :matches and :not selectors • CSS element queries • Css object fit and 
 object-position • CSS image-set • CSS media query ranges • CSS color-mod and gray • CSS nesting and when/else rules The Future
  425. the future of front end Working group created by the

    World Wide Web Consortium (W3C) in 1997 to tackle issues that had not been addressed with CSS level 1. CSS WORKING GROUP The Future
  426. the future of front end Working group created by the

    World Wide Web Consortium (W3C) in 1997 to tackle issues that had not been addressed with CSS level 1. The number of members reached 125 in April 2017. CSS WORKING GROUP The Future
  427. the future of front end Working group created by the

    World Wide Web Consortium (W3C) in 1997 to tackle issues that had not been addressed with CSS level 1. The number of members reached 125 in April 2017. Adopts a significant role into the W3C project of developing the Web standards, including representatives from all major browser groups. CSS WORKING GROUP The Future
  428. the future of front end Staging processes allow developers to

    accomplish real things and get involved in the creation of standards, testing, feedback, and new use cases. CSS WG STAGES The Future
  429. the future of front end Staging processes allow developers to

    accomplish real things and get involved in the creation of standards, testing, feedback, and new use cases. Current staging process reflects the real-life stability of new CSS features. CSS WG STAGES The Future
  430. the future of front end An Editor’s Draft championed* by

    a non-CSSWG member. It should be considered highly unstable and subject to change. CSS WG STAGES STAGE 0 “ASPIRATIONAL” The Future
  431. the future of front end An Editor’s Draft championed* by

    a non-CSSWG member. It should be considered highly unstable and subject to change. *A champion is the person responsible for advocating a new feature to completion, performing the legwork necessary to ensure the concerns of interested parties are identified and incorporated into the proposal. Once the CSSWG hosts the draft for a feature, its champion is recognized as the organization itself. CSS WG STAGES STAGE 0 “ASPIRATIONAL” The Future
  432. the future of front end An Editor’s Draft championed by

    a CSSWG member. It should still be considered highly unstable and subject to change. CSS WG STAGES STAGE 1 “ENTHUSIASTIC” The Future
  433. the future of front end An Editor’s Draft hosted by

    the CSSWG or W3C. It should still be considered highly unstable and subject to change. CSS WG STAGES STAGE 2 “EXPERIMENTAL” The Future
  434. the future of front end A Working Draft hosted by

    the CSSWG or W3C and requiring implementations to move forward. It should be considered stable and subject to little change. It is still subject to rejection as a standard. CSS WG STAGES STAGE 3 “ALLOWABLE” The Future
  435. the future of front end A Candidate Recommendation hosted by

    the CSSWG or W3C and being implemented by at least 2 recognized browser vendors*, possibly behind a flag. It should be considered stable and subject to little change. It will likely become a standard. CSS WG STAGES STAGE 4 “EMBRACED” The Future
  436. the future of front end A Candidate Recommendation hosted by

    the CSSWG or W3C and being implemented by at least 2 recognized browser vendors*, possibly behind a flag. It should be considered stable and subject to little change. It will likely become a standard. * Recognized browser vendors include, in alphabetical order; Apple, Google, Microsoft, Mozilla, and Opera. CSS WG STAGES STAGE 4 “EMBRACED” The Future
  437. the future of front end A Recommendation hosted by the

    CSSWG or W3C and implemented by all recognized browser vendors. It is a standard. CSS WG STAGES STAGE 5 “STANDARDIZED” The Future
  438. the future of front end This is any specification that

    has been rejected or neglected by its editor, or formally rejected by the CSSWG. CSS WG STAGES STAGE X “REJECTED” The Future
  439. the future of front end Determines how a font face

    is displayed based on whether and when it is downloaded and ready to use. CSS FONT-DISPLAY The Future
  440. the future of front end Determines how a font face

    is displayed based on whether and when it is downloaded and ready to use. The timeline is divided into the three periods below which dictate the rendering behavior of any elements using the font face. CSS FONT-DISPLAY The Future
  441. the future of front end 1) Font block period: If

    the font face is not loaded any element attempting to use it must render an invisible fallback font face. CSS FONT-DISPLAY The Future
  442. the future of front end 1) Font block period: If

    the font face is not loaded any element attempting to use it must render an invisible fallback font face. 2) Font swap period: If the font face is not loaded any element attempting to use it must render a fallback font face. CSS FONT-DISPLAY The Future
  443. the future of front end 1) Font block period: If

    the font face is not loaded any element attempting to use it must render an invisible fallback font face. 2) Font swap period: If the font face is not loaded any element attempting to use it must render a fallback font face. 3) Font failure period: If the font face is not loaded the user agent treats it as a failed load causing normal font fallback. CSS FONT-DISPLAY The Future
  444. the future of front end CSS FONT-DISPLAY The Future auto:

    The font display strategy is defined by the user agent.
  445. the future of front end CSS FONT-DISPLAY The Future auto:

    The font display strategy is defined by the user agent. block: Gives the font face a short block period and an infinite swap period.
  446. the future of front end CSS FONT-DISPLAY The Future auto:

    The font display strategy is defined by the user agent. block: Gives the font face a short block period and an infinite swap period. swap: Gives the font face no block period and an infinite swap period.
  447. the future of front end CSS FONT-DISPLAY The Future auto:

    The font display strategy is defined by the user agent. block: Gives the font face a short block period and an infinite swap period. swap: Gives the font face no block period and an infinite swap period. fallback: Gives the font face an extremely small block period and a short swap period.
  448. the future of front end CSS FONT-DISPLAY The Future auto:

    The font display strategy is defined by the user agent. block: Gives the font face a short block period and an infinite swap period. swap: Gives the font face no block period and an infinite swap period. fallback: Gives the font face an extremely small block period and a short swap period. optional: Gives the font face an extremely small block period and no swap period.
  449. the future of front end Acts similarly to relative positioning,

    in that it doesn't remove anything from the document flow. In other words, a sticky element has no effect on the position of adjacent elements and doesn't collapse its parent element. POSITION STICKY The Future
  450. the future of front end Acts similarly to relative positioning,

    in that it doesn't remove anything from the document flow. In other words, a sticky element has no effect on the position of adjacent elements and doesn't collapse its parent element. Conceptually similar to position: fixed. The difference is that an element with position: sticky behaves like position: relative within its parent, until a given offset threshold is met in the viewport. POSITION STICKY The Future
  451. the future of front end Functional pseudo-class by the official

    CSS Selectors Level 4 specifications. :MATCHES AND :NOT SELECTORS The Future
  452. the future of front end Functional pseudo-class by the official

    CSS Selectors Level 4 specifications. It doesn't serve any purpose in itself except making some complex selectors lighter by allowing them to be grouped. In a way, we can think as :matches as syntactic sugar. :MATCHES AND :NOT SELECTORS The Future
  453. the future of front end Functional pseudo-class by the official

    CSS Selectors Level 4 specifications. It doesn't serve any purpose in itself except making some complex selectors lighter by allowing them to be grouped. In a way, we can think as :matches as syntactic sugar. Basically it keeps you away from repeating a compound selector when there is only one item that varies. :MATCHES AND :NOT SELECTORS The Future
  454. the future of front end Element queries are like media

    queries, except that their rules apply to the properties of actual elements, rather than those of the browser’s viewport. CSS ELEMENT QUERIES The Future
  455. the future of front end Element queries are like media

    queries, except that their rules apply to the properties of actual elements, rather than those of the browser’s viewport. Covers instances where viewport window changes don’t affect elements, would allow triggering of those element changes. CSS ELEMENT QUERIES The Future
  456. the future of front end @media (width < 480px) {}

    @media (480px <= width < 768px) {} @media (width >= 768px) {} The Future
  457. the future of front end Will specify how a replaced

    element, such as an <img> or <video>, should be resized to fit its container. CSS OBJECT FIT AND OBJECT POSITION The Future
  458. the future of front end Will specify how a replaced

    element, such as an <img> or <video>, should be resized to fit its container. Mirrors CSS background-size property values and display effects. CSS OBJECT FIT AND OBJECT POSITION The Future
  459. the future of front end Will specify how a replaced

    element, such as an <img> or <video>, should be resized to fit its container. Mirrors CSS background-size property values and display effects. Object-position will be used in conjunction to position element in container. CSS OBJECT FIT AND OBJECT POSITION The Future
  460. the future of front end <aside class=“image__container”> <img src=“../images/free-big-green-egg.jpg” alt=“The

    finest ceramic komodo smoker available” /> <h2 class=“image__caption”> 1 Free Big Green Egg for all attendees! </h2> </aside> The Future
  461. the future of front end <aside class=“image__container”> <img src=“../images/free-big-green-egg.jpg” alt=“The

    finest ceramic komodo smoker available” /> <h2 class=“image__caption”> 1 Free Big Green Egg for all attendees! </h2> </aside> The Future
  462. the future of front end <aside class=“image__container”> <img src=“../images/free-big-green-egg.jpg” alt=“The

    finest ceramic komodo smoker available” /> <h2 class=“image__caption”> 1 Free Big Green Egg for all attendees! </h2> </aside> The Future
  463. the future of front end Property will mimic HTML image-set

    responsive images markup pattern. CSS IMAGE-SET The Future
  464. the future of front end Property will mimic HTML image-set

    responsive images markup pattern. Can apply to scaled background elements, allowing download of the optimal size image format and/or size depending on browser support CSS IMAGE-SET The Future
  465. the future of front end background-image: url(assets/no-image-set.png); background-image: -webkit-image-set(url(assets/test.png) 1x,

    url(assets/test-hires.png) 2x); background-image: -moz-image-set(url(assets/test.png) 1x, url(assets/test-hires.png) 2x); background-image: -o-image-set(url(assets/test.png) 1x, url(assets/test-hires.png) 2x); background-image: -ms-image-set(url(assets/test.png) 1x, url(assets/test-hires.png) 2x); width:200px; height:75px; The Future
  466. the future of front end background-image: url(assets/no-image-set.png); background-image: -webkit-image-set(url(assets/test.png) 1x,

    url(assets/test-hires.png) 2x); background-image: -moz-image-set(url(assets/test.png) 1x, url(assets/test-hires.png) 2x); background-image: -o-image-set(url(assets/test.png) 1x, url(assets/test-hires.png) 2x); background-image: -ms-image-set(url(assets/test.png) 1x, url(assets/test-hires.png) 2x); width:200px; height:75px; The Future
  467. the future of front end background-image: url(assets/no-image-set.png); background-image: -webkit-image-set(url(assets/test.png) 1x,

    url(assets/test-hires.png) 2x); background-image: -moz-image-set(url(assets/test.png) 1x, url(assets/test-hires.png) 2x); background-image: -o-image-set(url(assets/test.png) 1x, url(assets/test-hires.png) 2x); background-image: -ms-image-set(url(assets/test.png) 1x, url(assets/test-hires.png) 2x); width:200px; height:75px; The Future
  468. the future of front end A syntax for defining media

    query ranges using ordinary mathematical comparison operators. CSS MEDIA QUERY RANGES The Future
  469. the future of front end @media (width < 480px) {}

    @media (480px <= width < 768px) {} @media (width >= 768px) {} The Future
  470. the future of front end @media (width < 480px) {}

    @media (480px <= width < 768px) {} @media (width >= 768px) {} The Future
  471. the future of front end @media (width < 480px) {}

    @media (480px <= width < 768px) {} @media (width >= 768px) {} The Future
  472. the future of front end @media (width < 480px) {}

    @media (480px <= width < 768px) {} @media (width >= 768px) {} The Future
  473. the future of front end Functions used to fully desaturate

    colors or modify a color. CSS COLOR-MOD AND GRAY The Future
  474. the future of front end p { color: gray(red); }

    p { color: color-mod(black alpha(50%)); } The Future
  475. the future of front end p { color: gray(red); }

    p { color: color-mod(black alpha(50%)); } The Future
  476. the future of front end p { color: gray(red); }

    p { color: color-mod(black alpha(50%)); } The Future
  477. the future of front end Introduces the ability to nest

    one style rule inside another, with the selector of the child rule relative to the selector of the parent rule. This increases the modularity and maintainability of CSS stylesheets. CSS NESTING The Future
  478. the future of front end Introduces the ability to nest

    one style rule inside another, with the selector of the child rule relative to the selector of the parent rule. This increases the modularity and maintainability of CSS stylesheets. Intended to replace nesting features used in popular pre/post processors (SASS, LESS, PostCSS) CSS NESTING The Future
  479. the future of front end .container { position: relative; display:

    block; .container__heading { position: absolute; color: rebeccapurple; } } The Future
  480. the future of front end .container { position: relative; display:

    block; .container__heading { position: absolute; color: rebeccapurple; } } The Future
  481. the future of front end .container { position: relative; display:

    block; .container__heading { position: absolute; color: rebeccapurple; } } The Future
  482. the future of front end A proposal to extend the

    concept of CSS conditional rules to arbitrary when/else chains, and supporting this, a proposal to unify the disparate conditional rules into a single grammar. CSS IF/ELSE RULES The Future
  483. the future of front end A proposal to extend the

    concept of CSS conditional rules to arbitrary when/else chains, and supporting this, a proposal to unify the disparate conditional rules into a single grammar. Intended to replace if/when/else syntaxes and features in pre/post processors. CSS IF/ELSE RULES The Future
  484. the future of front end .container { position: relative; @when(@supports(

    display: grid)){ display: grid; } @else { display: block; } } The Future
  485. the future of front end .container { position: relative; @when(@supports(

    display: grid)){ display: grid; } @else { display: block; } } The Future
  486. the future of front end .container { position: relative; @when(@supports(

    display: grid)){ display: grid; } @else { display: block; } } The Future