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
Give CSS3 Some Love / FOWD2015
Search
Dan Cork
November 04, 2015
Technology
300
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Give CSS3 Some Love / FOWD2015
Give CSS3 Some Love
Future of Web Design 2015 - Rising Stars
Dan Cork
November 04, 2015
More Decks by Dan Cork
See All by Dan Cork
Paradox of Choice
dancork
0
46
Unify The UI With React
dancork
0
270
Talking Tech Jan 2016
dancork
0
72
Git For Humans - Holiday Extras - 14/08/2015
dancork
0
260
Other Decks in Technology
See All in Technology
Incremental HTTP
kazuho
5
2k
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
160
覗いてみよう 関数型ビジュアル言語×2Dグラフィックスの世界
yohyamasaki
0
170
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
120
『GOエコノミー 』(相乗りサービス) におけるスペック駆動開発
mot_techtalk
1
230
[2026 Oracle Technical Deep Dive] AI時代のアプリケーションを支えるCloud NativeとJava EEモダナイゼーション (2026年9月17日開催)
oracle4engineer
PRO
0
100
【データ横丁主催】AI Agentがコンテキストを使って仕事をした後、何が残るのか― 組織の経験を次の判断に引き継ぐ「Agent Memory」
shisyu_gaku
2
320
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
300
Apache Iceberg が拓く AI 時代のオープンレイクハウス
tomtanaka
0
210
おそらく日本で唯一のDevRelインターン生として
husengs7
0
120
[2026-09-30]ロックンロールは鳴り止まないっ - 信頼性かまってちゃん - 「データ駆動を投げ捨ててまで。」追いかける信頼性改善に向けた取り組みの話
tosite
0
190
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
220
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Odyssey Design
rkendrick25
PRO
2
850
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
710
Tell your own story through comics
letsgokoyo
1
1.1k
First, design no harm
axbom
PRO
2
1.3k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
380
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Typedesign – Prime Four
hannesfritz
42
3.2k
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
Transcript
Give CSS3 Some Love
Because CSS4 Is Coming!
Disclaimer:
CSS4 Isn’t A Thing
CSS Level 4 W orking Drafts
CSS2.1 Last Major Version
CSS Level 4 = CSS3 = CSS
Confusing Much?
What Am I Going T o T alk About
CSS3 Usage
How We Can Improve IT
What’s Coming Soon
@dancork
Holiday Extras
What’s The Problem
CSS3 Usage is Poor
T op 1 Million Websites http://trends.builtwith.com/css
Max Width 270,538
Max Width 27%
Min Width 209,608
Min Width 21%
Media Queries 48%
Chrome Anonymous Stats https://www .chromestatus.com/metrics/css/popularity
transform 42.5%
box-sizing 74.5%
T oo often the web interface ends up being the
lowest common denominator Henrik Joreteg
Engineering a UI is complex
little control over the environment
Does the ux NEED to be the same?
Who uses multiple browsers?
elephant in the room
None
http://caniuse.com/usage_table.php
IE8 1.38%
>98% support CSS3
CSS is unique
Passes over unknown properties
Less than half of web is responsive! IE is dying
CSS is your friend CSS3 usage is poor
What Can Be Done?
Avoid vendor prefixes
border-radius: 5px;
-webkit-border-radius: 5px; -moz-border-radius: 5px; -ms-border-radius: 5px; -o-border-radius: 5px; border-radius: 5px;
Will become outdated
technical debt
T ool up with Autoprefixer postcss/autoprefixer
W rite pure css
W orks with LESS and SASS
CLI, GRUNT , GULP or WEBP ACK
Minimises T echnical Debt
Media queries
None
None
Mobile first?
Majority of mobile browsers support queries
FOCUS ON JOBS, THEN SCREENS, BUT NEVER DEVICES https://blog.intercom.io/why-mobile-first-may-already-be-outdated/ Paul
Adams
Box Sizing
Old box model was stupid
Especially when building a grid
Border Box
Feb 1 International Box Sizing Awareness Day
https://css- tricks.com/ international-box- sizing-awareness- day/
OMG! It works in IE8
html { box-sizing: border-box; } *, *:before, *:after { box-sizing:
inherit; }
T ransform
T op/Left vs T ranslate
Positioning T op/Left
UI animation T ranslate
top/left has large paint time
3D transforms hardware accelerated
a { transform: translate3d(0,0,0); } a { transform: scale3d(1,1,1); }
a { transform: translateZ(0); } a { transform: scaleZ(1); }
no jank
not everything is accelerated
transform:translate transform:scale transform:rotate opacity
but you can do a lot with those!
Scale & Mouse events
Making Material Design https://www .youtube.com/watch?v=rrT6v5sOwJg
None
None
High Performance Animation http://www .html5rocks.com/en/tutorials/speed/high-performance-animations/
csstriggers. com
Vendor prefixes are stupid Go responsive, consider default Border-box all
the things T ransform for UI Animation
The New Stuff
Feature Queries
@supports
@supports (display:flex) { section { display: flex } }
@supports (column-width: 20rem) and (column-span: all) { div { column-width:
20rem } div h2 { column-span: all } }
Limited Support?
JavaScript API
CSS.supports()
Polyfill
Media Queries
light-level
dim normal washed
@media (light-level: dim) { .app { background: black; color: white;
} } @media (light-level: washed) { .app { background: white; color: black; } }
hover
none on-demand hover
.element .tooltip { /* hide tooltip */ } @media (hover)
{ .element .inline-tooltip { /* hide inline tooltip */ } .element:hover .tooltip { /* show tooltip */ } }
pointer
none coarse fine
.link { padding 1em; } @media (pointer:fine) { .link {
padding: 0.25em; } }
any-hover any-pointer
pointer hover none hover course fine smartphones, touch screens stylus-based
screens mouse, touch pad Nintendo Wii, Kinect
custom media queries
@custom-media --small (max-width: 520px); @media (--small) { /* styles for
small viewport */ }
PostCSS postcss/postcss-custom-media
ranges
@media (min-width: 600px) and (max-width: 1000px) {}
@media (width > 600px) and (width < 1000px) {}
@media (600px < width < 1000px) {}
PostCSS postcss/postcss-media-minmax
Relational :has()
div:has(p){ background: #FF0000; }
Change CSS based on content
TO-DO
<div class=“todo”> <input /> <ul> </ul> </div>
<div class=“todo”> <input /> <ul class=“empty”> </ul> </div>
<div class=“todo”> <input /> <ul style=“display:none;”> </ul> </div>
.todo ul { display:none; } .todo ul:has(li) { display:block; }
.todo ul:not(:has(li)) { display:none; }
Ordering is important
.todo ul:not(:has(li)) { display:none; }
.todo ul:has(:not(li)) { display:none; }
Browser support is limited
It’s non existent
We can try it
Polyfill.js philipwalton/polyfill
Polyfill({selectors: [“:has"]}) .doMatched(function (rules) { rules.each(function (rule) { $(rule.getSelectors()) .css(rule.getDeclaration());
}); });
Feature queries removes reliance on JavaScript :has() is too awesome!!!
New media queries, understand the environment better
last decade's "pretty good” is today’s "a bit shit" Jake
Archibald
Thank Y ou TWITTER: @DANCORK SLIDES: SPEAKERDECK.COM/DANCORK/FOWD2015