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
他言語経験者が Golangci-lint を最初のコーディングメンターにした話 / How Golangci-lint Became My First Coding Mentor: A Story from a Polyglot Programmer
uma31
0
440
技術的負債の正体を知って向き合う
irof
0
270
CSC509 Lecture 07
javiergs
PRO
0
250
釣り地図SNSにおける有料機能の実装
nokonoko1203
0
200
Ktorで簡単AIアプリケーション
tsukakei
0
110
CSC305 Lecture 10
javiergs
PRO
0
290
ALL CODE BASE ARE BELONG TO STUDY
uzulla
28
6.7k
スキーマ駆動で、Zod OpenAPI Honoによる、API開発するために、Hono Takibiというライブラリを作っている
nakita628
0
330
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
4
910
PHPに関数型の魂を宿す〜PHP 8.5 で実現する堅牢なコードとは〜 #phpcon_hiroshima / phpcon-hiroshima-2025
shogogg
1
340
SODA - FACT BOOK(JP)
sodainc
1
8.9k
AI 駆動開発におけるコミュニティと AWS CDK の価値
konokenj
5
270
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
55
11k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3k
Fireside Chat
paigeccino
41
3.7k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Reflections from 52 weeks, 52 projects
jeffersonlam
354
21k
4 Signs Your Business is Dying
shpigford
185
22k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
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!