Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Responsive Web Applications
Search
snookca
November 30, 2017
Technology
1.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Responsive Web Applications
As presented at dotCSS in Paris, France
snookca
November 30, 2017
More Decks by snookca
See All by snookca
Responsive Web Applications
snookca
4
1k
Responsive Web Applications
snookca
0
200
Responsive Web Applications with Container Queries
snookca
3
750
Responsive Web Applications
snookca
0
150
The Future is In Pieces
snookca
1
220
Becoming a Deep Generalist
snookca
1
540
Your CSS is a Mess from ShropGeek's Revolution Conf
snookca
4
240
Your CSS is a Mess from SmartWeb
snookca
0
280
How to Write a Book
snookca
4
470
Other Decks in Technology
See All in Technology
freeeらしさをAIとともに作る / Creating the freee Experience with AI
ymrl
0
210
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
510
AI時代のAPI開発を加速する品質ガードレール / API Quality Guardrails in the AI Era
yokawasa
0
160
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
180
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
2
1.4k
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
440
子育てエンジニアの可処分時間が減っても成長を諦めない戦い方
sudoakiy
1
850
Google Cloud Next Tokyo 26登壇時のスクリプト
recruitengineers
PRO
0
200
Incremental HTTP
kazuho
5
2.1k
ミイダス株式会社 テックチームのご紹介 / MIIDAS Tech Team
miidas
0
160
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
210
FinTech 1-2 : Overview of FinTech
ks91
PRO
0
150
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
970
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
700
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
Scaling GitHub
holman
464
140k
So, you think you're a good person
axbom
PRO
2
2.2k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2k
It's Worth the Effort
3n
188
29k
Navigating Weather and Climate Data
rabernat
0
550
Facilitating Awesome Meetings
lara
57
7.2k
Speed Design
sergeychernyshev
33
2.1k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
320
30 Presentation Tips
portentint
PRO
1
420
Transcript
Responsive Web Applications with Container Queries
Why We Need Container Queries
None
None
None
None
None
None
None
• No orders • One order • Less than one
page of orders • Multiple pages of orders • Has Info Notifications • Tab overflow • Has Warning Notifications • Has limited access to features • Has different apps installed
And now consider all of those things for multiple viewports
None
None
With media queries, you have to know the interplay of
all objects in all scenarios
Implementing Container Queries
With container queries, you only have to know the interplay
within a single object
No container queries!
Declare in: CSS, HTML, or JavaScript
https://github.com/ResponsiveImagesCG/cq-demos .element:media( min-width:500px ) {} https://github.com/tysonmatanich/elementQuery .element[min-width~="500px"] { background-color: #eee;
}
http://elementqueries.com/ @element ".element" and (min-width: 500px) { .element {
background: gold; } }
https://github.com/tysonmatanich/elementQuery .element[min-width~="400px"] { }
To parse CSS, either need to be on same domain
or set up CORS
https://github.com/Snugug/eq.js data-eq-pts="small: 400, medium: 600, large: 900"
At HTML level, requires consistency of implementation across app
We chose JavaScript and built our own
elements = [ { "module": ".flex--2x1", "className":"responsiveClass", "minWidth": 768, "maxWidth":
1024 } ]
Why is this so f**kin’ hard?
.element:media( min-width:500px ) { width: 400px; }
None
.element { width: 50%; } .element:media( min-width:500px ) { color:
blue; }
The Future
ResizeObserver
Houdini
What’s Houdini: • Layout API • Custom Paint API •
Parser API • Properties and Values • Animation Workout • Typed OM • Font Metrics API
None
In Chrome: • Layout API • Custom Paint API •
Parser API • Properties and Values • Animation Worklet • Typed OM • Font Metrics API
None
<div class="two-columns"> <div class="col1"> … </div> <div class="col2"> … </div>
</div>
.two-columns { display: flex; flex-wrap: wrap; } .col1, .col2 {
flex-grow: 1; } .col1 { flex-basis: 66%; min-width: 360px; } .col2 { flex-basis: 33%; }
None
<div class="media-body"> <div class="media-content"> </div> <div class="media-actions"> <a href="…"> Button
</a> </div> </div>
.media-body { display: flex; flex-wrap: wrap; }
.media-content { flex-grow: 1; flex-basis: 400px; margin-right: 20px; }
.media-actions { align-self: center; margin: 20px 0; }
None
<div class="box"> <div class="box-image"> <img src="…" height="150" > </div> <div
class="box-content">...</div> </div>
.box { display: flex; flex-wrap: wrap; }
.box-image { flex-grow: 1; flex-shrink: 0; flex-basis: 150px; } .box-image
> img { width: 100%; object-fit: cover; }
.box-content { margin: 10px; flex-shrink: 1; flex-grow: 1; flex-basis: 60%;
}
<div class="items"> <div class="box">…</div> <div class="box">…</div> <div class="box">…</div> </div>
.items { display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); }
Thank you. http:/ /snook.ca/ @snookca