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

Stop using JS for that by Kilian Valkhof [INIT 2022]

Stop using JS for that by Kilian Valkhof [INIT 2022]

Common patterns implemented with JavaScript are being replaced with 'native' CSS and HTML equivalents that end up being more performant, more accessible and more resilient. Features like accordions, auto-suggest, smooth scrolling, dialogs, parallax scrolling and more no longer need JavaScript to work. We'll walk through common JS features that now have CSS and HTML equivalents that you can use, or will soon be able to use.

About the speaker:
Kilian is a front-end developer with over 20 years of experience that switched from building websites to building apps to build websites with. He is interested in modern web development, desktop app development and new technologies, and regularly speaks about topics like responsive websites, design systems and Electron. Kilian is a frequent open source contributor.

INIT conference

September 28, 2022
Tweet

More Decks by INIT conference

Other Decks in Programming

Transcript

  1. I'm Kilian Valkhof Kilianvalkhof.com | @kilianvalkhof 👴Spent the past 20

    years building websites 🌐Make a browser for devs called Polypane
  2. I'm Kilian Valkhof Kilianvalkhof.com | @kilianvalkhof 👴Spent the past 20

    years building websites 🌐Make a browser for devs called Polypane 🔘Part of the Electron governance team
  3. My awesome feature input { appearance: none; position:relative; display:inline-block; background:lightgrey;

    height:1.65rem; width:2.75rem; vertical-align:middle; border-radius:2rem; box-shadow:0px 1px 3px #0003 inset; transition: 0.25s linear background; } input::before { content: ''; display:block; width:1.25rem; height:1.25rem; background: #fff; border-radius:1.2rem; position: absolute; top:0.2rem; left:0.2rem; box-shadow:0px 1px 3px #0003; transition: 0.25s linear transform; transform:translateX(0rem); }
  4. My awesome feature polypane.app/forced-colors input:focus { /* no: */ outline:

    none; /* yes: */ outline-color: transparent; } input:focus-visible { outline:2px solid dodgerblue; outline-offset: 2px }
  5. html { scroll-behavior: smooth; } To bottom Forage distillery enim

    yuccie pop-up fixie, raclette adipisicing cillum hammock cupidatat PBR&B incididunt. Man bun neutra austin est listicle, slow-carb twee incididunt brunch hexagon. Stumptown ennui banjo wolf salvia aesthetic pabst health goth tempor heirloom lorem aliquip next level street art. Flannel pour-over 3 wolf moon venmo letterpress, next level adipisicing. Dreamcatcher craft beer narwhal lomo chicharrones cupidatat four loko, meggings dolore roof party. Hella asymmetrical man bun austin meh woke vice sriracha aliqua consequat excepteur in pug keffiyeh. Sartorial tote bag leggings wolf art party humblebrag est brunch. Scenester asymmetrical quis helvetica non pok pok bespoke aute waistcoat deserunt id nulla actually semiotics pork belly. Marfa sriracha commodo edison bulb dolore la croix XOXO sed duis. Copper mug pour-over +1 cray dolore squid sriracha officia. Everyday carry green juice iceland enim. Pork belly kombucha anim slow-carb lomo vape consequat mumblecore. Seitan austin raw denim, laboris tumeric 8-bit marfa lo-fi. Art party meh adaptogen vice master cleanse duis mumblecore typewriter DIY fingerstache unicorn. Proident commodo pitchfork fugiat art party austin. Hexagon lorem hot chicken umami, authentic butcher pinterest ex food truck cardigan kale chips. Bitters narwhal 3 wolf moon, helvetica pickled flannel neutra disrupt lomo consequat lyft. Cupidatat chartreuse meditation +1 occupy shabby chic deserunt glossier plaid. Cloud bread dolor hoodie chillwave, proident live-edge enim ut pickled synth +1 unicorn hell of. Culpa taiyaki bushwick waistcoat hexagon cardigan meditation. Disrupt shaman ethical palo santo, crucifix synth post-ironic roof party cred hell of butcher. Meggings enim minim kombucha, artisan schlitz lumbersexual veniam PBR&B
  6. #my-target { scroll-margin-top: 100px; } To target Forage distillery enim

    yuccie pop-up fixie, raclette adipisicing cillum hammock cupidatat PBR&B incididunt. Man bun neutra austin est listicle, slow-carb twee incididunt brunch hexagon. Stumptown ennui banjo wolf salvia aesthetic pabst health goth tempor heirloom lorem aliquip next level street art. Flannel pour-over 3 wolf moon venmo letterpress, next level adipisicing. Dreamcatcher craft beer narwhal lomo chicharrones cupidatat four loko, meggings dolore roof party. Hella asymmetrical man bun austin meh woke vice sriracha aliqua consequat excepteur in pug keffiyeh. Sartorial tote bag leggings wolf art party humblebrag est brunch. Scenester asymmetrical quis helvetica non pok pok bespoke aute waistcoat deserunt id nulla actually semiotics pork belly. Marfa sriracha commodo edison bulb dolore la croix XOXO sed duis. Copper mug pour-over +1 cray dolore squid sriracha officia. Everyday carry green juice iceland enim. Pork belly kombucha anim slow-carb lomo vape consequat mumblecore. Seitan austin raw denim, laboris tumeric 8-bit marfa lo-fi. Art party meh adaptogen vice master cleanse duis mumblecore typewriter DIY fingerstache unicorn. Proident commodo pitchfork fugiat art party austin. Hexagon lorem hot chicken umami, authentic butcher pinterest ex food truck cardigan kale chips. My middle title to top Bitters narwhal 3 wolf moon, helvetica pickled flannel neutra disrupt lomo consequat lyft. Cupidatat chartreuse Header
  7. #my-target:target { outline: 10px solid deeppink; transition: 1s ease-in-out outline;

    } To target Forage distillery enim yuccie pop-up fixie, raclette adipisicing cillum hammock cupidatat PBR&B incididunt. Man bun neutra austin est listicle, slow-carb twee incididunt brunch hexagon. Stumptown ennui banjo wolf salvia aesthetic pabst health goth tempor heirloom lorem aliquip next level street art. Flannel pour-over 3 wolf moon venmo letterpress, next level adipisicing. Dreamcatcher craft beer narwhal lomo chicharrones cupidatat four loko, meggings dolore roof party. Hella asymmetrical man bun austin meh woke vice sriracha aliqua consequat excepteur in pug keffiyeh. Sartorial tote bag leggings wolf art party humblebrag est brunch. Scenester asymmetrical quis helvetica non pok pok bespoke aute waistcoat deserunt id nulla actually semiotics pork belly. Marfa sriracha commodo edison bulb dolore la croix XOXO sed duis. Copper mug pour-over +1 cray dolore squid sriracha officia. Everyday carry green juice iceland enim. Pork belly kombucha anim slow-carb lomo vape consequat mumblecore. Seitan austin raw denim, laboris tumeric 8-bit marfa lo-fi. Art party meh adaptogen vice master cleanse duis mumblecore typewriter DIY fingerstache unicorn. Proident commodo pitchfork fugiat art party austin. Hexagon lorem hot chicken umami, authentic butcher pinterest ex food truck cardigan kale chips. My middle title Bitters narwhal 3 wolf moon, helvetica pickled flannel neutra disrupt lomo consequat lyft. Cupidatat chartreuse Header
  8. 1 <div class="scroller"> <div class="option1">1</div> <div class="option2">2</div> ... <div class="option5">5</div>

    </div> scroll-snap-type: x mandatory; scroll-snap-align: start; .scroller { 1 2 } 3 .scroller div { 4 5 } 6
  9. Here is my title Here is my paragraph <details open>

    <summary>Here is my title</summary> <p>Here is my paragraph</p> </details>
  10. ➕Here is my title summary::marker { font-size: 1.5em; content: '

    ➕ '; } [open] summary::marker { font-size: 1.5em; content: ' ➖ '; }
  11. Show modal <dialog> <form method="dialog"> <p>Tabs or spaces?</p> <button type="submit"

    value="wrong"> Tabs </button> <button type="submit" value="correct"> Spaces </button> </form> </dialog> dialog.addEventListener("close", function() { console.log(dialog.returnValue); // "correct" });
  12. grid-template-rows: masonry; .container { 1 display: grid; 2 grid-template-columns: repeat(4,

    1fr); 3 4 } 5 Masonry layout smashingmagazine.com/native-css-masonry-layout-css-grid/
  13. Option 1 Option 2 Option 3 selectmenu::part(button) { color: white;

    background-color: #f00; padding: 5px; border-radius: 5px; } selectmenu::part(listbox) { padding: 10px; margin-top: 5px; border: 5px solid red; border-radius: 20px; gap: 10px; width: 240px; font-size: 1rem; } selectmenu option { padding:10px; border-radius:10px; font-weight: bold; }
  14. Which do you use? Bootstrap Chakra Tailwind Materialize Other <fieldset>

    <legend>Which do you use?</legend> <label><input type="radio"> Bootstrap</labe <label><input type="radio"> Chakra</label> <label><input type="radio"> Tailwind</label <label><input type="radio"> Materialize</la <label><input type="radio"> Other</label> <input type="text"> </fieldset> form #other-text { display: none; } form:has(#other:checked) #other-text { display: block; }
  15. Scroll linked animations Resources HTML CSS E D I T

    O N Result 1× 0.5× 0.25× Rerun bram.us/2021/02/23/the-future-of-css-scroll-linked-animations-part-1/
  16. …I hope you love CSS and HTML now, too! ask

    me about Polypane @kilianvalkhof | kilianvalkhof.com | polypane.com