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
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
なぜ今、Terraformの本を書いたのか? - 著者陣に聞く!『Terraformではじめる実践IaC』登壇資料
fufuhu
4
630
AWS Serverless Application Model入門_20250708
smatsuzaki
0
110
兎に角、コードレビュー
mitohato14
0
140
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
2.5k
レガシープロジェクトで最大限AIの恩恵を受けられるようClaude Codeを利用する
tk1351
2
460
学習を成果に繋げるための個人開発の考え方 〜 「学習のための個人開発」のすすめ / personal project for leaning
panda_program
1
110
React 使いじゃなくても知っておきたい教養としての React
oukayuka
18
5.8k
フロントエンドのmonorepo化と責務分離のリアーキテクト
kajitack
2
130
Nuances on Kubernetes - RubyConf Taiwan 2025
envek
0
180
新しいモバイルアプリ勉強会(仮)について
uetyo
1
260
実践!App Intents対応
yuukiw00w
1
320
Jakarta EE Core Profile and Helidon - Speed, Simplicity, and AI Integration
ivargrimstad
0
110
Featured
See All Featured
Become a Pro
speakerdeck
PRO
29
5.5k
Six Lessons from altMBA
skipperchong
28
4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
6k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Unsuck your backbone
ammeep
671
58k
Raft: Consensus for Rubyists
vanstee
140
7.1k
It's Worth the Effort
3n
187
28k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
A better future with KSS
kneath
239
17k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
470
Building Applications with DynamoDB
mza
96
6.6k
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!