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
Amazing UI with CSS and Anima.js
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
fwdays
March 05, 2013
Programming
1.2k
0
Share
Amazing UI with CSS and Anima.js
fwdays
March 05, 2013
More Decks by fwdays
See All by fwdays
Symfony best practices и не только Олег Зинченко
fwdays
0
2.1k
Beyond Testing Михаил Боднарчук
fwdays
0
850
Yii2 - на пути от Alpha до GA. Взгляд с практической стороны Александр Бордун
fwdays
0
1.9k
Laravel 4: простота во всем. Евгений Косинский
fwdays
0
1k
Маленькая библиотека для большой компании. Антон Шевчук
fwdays
0
3.9k
Phalcon. Что нового? Александр Торош
fwdays
0
1.2k
Выбираем поисковик умом головы. Андрей Аксенов
fwdays
0
1.5k
Past, Present, and Future: The Evolution of PHP Development. Nate Abele
fwdays
0
850
Функциональный тулчейн Nix
fwdays
1
500
Other Decks in Programming
See All in Programming
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
1.7k
~ 秘伝のタレ化した『神スプシ』と戦う ~ 関数型パラダイムで壊れない仕組みへ
h0r15h0
1
140
密結合なバックエンドから TypeScript のコードを生成する
kemuridama
1
390
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3k
Swiftのレキシカルスコープ管理
kntkymt
0
200
バックエンドにElysiaJSを採用して気付いた、良い点・悪い点
wanko_it
1
190
GitHub Copilot CLIのいいところ
htkym
2
1.2k
誰も頼んでない機能を出荷した話
zekutax
0
150
Talking to terminals (and how they talk back) (KotlinConf 2026)
jakewharton
PRO
1
160
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
190
RailsTokyo 2026#4: AI様があれば、 Hotwireの弱点は消えるか?
naofumi
5
1k
TSKaigi 2026 TypeScriptバックエンドのオブザーバビリティ戦略 — Datadog × NestJSの実践
taiseiyamamotoan
1
210
Featured
See All Featured
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
540
Writing Fast Ruby
sferik
630
63k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
350
Paper Plane (Part 1)
katiecoart
PRO
0
8k
Mobile First: as difficult as doing things right
swwweet
225
10k
Building the Perfect Custom Keyboard
takai
2
780
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Designing Experiences People Love
moore
143
24k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
140
Joys of Absence: A Defence of Solitary Play
codingconduct
1
380
Building Applications with DynamoDB
mza
96
7.1k
Transcript
Amazing UI with CSS and anima.js Yehor Lvivski @lvivski www.lvivski.com
Programmers love their code.
Languages • Haskell, Scala, Erlang, Clojure • Java, C#, Objective-C
• Ruby, Python, PHP • Javascript
Patterns MVC 1970s MVVM 2010s ... MV* 2050s
VIEW
VIEW
None
None
None
Xerox PARC 1979
None
35 years since 1979
None
None
None
None
Javascript + CSS
CSS has everything • 3Dtransforms • Transitions • Animations •
Events
CSS has limitations
CSS, Bad parts • Not easy to stop animation once
started • You have to deal with percent • Limited user control
anima.js github.com / lvivski / anima
Stats • 25kB (4kB minified and gziped) • 4 weeks
of development • 2 week after public release • ≈600 stargazers
Animation loop
API
API var world = anima.js(); var world = anima.css();
var item = world.add( document .querySelector("div") ); item.animate(...).css();
.animate() item.animate({ translate: [x, y, z],
duration: 500, ease: 'ease-‐in-‐out-‐quad', delay: 100 })
Method chaining item.animate(...) .animate(...) .animate(...) .infinite()
Parallel animations item.animate( [ { translate: [x,
y, z], duration: 500 }, ... ] )
How it works
None
Matrix matrix3d( 1, 0, 0, 0, 0,
1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 )
Scale & Translate matrix3d( sX, 0,
0, 0, 0, sY, 0, 0, 0, 0, sZ, 0, tX, tY, tZ, 1 )
Rotate matrix3d( cos(Y)cos(Z), cos(X)cos(Z)
+sin(X)sin(Y)cos(Z), sin(X)sin(Z) -‐cos(X)sin(Y)cos(Z), 0, ... )
Multiply
None
Decomposition
None
Matrix decomposition • A×B≠B×A • scale×rotate×translate
Pull Requests
Thanks @lvivski