Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Leve seu CSS para o futuro
Search
Rafael Dantas
December 01, 2018
Technology
0
15
Leve seu CSS para o futuro
Talk dada no front in Floripa de 2018.
Rafael Dantas
December 01, 2018
Tweet
Share
More Decks by Rafael Dantas
See All by Rafael Dantas
O estado do CSS em 2019
raffaeldantass
1
190
CSS animations under the hood
raffaeldantass
0
47
CSS moderno para Web Semântica
raffaeldantass
0
33
Houdini e o futuro mágico do CSS
raffaeldantass
1
210
Dismistificando o CSS Grid Layout
raffaeldantass
0
110
Houdini e o Futuro das CSS
raffaeldantass
1
450
Dismistificando o CSS Grid Layout
raffaeldantass
1
53
Other Decks in Technology
See All in Technology
Ask! NIKKEI RAG検索技術の深層
hotchpotch
13
2.8k
室長と気ままに学ぶマイクロソフトのビジネスアプリケーションとビジネスプロセス
ryoheig0405
0
320
エンジニアのためのドキュメント力基礎講座〜構造化思考から始めよう〜(2025/02/15jbug広島#15発表資料)
yasuoyasuo
15
5.5k
関東Kaggler会LT: 人狼コンペとLLM量子化について
nejumi
3
460
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
120
Developer Summit 2025 [14-D-1] Yuki Hattori
yuhattor
19
5.1k
ビジネスと現場活動をつなぐソフトウェアエンジニアリング~とあるスタートアッププロダクトの成長記録より~
mizunori
0
210
バックエンドエンジニアのためのフロントエンド入門 #devsumiC
panda_program
16
6.5k
[2025-02-07]生成AIで変える問い合わせの未来 〜チームグローバル化の香りを添えて〜
tosite
1
290
急成長する企業で作った、エンジニアが輝ける制度/ 20250214 Rinto Ikenoue
shift_evolve
2
880
Data-centric AI入門第6章:Data-centric AIの実践例
x_ttyszk
1
370
家電アプリ共通PF "Linova" のAPI利用とPostman活用事例ご紹介
yukiogawa
0
130
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
Navigating Team Friction
lara
183
15k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
51k
Making Projects Easy
brettharned
116
6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.8k
Code Review Best Practice
trishagee
66
17k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
Transcript
Leve seu CSS para o futuro com Houdini Por @raffaeldantass
Rafael Dantas @RaffaelDantass Organizador do @meetuphtmlsp Instrutor no @Coletividad Front
End @valleweb Colaborador no @iMasters
Quais empecilhos temos atualmente?
Não temos acesso ao CSSOM
Inconsistências entre navegadores
JS evolui muito rápido, CSS… nem tanto.
Como nasce uma propriedade nova em CSS?
Nova especificação é proposta Especificação é escrita Os vendors implementam
Melhorias e correções são propostas Re-implementação e correções são feitas Quando os vendors consideram a propriedade madura o suficiente Os navegadores Adotam a especificação Nós (Devs) usamos a especificação
Como funciona com JS?
Uma nova feature é proposta Cria-se um Polyfill/Transpilador Se utiliza
a nova feature
O que é o qual a proposta do Houdini?
É uma força tarefa criada pela W3C
Tem o objetivo de oferecer API`s para criarmos nossas próprias
propriedades
https://ishoudinireadyyet.com/
Parser DOM CSSOM Monta o layout Processo de Paint Processo
de Composite Processo de Cascata CSS Parser API CSS Typed OM CSS Layout API Painting API Animation Worklet Worklets Properties and Values API
CSS Typed OM CSS Layout API Painting API Worklets
CSS Typed OM - Tipos - Objetos - Métodos Valores
são expostos como objetos JS. Evitando concatenação através de strings
CSS Typed OM
CSS Typed OM
CSS Typed OM Quais beneficios isso me traria? Muito verboso?
Talvez.
CSS Typed OM - Menos erros Valores numéricos são retornados
como number, não string.
CSS Typed OM - Error handling É possível checar se
o valor passado é compatível com o que é esperado.
CSS Typed OM - Melhor performance Navegador terá menos trabalho
(não vai converter/concatenar strings)
Layout API Alguns conceitos importantes sobre como o navegador trabalha
com layouts
Delimitação do layout Child Layout Layout Child Layout Child Layout
Child Layout Child Container (Parent Layout)
Child Layout Layout Child styleMap Background-color Color Etc. Layout Fragment
Lida com valores intrínsecos de tamanho do Box min-content-size max-content-size
HTML
JS
CSS
Exemplo
Paint API HTML
Paint API HTML
Paint API JS
Exemplo
Worklet - Event Loop Age como uma roda gigante fora
da Main Thread
Main Thread Event Loop
Acesso low-level ao pipeline de renderização Worklet
Worklet É possível rodar JS e Web Assembly
Worklet Processa renderização de gráfico e áudios com maior performance
Worklet Processa renderização de gráfico e áudios com maior performance
Worklet Event Loop Worklet
Worklet Event Loop Worklet
Worklet Event Loop Worklet
Worklet Event Loop Worklet
Worklet Animation Worklet Layout Worklet Paint Worklet Audio Worklet
Em resumo Não vai mais depender da implementação por parte
dos vendors
Em resumo Não vai mais esperar tanto tempo por uma
propriedade nova
Em resumo Não haverá mais inconsistências entre navegadores
Em resumo Libs para lidar com inconsistências
Pra acompanhar https://github.com/w3c/css-houdini-drafts/issues W3C Google Chrome Labs https://github.com/GoogleChromeLabs/houdini-samples https://wiki.mozilla.org/CSS/Houdini Mozzila
Houdini Wiki https://drafts.css-houdini.org/ Drafts oficiais
@raffaeldantass OBRIGADO! Segue a gente! @valleweb rafa-dantas.com.br