Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Forefront Leeds - Andy Fitch - 18/11/2013
Search
andyfitch
November 18, 2013
Programming
1
250
Forefront Leeds - Andy Fitch - 18/11/2013
A Mobile-first, OOCSS approach to Responsive Web Design
andyfitch
November 18, 2013
Tweet
Share
Other Decks in Programming
See All in Programming
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
530
Graviton と Nitro と私
maroon1st
0
110
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
400
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.9k
20251127_ぼっちのための懇親会対策会議
kokamoto01_metaps
2
450
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
850
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
370
Deno Tunnel を使ってみた話
kamekyame
0
150
Microservices rules: What good looks like
cer
PRO
0
1.5k
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
150
AIエージェントの設計で注意するべきポイント6選
har1101
5
920
エディターってAIで操作できるんだぜ
kis9a
0
740
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
We Are The Robots
honzajavorek
0
110
Joys of Absence: A Defence of Solitary Play
codingconduct
1
250
From π to Pie charts
rasagy
0
86
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Color Theory Basics | Prateek | Gurzu
gurzu
0
140
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandezseo
0
82
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Raft: Consensus for Rubyists
vanstee
141
7.2k
Ethics towards AI in product and experience design
skipperchong
1
140
Transcript
Andy Fitch @_andyfitch
Director Lead Front-end Developer @helloparallax
So what’s involved with running a digital agency?
None
• Summary of our development process ! ! • OOCSS
+ Responsive Web Design ! ! • Tools, tips & tricks for RWD & Retina
• 3 front-end developers ! • 3 back-end developers Andrew
Hathaway @andrewhathaway Daniel Le Page @dannylepage Jack Roscoe @northernintro James Hall @MrRio Aran Wilkinson @aran384 Nathaniel Higgins @nathggns
• Reduce code block ! ! • Medium - large
projects ! ! • Half front-end, half back-end
So what do front-end developers do?
HTML CSS Grunt Bower Compass CakePHP Inuit CSS JSON BEM
RWD MVC DRY SRP JavaScript SASS PHP jQuery Knockout RequireJS
Development Process at Parallax • Scoping / feasibility ! •
Wireframing ! • Design ! • Development
Wireframing • An iterative process with designers, right through to
development • Don’t be afraid of pen & paper!
Development
None
Development • Bower - package manager ! Search, install, update
& remove packages • Grunt - task manager ! Ditch CodeKit! • RequireJS - file and module loader ! Dependencies
Responsive Web Design Developers have a terrible habit of making
assumptions for their own convenience… ! …base your decisions on facts and evidence! All web design should be responsive Elastic?
Assumptions are toxic! DO NOT ASSUME mobile users only want
your primary content! ! Mobile users want the same information desktop users do, they just have different priorities
Assumptions are toxic! DO NOT ASSUME mobile users only want
your primary content! ! Mobile users want the same information desktop users do, they just have different priorities
DO NOT ASSUME anyone who is not using a desktop
is using an iPhone or an iPad. ! RWD stands for Responsive Web Design RWD does not stand for Reliable With Devices-made-by-Apple
DO NOT ASSUME your flashy retina users have flashy internet
connections! !
Planning! • Draw your layouts ! ! • Mobile first
• Schema ! ! • Framework
Implementation
Implementation yorkshireccc.com
• Abstracted code is lovely, generic, reusable code ! •
Objects ! • Rapid development ! • Helpers <div class=“media”> <div class=“media”> <div class=“media”> <div class=“media”> <div class=“media”> <div class=“media”> <div class=“media”> <div class=“media”> <div class=“media”> <div class=“media”>
Then Now
@media all and (min-width: 1000px) {
@media all and (min-width: 1000px) { @media all and (min-width:
768px) { @media all and (min-width: 600px) { @media all and (min-width: 420px) {
@media all and (min-width: 1000px) { @media all and (min-width:
768px) { @media all and (min-width: 600px) { @media all and (min-width: 420px) { Break points! not Device points
None
None
None
Single Responsibility Principle (SRP)! (each class has one job &
one job only) ! ! is completely at odds with ! ! Responsive Web Design! (many jobs at different states)
<div class=“grid”> <div class=“grid__item”> </div> <div class=“grid__item”> </div> <div class=“grid__item”>
</div> </div> A typical problem
<div class=“grid”> <div class=“grid__item one-whole soft-half—top soft-half--bottom”> </div> <div class=“grid__item
one-whole soft--top”> </div> <div class=“grid__item one-whole soft-half—bottom”> </div> </div>
.one-whole { width: 100%; } ! @media all and (min-width:
700px) { .one-whole { ! } } ! @media all and (min-width: 1000px) { .one-whole { } } <div class=“grid”> <div class=“grid__item one-whole soft-half—top soft-half--bottom”> </div> <div class=“grid__item one-whole soft--top”> </div> <div class=“grid__item one-whole soft-half—bottom”> </div> </div>
<div class=“grid grid--one-two-three”> <div class=“grid__item grid__item--primary soft-half--top soft-half--bottom”> </div> <div
class=“grid__item grid__item--secondary soft--top”> </div> <div class=“grid__item grid__item—tertiary soft-half--bottom”> </div> </div>
<div class=“grid grid--one-two-three”> <div class=“grid__item grid__item--primary soft-half--bottom”> </div> <div class=“grid__item
grid__item--secondary”> </div> <div class=“grid__item grid__item—tertiary”> </div> </div> .grid—one-two-three { .grid__item--primary { width: 100%; } .grid__item--secondary { width: 100%; } .grid__item--tertiary { width: 100%; } } @media all and (min-width: 700px) { .grid—one-two-three { .grid__item—primary { width: 66.6666%; } .grid__item—secondary { width: 33.3333%; } .grid__item--tertiary { width: 100%; } } } @media all and (min-width: 1000px) { .grid—one-two-three { .grid__item--primary { width: 50%; } .grid__item--secondary { width: 25%; } .grid__item--tertiary { width: 25%; } } }
.grid—one-two-three { .grid__item--primary { width: 100%; } .grid__item--secondary { width:
100%; } .grid__item--tertiary { width: 100%; } } @media all and (min-width: 700px) { .grid—one-two-three { .grid__item—primary { width: 66.6666%; } .grid__item—secondary { width: 33.3333%; } .grid__item--tertiary { width: 100%; } } } @media all and (min-width: 1000px) { .grid—one-two-three { .grid__item--primary { width: 50%; } .grid__item--secondary { width: 25%; } .grid__item--tertiary { width: 25%; } } } Mobile Tablet Desktop
.grid--one-two-two
Stack Similarities, Group Differences ! github.com/andyfitch/ssgd-rwd
• Define layouts in a top-level class • Comment your
code!! /yccc-skin/objects/_grids.scss /yccc-skin/responsive/_grids.scss
• Packery http://packery.metafizzy.co/ ! • Hammer.js http://eightmedia.github.io/hammer.js/ ! • cssarrowplease
http://cssarrowplease.com/ ! • FF Chartwell https://www.fontfont.com/how-to-use-ff-chartwell ! ! ! ! ! ! ! ! ! • Chosen http://harvesthq.github.io/chosen/ General
• * { box-sizing: border-box; } (IE8+) • http://www.paulirish.com/2012/box-sizing-border-box-ftw/ !
! • JSConsole - iOS Simulator & Android Debug Bridge • http://jsconsole.com/ ! ! • Flowtype • http://simplefocus.com/flowtype/ Responsive
• ImageOptim-CLI • https://github.com/JamieMason/ImageOptim-CLI ! • Compressive images • http://filamentgroup.com/lab/rwd_img_compression/
! • Retina Cookie trick • https://github.com/andyfitch/retina-cookie-trick ! • ReSRC.it • http://www.resrc.it/ ! • Current state of responsive images, srcset, src-N etc.: • http://html5doctor.com/responsive-images-end-of-year-report/ Retina
Andy Fitch @_andyfitch Thank you!