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
CSC307 Lecture 03
javiergs
PRO
1
490
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
170
組織で育むオブザーバビリティ
ryota_hnk
0
170
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
270
高速開発のためのコード整理術
sutetotanuki
1
390
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
600
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
Grafana:建立系統全知視角的捷徑
blueswen
0
330
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.5k
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
270
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
110
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
200
Rails Girls Zürich Keynote
gr2m
96
14k
Mobile First: as difficult as doing things right
swwweet
225
10k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
120
RailsConf 2023
tenderlove
30
1.3k
Test your architecture with Archunit
thirion
1
2.1k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
99
How to build a perfect <img>
jonoalderson
1
4.9k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
110
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!