Beruflich Dokumente
Kultur Dokumente
clients on side
Create an Icon
in Fireworks
Develop faster
with Yeoman
Discover pixi.js
for 2D rendering
Enjoy fast WebGL with
a HTML5 canvas fallback
Project
ding
a
e
l
,
tions ues for
a
m
i
D an p techniq CSS
3
o
t
e
yout l their to novativ
a
l
e, in
From ts revea
g
d
e
r
expe g cutting
n
writi
Use ems
for better
responsive
websites
contents
Issue 253 : May 2014 : net.creativebloq.com
FEED
FEED
17
BEYOND PIXELS
20
NEED list
22
EVENT report
23
Workspace
18
voices
research and the web
26
28
BIG Question
38
Q&A
40
Better communications
42
may 2014
VOICES
INTERVIEW
32
SUBSCRIBE to net
and save up to 45%
Contents
regulars
regular
GALLERY
44
Christopher Cashdollar
curates this month's best
sites, with top use of HTML5,
jQuery, CSS and RWD
Network
Exchange
10
Showcase
design Challenge
52
Focus on
56
profile
58
how we built
64
Try out
the all-new
Ipad edition
Features
25 smart
Css tips
PROJECTS
Slash design/build time
84
90
94
HEAD-TO-HEAD
96
Master opentype
98
How to get
68 clients on side
76
project
104
web standards
103
Yeoman generators
108
ACCESSibility
114
may 2014 5
@netmag
Future Publishing, 30 Monmouth Street, Bath BA1 2BW +44 (0)1225 442244
/netmag
+netmagazine
flickr.com/photos/netmag
netmag@futurenet.com
net.creativebloq.com
Editorial
Editorial contributions
Ollie Barker, Fabio Bendetti, Emma Boulton, Alex Brooke, Tiffany B. Brown, Christopher Cashdollar, Gene Crawford, Alex Crooks, Mark
Dalgleish, VivianaDoctorovich,Tom Dougherty, Craig Grannell, Mat Groves, Brett Harned, Val Head, Michael Heap, Tim Hettler, Tomomi
Imura, Jonathan Kahn, Shawn King, Cameron Koczon, Vitaly Kondratiev, Meg Lewis, Linda Liukas, Josh Long, Jenn Lukas, Mikha Makhoul,
Bryson Meunier, Dan Nisbet, Tim Nolan, Jason Pamental, Veerle Pieters, Neil Richards, Donna Spencer, Lonie Watson
Art contributions
Mike Chipperfield, Karen Lewis, Ben Mounsey, Ben OBrien, Joyelle West
management
Head of creative and design Declan Gough declan.gough@futurenet.com, Managing director Nial Ferguson nial.ferguson@futurenet.com
Creative director Robin Abbott bob.abbott@futurenet.com, Group art director Steve Gotobed steve.gotobed@futurenet.com
Editorial director Jim Douglas jim.douglas@futurenet.com, Chief executive officer (UK) Mark Wood mark.wood@futurenet.com
14,304
Colophon
6
may 2014
Apps used
paper
Typefaces
Welcome
Welcome
editors note
What are the essential skills a frontend
developer needs these days? Jeff Croft believes
that HTML and CSS gurumansship is no longer
enough to get yourself a job (jeffcroft.com/blog/2014/
jan/03/web-standards-killed-the-html-star) and we
found out what his peers think in last issues Big
Question. Over the next few months well be
exploring this matter further.
Yes, you are expected to know more, but CSS is
still the foundation for many a job out there. And
its actually a very exciting time for CSS. In our cover
feature this month leading designers and developers
including Shane Mielke, Trent Walton and Ana
Tudor talk us through some amazing tips to get the
Featured authors
Emma Boulton
Jason Pamental
Tim He t tler
Tom Doughert y
may 2014 7
Mails, tweets,
posts & rants
contact us
@netmag
/netmag
netm.ag/linkedin_net
New verses
young
Where do those of us who
started coding later in life fit
into your awards categories?
Why not have New instead of
Young categories? I began
designing and developing at
age 29 and wouldnt have even
fitted into your Emerging
Talent award at the time.
may 2014
Interactive but
limited?
Ive been reading net
magazine on my iPad, and for
recent issues it is showing me
an interactive version. I prefer
the digital replica as there
appears to be quite a lot of
content from the digital
replica version that is missing
from the interactive version.
Specifically, I cant see
readers letters, or the
advertising. I like seeing the
advertising. How do I get to
the digital replica version on
my iPad?
netmag@futurenet.com
net.creativebloq.com
Design vs
development
I regret to say that since the
change of format, theres very
little in net for developers it
seems to all be SEO, design
and marketing. Xamarin,
TypeScript, CoffeeScript,
HTML5 canvas, MVC5, TDD,
Agile, BDD, Appcelerator,
ORMs, AngularJS, Backbone,
KnockoutJS they are all
relevant to web developers
work these days.
Increased coverage Were certainly not shying away from developers and
development. Weve increased our coverage and the content has its own section
Network
THE POLL
Is UX parallax a blessing,
or a curse?
netm.ag/poll-253
COOL Stuff
we learned
this month
Kickstarter hits $1bn
As we went to
press, crowdfunders
Kickstarter had just
achieved over $1bn in
pledges. Its easy to
assume crowdfunding
is a thoroughly modern
phenomenon, but its
far older than you
might imagine. In 1884,
newspaper publisher
Joseph Pulitzer used
crowdfunding to finance
the Statue of Liberty.
netm.ag/kick-253
Hemmingway of code
Twitters Angus
Croll has brought
two worlds together by
wondering how literatures
heavyweights would
code. Hemingway might
be stripped back while
Shakespeare would use
rhyme to convey extra
meaning and emphasis.
Crolls piece is a great read
that questions language.
byfat.xxx/if-hemingwaywrote-javascript
may 2014 9
Practical
advice from
industry experts
Michael Heap
Michael is a fixer at
DataSift. He works with
various high volume data
sources in real time
w: michaelheap.com
Viviana Doctorovich
Viviana is a senior user
experience designer at
Clearleft and co-founder
of Ladies that UX Brighton
w: vivdoc.com
Bryson Meunier
Bryson is the director of
SEO strategy at
Resolution Media and an
expert in mobile SEO
w: resolutionmedia.com
Virtual reality Virtual Reality has generally failed to live up to its promises, but this could be about to change
Bryson Meunier: Avoid it if possible, but if you must, be sure to define separate
sections with accessible content as Google did here in their single page site for How
Search Works: bit.ly/N7Ic3S. Googles Matt Cutts has said in the past that its fine if it
works well for users, but beetle.com won a Webby in 2012 for being a great site and it
currently ranks for zero keywords that arent associated with their brand, and is
ranked eighth for the navigational term Volkswagen Beetle.
MVC Frameworks
10
may 2014
Q&As
3 simple steps
Users keep filling up the
basket and then leaving
before they complete the
transaction at checkout.
Helen Freed, Portugal
Popular choices Picking a framework is subjective. Marius Gundersen compares popular choices at JSConf EU
Testing prototypes
Should designers start learning to code,
say in HTML5, so that they can quickly
prototype and test their ideas?
PHP
Beginning a PHP
algorithm
PHP
A lack of consistency
Gabor Javorszky, UK
Remove barriers
may 2014 11
exchange Q&As
Michael Heap: This is one of the most
common complaints about PHP.
Thankfully, while its not consistent
across the language, there is actually
consistency across data types.
If the function accepts an array as its
input, the signature is needle, haystack .
If it accepts strings, its haystack, needle .
The only exception is implode , which for
historical reasons accepts arguments in
either order. Its not perfect, but its not
as complicated as people make out.
user experience
12
may 2014
Fairy tales Breadcrumbs, named after the Hansel and Gretel story, allow users to track progress through a UI
Search intelligence
Google removed its keyword tool but what
other services can we use to check terms
people are searching for?
Creative data
Do you think designs should be centred
around data? Or should designers trust
their creative instincts more?
Subscribe to all-new
Great Reasons to Subscribe:
lSave
Every
new-look issue delivered
to your door, days before it hits
the shops
Stay
updated on new
web technologies
Exclusive
access to the worlds
leading experts
Prices:
6 MONTHS DD 26.99 (Save 23.89)
1 YEAR 59.99 (Save 17.88)
2 YEARS 95.49 (Save 60.25)
HURRY!
Offer ends
31 may 2014
People, projects
& paraphernalia
BEYOND PIXELS
20
17
Need LIST
21
Workspace
18
Event REPORT
23
may 2014 15
FEED
Side project
Sid
16
may 2014
Feed
How to
Design a child
friendly Ui
Kids arent miniature adults. They
perceive and interact with the
world very differently.
clientsfromhell.net
inquisitive minds
When it comes to interfaces,
children arent so bound by
expectation and experience.
Neither do they worry about
breaking anything. Rather, theyll
click on anything and everything
says, lecturer @Emmadw. But, she
warns, children arent aways aware
of scroll interactions.
may 2014 17
FEED
18
may 2014
standing tall
FEED
Beyond pixels
Stuff I like
val he ad
Typecast
CodePen Pro
I use it for live coding demos
in talks and workshops. Its so
easy to save examples for
others to fork or copy and be
coding along in seconds. Its
great creating quick proofs of
concept to share internally, or
isolating troublesome code to
get your teams advice on.
codepen.io
Basecamp
Does this make me sound
old-fashioned? Probably. I use
it in nearly every project. Its
not perfect, but its the best
project management tool Ive
used. Keeping tabs on all my
projects without a lot of fuss
is something I simply cant
work without.
basecamp.com
20
may 2014
PROFILE
Need list
Need list
Stuff we want
15
Kennedy
mocky
1.49
drawing ideas
$7/month
20
$7
clef
free
What we think
(1) HTML5: The Missing Manual by Matthew MacDonald is a smart, digestible and efficient guide to HTML (netm.ag/miss-253).
(2) Kennedy by Brendan Dawes is a charming and whimsical diary app that adds your location and news headlines to an entry (netm.
ag/ken-253). (3) Drawing Ideas by Baskinger and Bardel (netm.ag/draw-253) is a fascinating book, written to help designers tackle big
problems by sketching. (4) Mocky (mocky.com) is a feedback organiser. You can pin emails and notes to a piece of work and share the
bundle. (5) Austin Kleons Show Your Work (austinkleon.com/show-your-work) is a quirky, visual guide to sharing your work. (6) Clef (www.
getclef.com) replaces passwords. Hold your phone up to your screen and a 300-character password will be negotiated automatically.
may 2014 21
Feed
EVENT GUIDE
digital trendspot
Date: 10 april 2014
Location: london, uk
Stories from top marketers that
will help you enrich your digital
strategy, and engage your
customers. Expect talks from
Alison Ali and Chris Marsh.
netm.ag/trend-253
converge se
Webstock
PROFILE
rwd summit
Date: 1-3 april 2014
Location: online
Some of the webs most notable
speakers - including Tim Kadlec,
Dave Rupert and Dave Olsen discuss and explore new
responsive techniques.
netm.ag/RDWsummit-253
thingscon
Date: 2-3 may 2014
Location: berlin, de
A conference about the future of
hardware, from 3D printing to
the internet of things. Emily
Brooke, Jessi Baker, Ron Evans
and others will speak.
thingscon.com
css day
Date: 4 june 2014
Location: amsterdam, nl
One for the hardest of hardcore
CSS geeks! Expect eight
sessions, each given by CSS
alchemists such as Heydon
Pickering, Nicole Sullivan,
Mathias Bynens.
cssday.nl
may 2014 23
advertising promotion
Flexible IT drives
cinematic magic
24
may 2014
Advertising promotion
customer profile
framestore
Company: Framestore
Industry: Arts, entertainment
and media
Country: UK
Employees: 500+
Website: www.framestore.com
Business need
Solution
Benefits
high-performance workstations
lF
ramestore can successfully meet
may 2014 25
28
interview32
better communications
Researching
and the web
42
Opinion
PROFILE
Whos responsible?
may 2014 27
VOICES Essay
28
may 2014
Essay
business
Its difficult
Technical skills are essential to your job, and youre
constantly developing them by reading, following discussions on social media and attending conferences.
Think back to when you started to learn a technical skill
like HTML, CSS, or JavaScript. How did you feel?
If youre like most of us, you felt scared and overwhelmed. Theres so much to learn, and it never ends;
however accomplished you are with HTML (or whatever)
today, theres always more to learn.
The same is true of people skills, often called soft
skills in business, like collaboration, coaching and leadership. You may have heard that you either have people
skills or you dont, a myth that author and speaker Meri
Williams (blog.geekmanager.co.uk) calls the soft skills
fairy, which is like saying, you can either code JavaScript
or you cant.
You didnt fall out of bed with expert web design and
development skills, and the same is true of people skills.
may 2014 29
VOICES Essay
Web work is full of conflict, whether its between colleagues and clients who are afraid of change, managers
with unrealistic expectations, or departments fighting
over turf. The internet is a symbol of disruption for many
people: perhaps their jobs are changing, their skills are
becoming obsolete, or their business model is threatened.
You are on the front line of this disruption as you attempt
to do digital work that youre proud of, a front line thats
thick with unmet needs.
Our culture makes things worse. We try to avoid conflict, as if ignoring it will make it go away. We tip-toe
around sensitive issues or send long emails instead of
engaging face-to-face. We agree to a spec that we know
will never work because it seems easier than risking an
honest conversation. How many times have you made
choices to avoid difficult conversations rather than doing
what the project needs? Ive done it hundreds of times.
unmet needs are likely to be things like respect, appreciation, contribution and space (check out this list for
ideas: www.cnvc.org/Training/needs-inventory). The other
trick is to recognise what your feelings are and try to
express them without using judgemental language.
Instead of saying, I feel attacked in this meeting,
which judges someone elses choices as wrong, you
could say, I feel frustrated because I need appreciation
for my contribution, which means you are taking responsibility for your own feelings and needs.
coaching others
Technology is always changing and it seems like you
cant keep up. At the same time, your clients and colleagues are asking you for the right answer, the proven
return on investment, the technology solution that will
fix their digital problems once and for all. If you were
without judgement
To prevent work frustration, you need appreciation for
your contributions and respect for your value to the team.
When your needs arent met, you feel hurt and angry. As
you try to deal with your anger, youll find yourself judging
others. You can spot this judgement by looking for language that implies that people are bad, or their choices
are wrong, or they dont get it. You may also notice
self-judgement, where you tell yourself that youre wrong,
or your work sucks, or that you somehow dont get it.
Before you can communicate without judgement you
need to learn how to give yourself what you need. Your
30
may 2014
being honest with them, youd tell them that you dont
know how to make their problems go away.
When you coach others, you need to acknowledge that
you dont have all the answers, you cant fix their problems and instead support them to make decisions about
their own development. This means being honest about
your own skills, the areas youd like to develop and the
things youre scared of. Although we think of coaching
as a sports technique, you can use it at work, even without
drawing attention to it. For example, you can think of
digital work as a form of coaching with your colleagues,
even coaching your boss, about the areas in which theyd
like to develop their skills and expertise. Check out The
Talent Code by Daniel Coyle (thetalentcode.com).
People skills can help you turn conflict into collaboration, communicate without judgement and coach yourself and others. Although these concepts are straightforward to explain, theyre difficult to apply in practice.
The pay-off is worth it. As you develop these skills, youll
see your work change. Youll get unstuck, feel frustrated less often and meet your needs for contribution,
growth and connection. Go forth. Learn people skills!
PROFILE
VoiceS Interview
Ethan Marcotte
ethanmarcotte.com
Interview
Info
job: web designer
and developer
company: freelance
w: ethanmarcotte.com
t: @beep
Responsives genesis
I have to ask the obvious question: how did
responsive design come about? Was the idea
that we should stop trying to tame the wildness of the web and roll with it already germinating in various corners of the industry?
Or did he have a classic eureka moment? The
name, he tells us, did indeed come about
Interview
Responsive reaction
So, how does he feel about introducing the
concept to the web industry? When Im on
stage, Im terrified, he laughs. But, you
know, at the end of the day, I just wrote an
article. I wrote this article and Im still amazed
and terrified at how excited people are about
it. All I did was hit on this idea that thinking
about desktop and mobile as separate things
wasnt going to scale. Tablets werent a sparkle
in anyones eye yet but, how many separate
versions of our sites were we going to make?
If I hadnt come up with the idea, somebody
else would have.
Marcotte isnt, however, determined to
make responsive into the web industrys
Little Red Book. Quite to the contrary, he
warns against absolutism. Im always suspicious of people who suggest theres one true
may 2014 35
VoiceS Interview
Defining beauty
So, how does Marcotte define beauty on the
web? You know, there can be a beauty to
numbers, to relationships and to ratios, he
says. So much of what we think about in art,
of proportion, of music and metre is driven
from mathematics. But I see responsive sites
on a daily basis that are staggering and aesthetically beautiful. People are sending links
[to the @RWD Twitter account] that are beyond
what I could have imagined when I wrote my
article. People have taken this really simple
formula of fluid grids, flexible images and
media queries and are using that as a framework to design more flexibly for the web.
Beauty is a challenging word on many
levels because its so caught up with our
notion of aesthetics. But, theres this larger
challenge with our work. The definition of
the web varies greatly depending upon
where you are in the world. Sub-Saharan
Africa, for example, has a massive mobile
market, far larger than what we have in the
States and Europe. In other countries, where
36
may 2014
My goal is to make
the web as
accessible and
beautiful as
possible for the
people who are
trying to access it
whats next?
As Marcotte finishes his coffee, we discuss
the future. In addition to some great client
projects, Im thinking about writing another
book. Karen McGrane and I are collaborating
on a workshop about responsive design, and
Im speaking at a number of conferences this
year, such as Generate NY, so Im working on
a new talk about a more module-driven approach to responsive design and layout.
For information about the full Generate NY lineup, and to book tickets, visit generateconf.com
Jenn L uk as
veerle.duoh.com
jennlukas.com
t im nol a n
38
may 2014
Big question
Josh L ong
Meg L e wis
I agree with Jason regarding the cheesy-decorated websites, using all the
same trends and themes, making the web vague and similar even for
different purposes. However, each digital product has a cluttered UX behind it.
Our job as designers is to polish it, make it attractive and hide it in a nice way,
but not to make that clutter obvious. People are driven by beautiful things. Its
like an ugly coat that keeps you warm, you will consider wearing it to prevent
the cold, hence its serving a need, but not everyone will be attracted to it. We
have to think of our users needs, serving it nicely by applying our style to it.
Ca meron Koczon
Partner, Fictive Kin
fictivekin.com
further reading
How clutter messes
with your brain
Its hard to be too shocked by Princeton
University research that found clutter
makes you stressed and reduces performance.
The Noise of Stuff (medium.com/what-i-learnedtoday/f36935374518) article argues that clutter
isnt just physical.
may 2014 39
VoiceS Q&A
net: I like your expression hands on, minds
on working. Can you explain it to us, please?
LL: Our kids should learn to bend, join, break and
combine code in a way it wasnt designed to. I love
learning by doing and then afterwards understanding
the larger context of a problem, and thats what I
advocate in my own programming pedagogy. Im
fascinated by the spiral learning theory where you
introduce a topic, touch on it for a short time and
then move on. The idea is that a subject isnt learned
the first time around and the kids can pick up more
information the second time. This is the whole
thinking behind Hello Ruby (helloruby.com).
Q&A
Linda Liukas
40
may 2014
voices Opinion
management
Better communications
Brett Harned shares his team communication tips to make project work easier
share information
At the beginning of a project, sit down with
your team to discuss your budget, scope,
timeline and requirements. This will ensure
that everyone on the team is aware of and
accountable for the projects health. Also be
sure to assign project roles and the responsibility of making sure that communications
are flowing and are being documented. As a
team, make a commitment to sharing information, knowing that taking three to five
minutes to share potentially critical info with
Educating clients
on your project
process helps
them to better
understand your
work and to be
your champion
Educate clients
As a designer or developer, youve
got a process that works for you.
Sharing the why and the how
you get to your deliverable will
help explain the timing, concepts
and dependencies of your work.
Taking the extra step to document and explain your work
shows your team and your clients
42
december 2013
build faster
If youre seeing that a team member is behind
on a task, be proactive and ask about it. The
point of an open to-do list is to make sure
that youre all up to date on the status of work
at all times. The list will foster real-time
communication via in-person or online conversation. The idea is to work in the open and
share progress to build team support. This
activity helps people build products faster.
No matter what you do, you have to commit to communicating better. Make these
better communications practices work for
you in an atmosphere thats accepting of
discussion, debate, task management and
good old hard work.
PROFILE
Chris
cashdoll ar
RWD
www.mergerecords.com
Newfangled www.newfangled.com
44
may 2014
You can
start reading
while the rest
of the page
loads. Thats
so critical to a
great mobile
experience
Tom Carmony
(@tomcarmony)
Inspirational sites
www.bucketlistly.com
Pete R. www.thepetedesign.com
may 2014 45
si t e of t he
mon t h
96elephants.org
Vigetviget.com
46
may 2014
Inspirational sites
HTML5, CSS
ticketleap.com/events
Ticketleapwww.ticketleap.com
The pages
nail the
anticipation
of an event
youre excited
to be part of
Daniel Mall
@danielmall
may 2014 47
rwd, ecommerce
www.gant.co.uk
MarkUp usemarkup.com
As of early 2014, there still arent many online retailers who have
taken the plunge into responsive design. GANT, a global lifestyle
brand with an American sportswear heritage, recently took that leap with
its UK and Swedish markets. Built on the Phoenix platform created by the
digital agency MarkUp (usemarkup.com), the new responsive frontend
ecommence site is a frictionless shopping experience that balances a
utility-first UI with the strong product photography youd expect from an
apparel brand.
Performance is a key aspect of making a successful online retail
experience and the technology that went into the GANT site helps to
keep the page load snappy. Site assets are automatically minified,
which includes auto generating sprites and concatenated CSS and
JavaScript files. Also, a caching strategy using Varnish and Redis
minimises page load times as much as possible.
Since the original site design was non-responsive, the speed of
development was a crucialbarometerof success. MarkUp developer
Calum Brodie says, Having complete flexibility in our frontend code,
and being able to choose the right technologies bespoke to this project,
gave us a massive headstart in implementing the whole responsive
design in less than a month.
48
may 2014
Inspirational sites
news.harvard.edu/gazette
The structure
of the mobile
experience is
like moving
through an
airport
Brad Berkner
@bberkner
may 2014 49
www.kenyon.edu
FastSpot www.fastspot.com
50
may 2014
next
month
PLUS
Use CSS not jQuery
for UI animations
Build a responsive
WordPress portfolio
Top techniques to
make PHP go faster
myfavouritemagazines.co.uk
Digital editions available on iTunes, Google Play, Kindle, Nook and Zinio
net.creativebloq.com
Sublime design
& creative advice
Design
Challenge
Focus on
This month...
56
adventure
travel sites
ALE X B R O OK E
PROFILEs
Ol l ie B a rk e r
Profile
58
S h aw n K ing
Shawn works for West Virginia University
for clients such as WVU Healthcare and
Chiffon & Champagne w: partleecloudy.com
Brief
How we built
64
52
may
december
2014 2013
Design challenge
ALEX BROOKE
EXPLORE:THEWORLD
A site designed to inspire adventure through imagery and good deals. See a full-size image: netm.ag/brooke-253
Close up
(1) The main focus of the homepage is to allow the user to
search for a country; putting the search bar as the primary
call to action achieves this. (2) Once the user has selected
a country, the navigation area is customised to the said
country to make it feel more personal and to reflect the
users search. (3) Fantastic photography related to the
main adventures of the country is used to draw the users
attention. There is also a small summary and a call to
action that allows the user to find out more or to book
their trip. (4) Another search function is available to allow
users to search for a specific adventure in their chosen
country. (5) Tweets displayed from users that have already
explored the country are displayed here, encouraging
other users to visit the country. (6) Everyone loves food,
so by displaying the countries local delicacies, everyone
can get a taste of what the country has to offer them.
my month
What have I been doing
this month?
This month has been
my first month of being
a freelance web
designer. Ive done a lot
of learning about
business, worked on a
photography website
and Im currently in the
process of planning a
big project with a wellknown international
model. Its been a scary
but exciting month!
Which two websites
have I visited for
inspiration?
designspiration.net,
abduzeedo.com
What have I been
listening to?
Frank Turner,
Disclosure, CHVRCHES
may 2014 53
Showcase
Design challenge
OLLIE BARKER
Adventr
Promoting adventure using user generated content. See a full-size image: netm.ag/barker-253
my month
What have I
been doing?
The frontend
development of an
educational website.
Sites Ive visited?
Lately inspired-ui.com
for app inspiration and
www.siteinspire.com for
web inspiration.
What have I been
watching?
House of Cards, Dexter
and the majority of
whats on Netflix.
What have I been
listening to?
Broken Bells, Boy and
Bear, Jamie Cullum,
Coasts, Two Door
Cinema Club and
Arcade Fire.
54
may 2014
Close up
(1) Adventures will be based around, and tagged by,
six categories: explore, travel, culture, water, relax and
nature. (2) An interactive map on the front page is used to
showcase the most popular and interesting adventures
using a filter option and hover pop-ups to refine and
display additional information. (3) The main content of the
homepage is based around an infinite scrolling concept.
It will initially display a featured adventure, latest tweet,
member statistics and a member content upload area.
Multiple types of content will be loaded in and dynamically
arranged including feeds from multiple social networks.
(4) The mobile version of the website strips the design
down to its basic elements, removing the interactive map
in favour of a call to action button and the three stages
are transformed into a slider. If users submit content on a
mobile they would use a companion app.
Design challenge
2
4
SHAWN KING
Go
Using geolocation and Google Maps to celebrate Rail Trails. See a full-size image: netm.ag/king-253
Close up
(1) Once youve signed into GO, the first thing youre
presented with is a map of nearby trails. The trails
surrounding you on this map are based on your GPS
location. If you want more options, or to view trails in a
different area, you can drag the map, zoom in and out, or
search. (2) Favourite trails help you to remember the trails
you love. (3) Click on any trail to view shared images, get
directions, begin planning a trip, or add miles. (4) My Trail
is the core of GO for each user. This section provides you
with information about trips, goals, and miles you have
logged on trails. Additionally you can create new trips,
establish new goals, and log your miles. (5) GO also has
sections to display posts from social networks, follow GO
on social networks, and view resources for Rail Trails.
My month
What have I
been doing?
A new interface design
for an in-house LMS at
West Virginia
University called SOLE.
I also just completed
the design and
development for
Chiffon & Champagne.
Which sites have I
visited for inspiration?
Smashing Magazine
and A List Apart.
What have I been
listening to?
Young the Giant, Lorde,
Imagine Dragons,
Cannery Row Spotify
playlist, noisli.com.
What have I
been watching?
Men at Work, Rush,
The LEGO Movie.
may 2014 55
Showcase
Focus on
Focus On
Using animation
Gene Crawford says animation can either help to create a great user
experience, or hurt it badly, and suggests how to achieve the former
PROFILE
USA/Canada Offer!
Subscribe to
Great Reasons
to Subscribe:
l Save
l Get
l Get
l Stay
l Exclusive
Prices
Every 6 Months: $67.99 (Save 38%)
1 Year: $135.99 (Save 38%)
2 Years: $244.99 (Save 45%)
Live in the
UK? Turn
to Page 14
SAVE
UP TO
45%*
Terms and Conditions: * Savings compared with buying 13 full priced issues at $16.99 from the US newsstand. This offer is for new North American
print subscribers only. You will receive 13 issues in a year. Minimum subscription term is 12 months. If at any time during the first 60 days you are
dissatisfied in any way, please notify us in writing and we will refund you all unmailed issues. Prices correct at point of print and subject to change.
Offer ends 15 June 2014.
Showcase
Profile
Profile
Profile
Yaron Schoen
yaronschoen.com
58
may 2014
Profile
info
w: yaronschoen.com
location: Brooklyn, New York
expertise: interface design,
product design, creative
direction, entrepreneurship
may 2014 59
Showcase
Profile
Profile
Parental software Schoen founded Kiddo. Its a company that creates software for
parents. Its first product is a baby activity tracking app that is launching soon
Sleeping lions Schoen created a series of posters of sleeping animals designed for baby and toddler rooms
to help convince them sleep is good. Hes pretty sure parents will appreciate this
60
may 2014
Profile
office culture
Yaron Schoen
yaronschoen.com
Whats on your
desktop today?
iMac, Logitech MX cordless mouse,
Persian mouse rug, small statue of
Captain America
may 2014 61
Showcase
Profile
Profile
Timeline
2001
Starts first full-time job as a designer
at a small agency in Jerusalem.
Stays there for six years, becoming
its creative director.
June 2007
Moves back to NY to join Fantasy
Interactive (Fi) where he designs sites
for EA, National Geographic, TWC,
Nintendo and more.
July 2009
Leaves Fi to join AOL as its senior
designer for the entertainment group.
August 2009
Leaves AOL to go freelance. Founds
Made for Humans and Float.
May 2010
Forms part of the founding team of
Julpan, a stealth engineering startup.
September 2011
Julpan is acquired by Twitter.
October 2011
Helps build the Twitter NY office
and hires its first designers.
Daughter is born.
November 2012
Leaves Twitter to rebuild Made
for Humans, work on Float and
create Kiddo.
62
may 2014
Showcase
How we built
How we built
Razorfish and Goodboy explain how they created the pedal-to-themetal-bleeding-edge-action-fest 3D game to promote Spicy McBites
Brief
McDonalds Spicy McBites. Small
in size, but big in spice. McDonalds
asked Razorfish and Goodboy to
step up to the spice challenge and
position the duality of its small
product with an impactful flavour
in an engaging way.
64
may 2014
Close up
(1) Super Spice Dash is an immersive fast-paced
game. The game is an endless runner, using a
chase-cam from a third-person perspective. The
player must go as far as possible in this neverending adventure. (2) The big wow factor is that
weve created an extremely visual, visceral 3D
game in HTML5 that works on almost any device.
How we built
Cyril Louis
John Denton
Mat Groves
Timeline
30 August 2013
The Super Spice Dash concept is ready
and goes into production.
2 Sept 2013
The collaboration with Goodboy starts
and the details of the game are worked
out. Wireframing finishes.
9 Sept 2013
The look and feel of the campaign is
approved and design of the game kicks
off. Razorfish works with Goodboy on
the low poly aesthetics.
16 Sept 2013
All POC groundwork and the initial
cross-device testing completes. Design
starts for level aesthetics
23 Sept 2013
Development continues, adding game
functionality, scoring system, timing.
30 Sept 2013
Development integrates level layouts
and artwork as well as social scoring
functionality, with final tweaks
for retina mobile devices and checks
on the orientation-flexible
design performance.
6 October 2013
net: How did you prototype the project
and communicate your ideas?
GB: Once we had settled on the loosest of
game styles, we went directly to starting
on proof of concept as, more than ever, we
needed to prove the concept could actually
work at all!
Game QA begins.
16 October 2013
The campaign goes live and the site
works on all the different devices.
may 2014 65
Showcase
How we built
4
3
Evolution
66
may 2014
How we built
net: Why did you opt for a gaming angle
as opposed to another experience?
CL: The product is a very playful one by
nature, and this spicy edition even more.
We wanted to illustrate the adventures
that the McBites went through to become
so hot and spicy, in a fun, viral and
sharable way. We wanted to combine an
epic and immersive gaming experience
with advertising in a playful way.
net: In pure technical terms, which tools,
technologies and platforms did you use
to build the site?
GB: Lots! I mean, there really was a
lot of tech in SSD. There were regular
tools such as perennial coder favourite
Sublime Text 2 for getting the code down.
The development team took place on a
Bitbucket repo managed with SourceTree.
The games 3D was so specialised for
device performance that we developed our
own super lightweight engine. HUD and
UI was handled by our own open source
engine, Pixi.js [see a tutorial for using
Pixi.js on page 104]. Flash got a look in
too as, once again, we used it (well its IDE)
as a convenient level editor, publishing
spitting track data out direct to our server
for instant cross device testing.
There was even a bit of tech applied to
the visuals we created. We used a great
iPad app called Tres (netm.ag/tres-253) by
The So3, which allowed us to create the
low-poly-style backdrops and in-game
assets. Its actually a really cool app, and
outputs either high-res PNG or SVG assets.
Icy cold Snowy Peak Mountain is the second level of the game. Its an icy world full of scary traps
just us quite how severe this issue is. Basically, any WebView that isnt iOS Safari
is subject to a 3.3 times performance hit.
There is no trick around it or anything like
that. Only Safari gets the Nitro JavaScript
engine, and when it comes to a high performance mobile browser game, thats a
very big deal!
net: Looking over the horizon, which
web technologies are you looking
forward to experimenting with?
GB: As a borderline institutionalised Apple
fanboy Ive got to admit that the browser
performance of devices like the HTC One
really has been an eye opener. Not so much
on this game, but seeing it throw around
WebGL content with ease is quite a thing
to behold! WebGL and in particular its
application to 2D content is something we
think has really amazing scope.
net: Whats the feedback from the client
and its customers been like?
CL: The game was very well received by
the clients, and the public. The customers
spent an average of more than seven
minutes playing with many coming back
for more fun later.
net: Whats the secret of a good burger?
CL: Two beef patties and three-part bun.
GB: Three slices of cheese.
Burning hot Here is the third level of the game, Sand Storm Mirage, which is a burning hot world
may 2014 67
68
may 2014
Cover feature
01 colour schemes
Author
Craig Grannell
is a writer, designer and
musician. Hes been
writing for net since
before border-radius
was new and exciting,
and you can follow him
on Twitter at
@craiggrannell
Illustration
Mike Chipperfield
is co-founder and
creative director
of Brighton-based
collective Magictorch
(www.magictorch.com)
may 2014 69
03 with box-shadow
Animate polyhedra
04 with transforms
Shane Mielke
Freelance designer
shanemielke.com
Previously of 2Advanced, freelance designer Shane
Mielke jokes, I learned in an age of web design where
if you werent animating everything and anything, you
werent doing your job, and so thats always been a
part of my mentality. Once, such animated content
would have been a Flash-fest, but Mielkes latest sites
animation is based around CSS and JavaScript. Project
links are atop rotating cuboids, while press items become
magazines flicking open on a rollover; elsewhere,
screengrabs subtly shift in 3D space.
Mielke explains web design has always been about
figuring out something cool you want to do and how to
accomplish that, and believes CSS is well-suited to the
type of visually dynamic design he creates: Im a big
fan of things initially appearing to be very simple. Then,
when you interact with them, you see a level of depth,
intricacy and love that brings everything to life. CSS is
perfect for this, because if something doesnt work in an
older browser or on certain platforms, everything rolls
back and the effects dont show.
Mielke emphasises the importance of structure.
Many of his pages are unordered lists manipulated with
JavaScript and CSS, so theres no complication regarding
positioning and floats; he also notes how CSS can add
extra spice, such as tweens when selecting items,
yet people rarely tap into this. Bloat, though, must be
avoided: Its all about the developer. You can just as
easily make a huge page with web standards as with
Flash, when striving for certain effects.
70
may 2014
05
06 with box-sizing
07
08 objects
[class*="-block-grid-"] { }
... would target the likes of:
.small-block-grid-3
.large-block-grid-5
09
Control hyphenation
David Storey, open web advocate
Take advantage of
10 writing modes
11
@mixin gradedBullet($colour) {
background-image:
linear-gradient(left,
may 2014 71
12
13
14
15 3D transitions
16 and maths
72
may 2014
Foldable.Me
By Mint Digital
mintdigital.com
17
18 animations
Demo: jsbin.com/buwa/1/edit
19 with shadows
may 2014 73
Demo: codepen.io/cfarm/pen/FHxnr
20 using :target
21 subtle animations
24ways.org reveals
animated titles when
mouse users hover over
previous and next links in
the site navigation
74
may 2014
22
23
input, textarea {
-moz-transition: all 0.2s ease-out;
Cover feature
Resources
CSS-Tricks
A superb website written by Chris Coyier that provides
insight into all things CSS, including browser behaviour,
use-case scenarios for a range of properties and values, and
critical thinking of specs.
css-tricks.com
24
.animating_thing {
animation: spin 10s linear infinite;
animation-play-state: paused;
}
. animating_thing:hover {
animation-play-state: running;
}
25
Codecademy
CodePen
An interactive playground combined with a teaching
aid, CodePen enables you to create and share your
demonstrations of web-page components, seeing changes
live as code is amended.
codepen.io
Interactive playground You can see changes to demos live via CodePen
may 2014 75
76
may 2014
S
Author
TOm dougherty
(@DoughertyTom)
is user experience
director at Delete. He
has a background in
interactive design and
has led the UX on a
wide range of projects
for clients such as Red
Bull, Expedia and IKEA
deleteagency.com
may 2014 77
clients view
Sam Warriner, head of
brand partnerships at
Metro Newspapers, tells us how
important the following factors are
in building successful relationships
with digital agencies you work with.
plain english
When it comes to creating
innovative digital solutions in
partnership with agencies and
designers, clear communication
is critical from both sides. Theres
nothing worse than feeling
alienated from your own project
due to an overuse of technical
jargon being spouted out by people
in meetings and phone calls.
As a client, its also important
not be afraid to ask for a clearer
explanation when something is,
in your view, being communicated
poorly to you.
Understanding their
creative process
Having an overview of the agency
process helps to understand what
goes into the project and all that
needs to be considered. I guess just
as important is an understanding
of the expectation of work required
from our side, and the involvement
we will need to commit to
throughout the project.
Spending time in the
agencys environment
While working on a recent project
for Metro in partnership with
Expedia I personally spent some
time in the studio with the digital
agency partner, Delete. Witnessing
the designers in action was a great
way to see the project develop, and
understand some of the thinking
that goes into the creation phase.
This isnt something that Id ever
done before, but its certainly the
type of involvement I would push
for and encourage in the future
with our agency partners.
78
april 2014
Clear communication
It sounds obvious, right? But youd be
surprised how often this is neglected.
The appraisal
Before engaging on any digital project
with a client, its well worth evaluating
their digital knowledge level. Usually
youll be able build a picture of this with
Second feature
Good communications
inception meeting
The session should be used to introduce
the main project stakeholders and
their responsibilities from both sides ensuring you explain your roles and the
types of tasks you will be completing.
For a high majority of businesses,
redesigning their website is not an
everyday task and not usually something
they would have been through many
times. This means the phases of work
youll be proposing will be unfamiliar to
them, so clear explanation is crucial.
Walking through your creative process
will help a client understand the main
project phases you have proposed and
the types of outputs to expect at each
stage. You can also highlight where you
require their input too. Be prepared to
adjust your process around your client. I
find its always good to start with a top
level view of the main components before
getting down into the granular detail of
the project plan, which can be a little
daunting to some people. It can often be
worth while sketching out a customised
may 2014 79
80
may 2014
Second feature
Clients view Drop-in sessions give the client the opportunity to offer their views on a project while youre still developing the solution
drop in sessions
If you do decide to invite clients into your
office at key points in the development of
the project, try doing the following to get
the most from client drop-in sessions:
Be prepared to adjust
Hopefully what Ive illustrated here is
that theres not an exact approach that
works for all. You need to invest the time
to understand your clients knowledge
level, ways of working and preferences
and then mould your approach to the
relationship management around them.
things to remember
Here are some additional top tips to
ensure a smooth client relationship.
If you have concerns early on over the level
of hand-holding a client will require throughout
a project, its well worth factoring this into your
project and account management estimates in
order to avoid heavy over run on this time.
may 2014 81
Brendan Dawes
New York
20.06.14
Ethan Marcotte
Register today!
Jenn Lukas
DAVE SHEA
Price: $375
NICOLE SULLIVAN
Carl Smith
www.generateconf.com
Were
back in
London too
26 September 2014
Grand Connaught Rooms
Tips, tricks
& techniques
84
98
84
90
94
Desktop
Mobile/tablet
104
HEAD-TO-HEAD
96
master openType
98
Standards
103
104
Yeoman generators
108
Accessibility
114
Browser support
Exclusive videos
may 2014
83
PROJECTS RWD
A b o u t t he a u t h o r
Dan Nisbe t
w: www.think.eu
t: @thedistricts
areas of expertise:
Visual design, CSS,
JavaScript
q: whats the worst
youve ever screwed up
at work?
a: the tea round. Its
considered a matter of
life and death in
our studio
RwD
REM units
Desktop
Mobile/tablet
10
3.6
2.1
11.6
32
26
84
may 2014
RWD
grid to collapse, or equally, expand. No matter
your preferred workflow, producing visuals with a
modular style guide or designing in browser, its the
viewport width and its effect on our content that
should drive our design decisions.
But the viewport width isnt the end of it. We also
have to contend with a multitude of physical screen
sizes with differing resolutions. Your content can
both be magnified and reduced depending on the
display. It can have a marked effect on the legibility
of your content and effectiveness of your layout.
For example, typography set to look comfortable
on a large display will be totally inappropriate for a
smaller device.
This isnt a new problem. In fact, screen resolution
has always been a limiting factor in how weve
designed websites. Remember the 960 grid, or
designing for 760 before that? RWDs flexible
Proportional thinking
In many ways, responsive typography has already
gone some way in addressing our concern. Its
common to encounter a site where headings and copy
reduce in size as the screen real estate tightens.
While triggered by a narrowing viewport, the text
can also be seen as applying appropriate scaling
for the screen resolution. It becomes acceptable
focus on
Size matters
As craftsmen and makers of websites, we can often be found
struggling to resist the urge to resize our browser, watching
as our breakpoints work their magic. Were all guilty of it and, as a
basic smoke test, it gets us through.
But by only assessing the effectiveness of our layouts by
viewport size, were doing a disservice to people using our website.
We ignore how differing displays can have physical implications,
how the context of use and accessibility functions can impact the
sites legibility and browsing experience. Nothing can truly match
testing your layouts on real devices. You are far more likely to find
and resolve issues that you may not otherwise foresee.
Apart from screen resolution, the physical display size can have
a large bearing on our typography and layout. Its generally true
that the larger the screen, the greater the comfortable viewing
distance. Consider the distance you maintain when working on a
laptop, compared to a watching your state-of-the-art in-home
cinema. Switching the displays at their respective distances would
have you struggling to use both. As it turns out, there is already a
standard in place that suggests we are most comfortable viewing
screens at around a 30-degree angle.
But this presents us with a problem. Given that perspective
will reduce the perceived size of something at greater distances,
our text and interface could be wildly off. Ideally we require our
layouts to be perspectively-proportional with our viewing distance.
Reflowing our content based on the viewport width would simply
not be enough. By implementing proportional scaling and defining
a scale factor above 100 per cent enables us to enlarge our layout
and type to compensate, with little to no extra cost.
For further reading, try Life beyond 960px (webdesign.tutsplus.
com/articles/general/life-beyond-960px-designing-for-large-screens)
and Responsive Typography: The Basics (ia.net/blog/responsivetypography-the-basics).
may 2014 85
PROJECTS RWD
focus on
The humble em
Ems: the flexible poster boy of responsive web design. You
may have first come in contact with them as units of
measurement in your stylesheets, but, satisfyingly, their humble
beginnings can be found in the early days of the printing press.
Its perfectly acceptable to use them, safe in the knowledge that
they are font-relative and will flex with our typography. However, it
can be helpful to understand what the basic em unit represents. To
do that, we need to brush up on a little history.
When the printing press came about, the faces of individual
letters were cast on a solid body of metal. Stacked next to each
other, the body would provide padding around each letter, creating
a word, a sentence and, when mixed with other elements, an entire
page. In many typefaces, a capital M was cast on a body roughly
equal in both width and height (this height is also known as the
point-size). This square was termed as an em, which can be read as
equal-to-M and in modern typography is known as the Em-box.
Interestingly, ems have a narrower form termed an en, which is
half the size of an em unit. It didnt make the CSS specification, but
its legacy can still be seen in the en-dash.
Early em units were predominately used as a horizontal
measurement. But on our screens, letters are rarely equally spaced.
Letter kerning, or letter-spacing in CSS, mean that an em unit
equates to a vertical font measurement. One defined by the vertical
space needed for any given letter. When we increase the point-size
of a font by a percentage or otherwise. The vertical space required
by the Em-box also increases, resulting in our relative em unit being
equal to a larger value then it was before.
For further information, try reading The incredible em and
elastic layouts with CSS (v1.jontangerine.com/log/2007/09/theincredible-em-and-elastic-layouts-with-css) and watch More Perfect
Typography (vimeo.com/17079380).
Equal ems A capital M creates an em-box roughly equal in both width and height
Relative units Typesetting your headings and copy with relative units allows
for a simple, yet powerful approach to responsive typography
86
may 2014
RWD
By simulating different viewport widths, you can get
a feel for how our typography now scales. This can
work both ways, by defining a font-size above 100%
we can also enlarge our text.
@media screen and (min-width: 75em) {
html { font-size: 135%; }
}
A simple premise, but a powerful one. By using this
method you can effectively control an entire sites
typographic sizing with a single CSS declaration,
completely avoiding the need to repeatedly target
individual elements. If your documents vertical
rhythm is composed of relative units, it will also
scale beautifully. Find a live example of this on
CodePen: cdpn.io/eujaA.
Define values Use ems and rems to define CSS measurement values, creating a relational relationship
resource
CodePen
demos
Scaling with relative
units: cdpn.io/eujaA.
Adding layout:
cdpn.io/gHqEj
Flexible and
proportionally scaled:
cdpn.io/jLeDC
Plan of attack
The horizontal: anything that makes up the
combined width of the document is defined as a
percentage. This includes the likes of: widths ,
margin , padding , and border-left and right .
The vertical and everything else: specified in rems
and bound to the documents root font-size it should
be our default unit, including: min- and max-width ,
top and bottom relative, and absolute positioning.
Lets put that into action:
html { font-size: 100%; }
h1 { font-size: 2.75rem; }
h2 { font-size: 2.125rem; }
.wrapper {
width: 100%;
min-width: 50rem;
margin: 0 auto;
}
.header {
position: relative;
width: 100%;
may 2014 87
PROJECTS RWD
Default rems
height: 3rem;
}
.header-logo {
position: absolute;
top: 1rem;
left: 6%;
width: 5rem;
padding: 1.3rem 1.5rem;
}
.article {
overflow: hidden;
}
.article-content {
float: left;
width: 56%;
padding: 2rem 6% 4rem;
}
.article-aside {
float: right;
width: 26%;
padding: 1.5rem 5% 3rem 0;
}
.article-figure {
padding: 0 2%;
}
.article-figure > img {
margin: 1.5rem 0 0;
}
.auxiliary-list
{
margin: 0;
padding: 0 0 0 6%;
}
.auxiliary-list > li
{
display: inline-block;
}
.aux-item
{
width: 19%;
margin: 2rem 5.6% 2rem 0;
padding: 3.1rem 0;
}
.footer {
width: 97%;
padding: 3rem 0 0 3%;
}
@media screen and (max-width: 55em) {
html { font-size:80%;}
}
@media screen and (min-width: 65em) {
html { font-size:115% }
}
@media screen and (min-width: 75em) {
html { font-size:135%; }
}
Using a CSS
preprocessor like
Sass can save us a lot
of the heavy lifting
For the sake of brevity, were only dealing with layout
within our example. You can view the complete
styles on CodePen: cdpn.io/jLeDC.
This all seems pretty straightforward, but, with
percentages controlling two aspects of our layout,
it can be a little confusing. So, to be clear, the
percentages that make the documents overall width
are not directly influenced by our root scaling.
By maintaining this separation we can produce
a site that is both flexible and one that can be
proportionally scaled.
In the wild
While these short examples show the basic premise
of what were looking to achieve, its real life
application will often rely on converting a design
comp into styled HTML. For that, well need a
method of expressing pixel measurements in rems.
Luckily for us, this already exists. Its a formula
you should already be familiar with. Its the same
as one we use to find proportional percentages in a
responsive workflow, that is:
target context = result
Because rems are font-relative lengths, our context
is then tied to the root font-size. Assuming a HTML
font-size of 100% equates to 16px , then an example
88
may 2014
RWD
Left By maintaining
two planes of
separation, we can
have a site that both
scales proportionally
and maintains a
flexible structure
Hidden benefits
Conclusion
video
Watch an exclusive
screencast of this
tutorial created
by the author:
netm.ag/tut1-253
may 2014 89
PROJECTS Fireworks
A b o u t t he a u t h o r
Fabio
Benede t t i
w: dribbble.com/cocorino
t: @cocorino
areas of expertise:
visual design, branding
iIlustration, UI design
& icon design
q: whats the worst
youve ever screwed up
at work?
a: I designed a cover for
a catalogue to be screen
printed, I messed up
the pagination and
swapped the front cover
with the back cover,
and had to reprint more
than 100 covers myself
fireworks
Create a Cloud
Icon in Fireworks
video
Watch an exclusive
screencast of this
tutorial created by
the author:
netm.ag/tut2-252
90
may 2014
Fireworks
When designing an icon, I
generally start sketching out
ideas on a notepad in order to have
a clearer picture of where Im
heading to. However, a cloud icon is
something that has strong circular
geometry, so if using pen and paper
isnt your thing, you can start by
opening Fireworks, or your favourite
vector tool.
The main part of this exercise
is based on circular shapes and a
strong rational. Instead of Photoshop, for example, Fireworks is very
object-oriented rather than layer
based, so dont worry too much
about naming your layers. You can
drag the object onto the canvas
directly by selecting them with the
Pointer tool ( V ).
01
02
Getting started Once youve opened your favourite vector tool, create two perfect circles. The sizes follow design rules of the golden ratio
03
04
expert tip
Why
Fireworks?
We dont know why
Adobe has decided to stop
making Fireworks after
version CS6. What we do
know is that Fireworks
lets you achieve pixelperfection results in an
amazingly short time,
keeping your source file
small and tidy. One of the
most interesting features
of Fireworks is that, by
default, every pixel is
snapped onto the grid. If
you scale shapes and you
need to get rid of half a
pixel, press Cmd+K to
solve any issues.
05
Intersecting shapes With three intersecting circles, the shape of the cloud starts to emerge
may 2014 91
PROJECTS Fireworks
also how quickly you can build
shapes. At this stage, copy the
shapes on the left-hand side of the
big circle, reflect them and position
them to the right of the circle in
order to create a symmetrical
shape. To do that, select the shapes
on the left, right click and from the
contextual menu, select Transform
> Flip Horizontal . Then move them
to the right to create the backbone
of the cloud.
Now you can start to get rid
of the unwanted shapes
(such as the circles on the left-hand
side and the right-hand side and the
squares). Select them with the
direct sub-section tool ( A ) and
press delete . Otherwise, you can
do that from the Layer panel.
The beauty of Fireworks is that
you can select, copy, paste and deal
directly with objects rather than
focusing to much on layers. After
deleting the unnecessary shapes,
fill the three remained shapes with
a solid light grey colour (#BBBBBB).
06
07
Outline shape Using the Property panel, set the fill to null or transparent and outline the stroke. This creates a simple and light outline shape
08
09
10
resources
92
may 2014
Over the years, developers have created some super cool extensions to make Fireworks even more powerful. One of the best is Path Panel. You can download the
extensions at netm.ag/pathpanel-253. Smart Resize is another interesting one, and
available at netm.ag/smartresize-253. Smashing Magazine also features a wide section
dedicated to Fireworks: netm.ag/smashingfireworks-253.
Fireworks
expert tip
Gradients
The Gradient panel will
help you achieve great
results in icon designs.
Offering different types
of gradients, from Linear
to Radial and Ripples, this
is a unique screen tool.
The Ellipse gradient in is
very good. If you use these
gradients in combination with the blending
modes (such as Multiply,
Average, Screen), you can
achieve unexpected and
wonderful results in your
screen design.
Uploading files The arrow indicates the uploading of files to the cloud. The Punch Path tool creates space at the bottom of the cloud
11
12
13
16
17
18
14
15
Icon ready Once the shape of the arrow is complete, all the vectors are merged together
may 2014 93
PROJECTS Sass
A b o u t t he a u t h o r
T im He t t l er
w: www.timhettler.com
t: @timhettler
areas of expertise:
HTML, CSS & Sass,
JavaScript, Grunt
q: whats the worst
youve ever screwed up
at work?
a: At my first job, I
forgot a semi-colon in
a line of JavaScript and
completely broke one of
the largest sites on the
internet for about
20 minutes
SASs
Translating Design
Details With Sass
Tim Hettler explains how Sass can help bridge the communication gap
RESOURCE
talk slides
See the slides from
Tim Hettlers talk,
Sweating the Small
Stuff: Recreating
Subtle Design Details
Using Sass, which
this tutorial is based
on: timhettler.github.io/
sweating-small-stuff
94
may 2014
$font-size--headline: 28px;
$color--electric-green: #cdff03;
By using variables, designers and developers can
discuss the details of a project in equal terms.
Sass
documenting in a way that isnt possible with CSS. By
abstracting the code into a reusable mixin, we ensure
this relationship is applied to every button we create.
video
Watch an exclusive
screencast of this
tutorial created by
the author:
netm.ag/tut2-253
may 2014 95
PROJECTS Head-to-head
HEAD-TO-HEAD
A b o u t t he a u t h o r
Ma rk
Da l gl eish
w: markdalgleish.com
t: @markdalgleish
areas of expertise:
JavaScript, frontend
development and
Node.js
Grunt vs Gulp
gulpjs.com
Philosophy
Grunt builds are mostly made up of JSON-like
configuration rather than code. Instead of writing a
programmatic build script, you supply options to a
series of pre-packaged build tasks inside a Gruntfile.
plug-ins
Grunt has a large, growing community surrounding it.
There are currently almost 2,300 plug-ins available,
supporting common tasks like static asset compilation
and deployment.
Fact file
ALTERNATIVE
Many small JavaScript
projects leverage npms
scripts functionality
to create an extremely
lean build process. This
approach is particularly
popular in the Node
community where
the more minimal
solutions are often the
most popular.
DEPENDENCIES
Grunt and Gulp require
Node.js (nodejs.org).
INSTALLATION
Grunt
npm install -g grunt-cli
Gulp
npm install -g gulp
96
may 2014
speed
Tasks run synchronously by default. Each task is
individually configured to interact with the file system.
This I/O-heavy approach can cause performance
degradation if your project grows too large. Grunt
plug-ins try to improve the situation, but its not ideal.
scaffolding
Yeoman, a very popular JavaScript scaffolding tool,
has first-class support for Grunt. The vast majority
of Yeoman generators create a project that includes a
Gruntfile. There is even a Yeoman generator the can
scaffold Grunt plug-ins.
verdict
The Grunt team is planning to implement similar virtual file transformations to Gulp, so the
choice between the two will increasingly depend on whether you prefer configuration or
code for your build process. Unless your build is modified by frontend designers with little
JavaScript experience, Gulp is likely to be a much more popular choice in the long run.
awards
2014 VOTING ENDS
24 MARCH
THE CATEGORIES
Game Changer of the Year Best New Web Technology Open Source Project of the Year
App of the Year Best Online Portfolio Side Project of the Year Demo of the Year
Best Collaborative Project Redesign of the Year Podcast of the Year
Conference Talk of the Year Grassroots Event of the Year Entrepreneur of the Year
Emerging Talent of the Year Young Developer of the Year Young Designer of the Year
Developer of the Year Designer of the Year Outstanding Contribution
Team of the Year New Agency of the Year Agency of the Year
www.thenetawards.com
PROJECTS Typography
A b o u t t he a u t h o r
Jas on
Pa men ta l
w: hwdesignco.com
t: @jpamental
areas of expertise:
web strategy and
design, responsive web
design, web typography,
Drupal
q: whats the worst
youve ever screwed up
at work?
a: Wait, what database
did I just delete? Oh
_______
typography
Master OpenType
resource
sample code
Download a sample
page that includes
loads of tips and tricks
you can try in your
own projects: www.
hwdesignco.com/otf/
opentypedemo.zip
98
may 2014
Typography
ascenders and descenders to fit well with upper and
lower case letters) and of course, kerning tables.
(That alone may be worth the price of admission,
as Ive always felt that browsers tend to do a fairly
middling job of spacing type on screen.)
resources
A bit of backstory
These characters and features have existed for
centuries, but only recently have they become usable
on the web. Ligatures were first seen in Sumerian
manuscripts and many subsequent forms of writing
and calligraphy. With the advent of movable type,
ligatures were used to improve letterspacing to allow
spacing tighter than otherwise separate blocks of
type would allow. Many of these features fell out of
favour with the advent of photo- and then computerbased typesetting. Its only in recent years that
better font formats have made them available again,
and use of them has increased.
With the arrival of OpenType (or more correctly
Open Font Format) on the desktop and its derivative
opentype support
Here are a number of vendors and services, with some notes
on their use of OpenType.
Fontdeck.com
Fontdeck uses tags to surface typefaces that have OpenType
features enabled (fontdeck.com/typefaces/all/tags/opentype) and
shows you what OpenType features are supported. Very handy.
Fonts.com
Monotypes service allows searching for typefaces by availability
of OpenType features here: www.fonts.com/support/faq/opentypefeatures-tab. It also has an innovative way to include features in
its web interface on assigned selectors, making it unnecessary to
include your own CSS.
Typekit.com
Typekit supports OpenType features on select typefaces. Elliot Jay
Stocks, creative director at Typekit, says it will highlight and utilise
OpenType features to a much greater extent in the near future.
Typography.com
H&FJ also support OpenType features in its typefaces, with some
of the most extensive and fine-grained controls over exactly what
features you want to enable, giving you a bit more control over the
size of the eventual download. See some good documentation from
its user guide: www.typography.com/cloud/user-guide/font-features.
WebINK.com
Extensiss web font service supports OpenType features, and has a
support page listing all of the fonts that support them. Interestingly
you can view a list of all typefaces, and also lists broken down by
feature: helpme.webink.com/customer/portal/articles/346788-webinkfonts-with-opentype-features.
Above In the magenta text, no ligatures are used. Note the awkwardly
antisocial ffl and ffi
may 2014 99
PROJECTS Typography
resources
further reading
So why bother?
Design is about communication and people make
judgements about usability based on aesthetics.
So its our duty to pull out all the stops in how
we communicate with our typographic choices.
Furthermore, you must remember we read by
scanning groups of shapes, not individual letters. So
the smoother the flow, and the easier it is to grasp
groups of letters and understand them as words and
phrases, the faster the user will comprehend the
message you are trying to get across, and youll be
doing it with style.
My Sass mixin
A Sass mixin that allows you to include OpenType features in your
own projects, handling the browser prefixing changes for you.
github.com/jpamental/otfeatures
The Impact of Aesthetics on Attitudes Towards Websites
An article by Jennifer Chen published on Usability.gov.
netm.ag/usability-253
Code samples:
(use Google web fonts and include Sass files as well)
www.hwdesignco.com/otf/opentypedemo.zip
100
may 2014
Above Kerning is one of the most subtle features to illustrate, but its
cumulative can have a profound impact on the readability and aesthetics
Typography
Number case:
"lnum" : lining numbers or "onum" : oldstyle numbers
Number spacing:
"pnum" : proportional or "tnum" : tabular (for lining up rows of
numbers like financials)
Fractions:
"frac" : normal fractions or "afrc" : alternate fractions
Dont want to remember all that? If you use Sass, Ive
got a Mixin for you: github.com/jpamental/otfeatures. It
provides the list above and does all the code writing
for you. For a more exhaustive list, try Adobe: netm.
ag/adobeopen-253.
A reasoned approach
Every element of your design must be there for
a reason, but its important to remember that
sometimes, a good reason is simply for greater
beauty. And thats OK. The nice thing about
OpenType features is they fall back to regular type
all on their own, so theyre pretty safe to add to your
design, and the level of polish they add can be quite
noticeable. With greater emphasis on readability,
increased pixel density and screen quality, more
and more users are reading longer content online.
That means the benefits in readability from better
typography can quickly translate into increased
loyalty, greater perceived usability, and even parades
of unicorns and puppies (OK, so maybe that last one
is an exaggeration).
video
Watch an exclusive
screencast of this
tutorial created by
the author:
netm.ag/tut2-253
The all-new
Try it
for free
today!
Web standards
This feature has been implemented already in
Internet Explorer 10, and will be adopted in Blink
(the rendering engine for Chrome and Opera) soon.
Mozilla has also accepted the recent implementation
for Firefox.The example below gets the x and y
pointer coordinates relative to the upper left edge of
the browser window, using the pointer events. Youll
notice the code looks very similar to mouse events.
document.body.addEventListener(pointerdown, function(e) {
console.log(pointerdown, e.clientX, e.clientY);
}, false);
pointer
events
PROFILE
touch events
PROJECTS JavaScript
Download
the files here!
All the files you need for
this tutorial can be found at
netm.ag/pixi-253
A b o u t t he a u t h o r
Mat Grov es
w: www.doormat23.com
t: @Doormat23
areas of expertise:
JavaScript, visual
coding, games
programming
q: whats the worst
youve ever screwed up
at work?
a: I once made a project
that was only 99 per
cent awesome
javascript
resource
watch a DEMO
See a demo of what
well be making in
this demo here:
goodboydigital.com/
pixijs/koi_fish_pond
104
may 2014
JavaScript
</style>
<script src="js/pixi.js"></script>
</head>
<body>
<script>
// Code goes here
</script>
</body>
</html>
First, well need to create an instance of a Pixi.js
renderer. Pixi.js has two renderer flavours: WebGL
and Canvas. The best way to create a renderer is to use
the autoDetectRenderer function. Pixi.js will perform
an internal check and make sure to return a renderer
most suitable to the users browser:
var viewWidth = 630;
var viewHeight = 410;
var renderer = PIXI.autoDetectRenderer(viewWidth,
viewHeight);
renderer.view.className = "rendererView";
Now we have a renderer, we add its view to the DOM:
document.body.appendChild(renderer.view);
Its time to create a Pixi Stage element. Much like
Flash, the Stage element is the root display object
where all visual elements will be added. The only
parameter for creating a stage is its background
colour. Lets use white!
in-depth
Eat cake Full-on eye candy in WebGL with full functionality Canvas fallback
stage.addChild(pondFloorSprite);
Done! If you were to render the stage now you would
see a nice image of a rockpool floor on your screen. If
PROJECTS JavaScript
Focus on
Pixi in practice
The thing I get asked most about with Pixi.js is when were
going to add particular physics features or collision systems.
Pixi.js is a renderer rather than a games engine. Much like Flash,
Pixi.js is simply there to create interactive content. How and what
people do with it is up to them. As an example, we made Run Pixie
Run (netm.ag/runpixie-253) as our first demo of what Pixi can do. In
this instance we used it on render duties to make a slick, all-device
browser game. We recently worked with Razorfish to make the
Saver Menu (netm.ag/saver-253) site as part of McDonalds latest
campaign, which is all about a tight, interactive experience site,
tailored for desktop and tablet.
WHAT NEXT?
Done with the fishies? Heres a few resources to get you going:
Pixi.js homepage
For inspiration and examples, visit the home of Pixi.js (pixijs.com)
The nuts, bolts and forks!
See the GitHub repository: github.com/GoodBoyDigital/pixi.js
Goodboy archives
Where I go to talk shop: www.goodboydigital.com/category/pixi-js
HTML5 Game Devs forum
Where everyone talks: www.html5gamedevs.com/forum/15-pixijs
you come from the Flash side of the world then you
will know where Pixi.js gets a lot of its terminology.
Now we have a rockpool, we need to create 20
swimming fish and add them to the stage:
// set how many fish we would like to add
var totalFish = 20;
// create an array to store a reference to the fish in the
pond
var fishArray = [];
for (var i = 0; i < totalFish; i++)
{
// generate a fish id betwen 0 and 3 using the modulo
operator
var fishId = i % 4;
fishId += 1;
// generate an image name based on the fish id
var imagePath = "img/fish"+fishId+".
png";
// create a new Texture that uses the image name that
we just generated as its source
var fishTexture = PIXI.Texture.fromImage(imagePath);
// create a sprite that uses our new sprite texture
var fish = new PIXI.Sprite(fishTexture);
// set the anchor point so the fish texture is centred on
the sprite
fish.anchor.x = fish.anchor.y = 0.5;
// set a random scale for the fish - no point them all
being the same size!
fish.scale.x = fish.scale.y = 0.8 + Math.random() * 0.3;
// finally lets set the fish to be a random position..
fish.position.x = Math.random() * viewWidth;
fish.position.y = Math.random() * viewHeight;
// time to add the fish to the pond container!
stage.addChild(fish);
We created more sprites and modified the sprite
properties. Every Pixi.js sprite has a position, scale
and rotation property which you can modify to
move them around. We now need to add a few extra
properties to make the little guys swim around:
Run Pixie Whether a game like Run Pixie Run or an interactive campaign, Pixi.js
gives you the power to deliver to all devices
106
may 2014
// create a random direction in radians. This is a number
between 0 and PI*2 which is the equivalent of 0 - 360
degrees
fish.direction = Math.random() * Math.PI * 2;
// this number will be used to modify the direction of the
fish over time
fish.turningSpeed = Math.random() - 0.8;
// create a random speed for the fish between 0 - 2
fish.speed = 2 + Math.random() * 2;
// finally we push the fish into the fishArray so it it can
be easily accessed later
fishArray.push(fish);
}
JavaScript
Lets create a bounding box for the fish. Well use this
to ensure, when the fish swim out of the bounds, they
wrap around the scene. The padding ensures the fish
are off screen before it wraps to avoid any popping.
// create a bounding box for the little fish
var fishBoundsPadding = 100;
var fishBounds = new PIXI.Rectangle(-fishBoundsPadding,
-fishBoundsPadding,
viewWidth + fishBoundsPadding * 2,
viewHeight + fishBoundsPadding * 2);
The waves are created using another Pixi.js object
called a TilingSprite . Using this, we can scroll the waves
over the pond to give a nice water effect. We create a
new texture and create a new tiling sprite:
var waveTexture = PIXI.Texture.fromImage("img/waves.
png");
var wavesTilingSprite = new PIXI.TilingSprite(waveTexture,
viewWidth, viewHeight);
wavesTilingSprite.alpha = 0.2;
stage.addChild(wavesTilingSprite);
We then set the alpha of the object. This is a
Pixi.js property that sets how opaque a display object
is. Now add our new waveSprite to the stage. Only one
more thing to set up now! The displacement filter will
create the real time wobbly water effect. (Note: this is
a WebGL-only feature.)
// create a new wave texture to add over the fish
var waveDisplacementTexture = PIXI.Texture.
fromImage("img/displacementMap.jpg);
var displacementFilter = new PIXI.DisplacementFilter(wave
DisplacementTexture);
// configure the displacement filter..
displacementFilter.scale.x = 50;
displacementFilter.scale.y =
50;
// apply the filters to the stage
stage.filters = [displacementFilter];
Its time to create the update loop to run each frame
and update the position of the fish, water and
displacement. Use the requestAnimationFrame , like so:
var tick = 0;
requestAnimationFrame(animate);
function animate()
{
We loop through the fish array and update the
position of the fish based on speed and direction. The
fish are wrapped as they reach the edge of the screen.
// iterate through the fish and update the position
for (var i = 0; i < fishArray.length; i++)
{
var fish = fishArray[i];
fish.direction += fish.turningSpeed * 0.01;
fish.position.x += Math.sin(fish.direction) * fish.
speed;
fish.position.y += Math.cos(fish.direction) * fish.
speed;
fish.rotation = -fish.direction - Math.PI/2;
// wrap the fish by testing there bounds..
if(fish.position.x < fishBounds.x)fish.position.x +=
fishBounds.width;
else if(fish.position.x > fishBounds.x + fishBounds.
width)fish.position.x -= fishBounds.width
if(fish.position.y < fishBounds.y)fish.position.y +=
fishBounds.height;
else if(fish.position.y > fishBounds.y + fishBounds.
height)fish.position.y -= fishBounds.height
}
Lets update the tiling water texture. A TilingTexture
has an extra property called tilePosition that controls
the offset of the texture as it tiles. Increasing this on
each frame will give the illusion of the water moving:
// increment the ticker
tick += 0.1;
// scroll the wave sprite
wavesTilingSprite.tilePosition.x = wavesTilingSprite.
tilePosition.y = tick * -10
We also need to update the displacement map offset.
Moving this each frame will scroll the displacement
map giving the lovely illusion of rippling water.
// update the displacement filter by moving the offset of
the filter
displacementFilter.offset.x = displacementFilter.offset.y
= tick * 10
We need to render the scene using our renderer.
Calling this function will draw all of the contents of
the stage to the renderers view that we attached to
the stage. Once the scene has been rendered we
requestAnimationFrame again. This creates a loop of
constant updating and rendering:
// time to render the state!
renderer.render(stage);
// request another animation frame
requestAnimationFrame( animate );
}
Done! Dont be 'koi', load it up and try it out.
PROJECTS Tools
A b o u t t he a u t h o r
vi taly
kondr at ie v
w: www.deloittedigital.
com/eu
t: @vitkon
areas of expertise:
JavaScript, frontend
engineering
q: whats the worst
youve ever screwed up
at work?
a: an SQL delete
statement where I
forgot the 'WHERE'
clause. It was such a
relief that DevOps had
an hourly backup
tools
Yeoman generators
Getting Started
Under the bonnet, Yeoman has three tools:
l Grunt (gruntjs.com) JavaScript task runner to help
with repetitive tasks (concat, minification, Sass
compilation) and other build related tasks.
l Bower (github.com/bower/bower) package manager
for JS libraries.
l Yo (github.com/yeoman/yo) scaffolding tool that uses
a concept of generators to create a boilerplate for a
new project based on your preferences.
108
may 2014
Generator setup
Create a folder starting with generatorGENERATORNAME (for example, generator-netmag )
and run the generator. Make sure the folder name
starts with the generator- prefix and run yo generator
in the folder.
It will ask you a few questions and create a
generator core in your folder. Then you will need to
create a symbolic link to your generator folder:
npm link . This enables you to access your local
generator globally, making development much easier.
Next, create a new folder elsewhere and see what
you get with your newly created Yeoman generator,
yo netmag . Not too much to look at, is it? Lets teach
our netmag generator to do something useful for us.
Generator logic
Have a closer look at the generators code in app/
index.js. Every method you place on the
netmagGenerator.prototype will be invoked one after
another. If you need a private method that doesnt
Tools
have to be invoked, just put an underscore in front of
the method name. For example, netmagGenerator.
prototype._dontInvoke .
At the very top of the generator is our constructor
function. It links up Yeomans libraries, sets up a
listener for the end event (when the methods on the
prototype finish executing) and gives access to our
generators package.json file. We will leave that bit as it
is for now.
We need to ask a few questions in order to make
decisions on what libraries we are going to use for the
new project.
For that purpose we will substitute the default
askFor method with one of our own. This is what our
method looks like:
NetmagGenerator.prototype.askForLegacy = function
askForLegacy() {
var cb = this.async();
var prompts = [
{
Custom Yeoman
generators can
significantly improve
speed of development
name: 'legacySupport',
type: 'list',
message: 'What browsers do you intend to support?',
choices: [
'Modern',
'IE8+',
'IE7+'
],
default: 0
}
];
this.prompt(prompts, function (props) {
this.legacySupport = props.legacySupport.
toLowerCase();
cb();
Focus on
}.bind(this));
};
The prompts array contains an object for each
question. In our case, were trying to find out what
browser support is required for the project.
Remember we included Yeomans libraries at the
top? This allows us to call this.prompt passing the
PROJECTS Tools
prompts array with questions and an anonymous
function for the callback that is triggered when a user
gives us the answer. We then save the answer to the
this.legacySupport variable for later analysis and invoke
this.async to switch to the next method in our index.js .
The next method were going to add is going to ask
the user what CSS preprocessing is preferred, if any.
This method behaves exactly like our first one and
saves the answer into the this.cssPre variable.
Our next method is going to help the user to choose
a UIFramework based on their previous answers. We'll
dynamically build a choices array and add only those
frameworks that fit the bill. For example, if a user
chooses IE8+ compatibility and Sass preprocessing,
we will see Twitter Bootstrap 3 and Zurb Foundation
3 in the list of options. We will again save the users
choices into the variable this.uiFramework .
resource
source code
Check out the full
source code for this
Yeoman generator
at github.com/vitkon/
netmag
110
may 2014
NetmagGenerator.prototype.askForUiFramework = function
askForUiFramework() {
var choices = ['None'];
var cb = this.async();
if (this.legacySupport === 'ie7+') {
choices.push('Twitter Bootstrap 2');
}
if (this.legacySupport === 'ie8+' || this.legacySupport ===
'modern') {
choices.push('Twitter Bootstrap 3');
}
if (this.legacySupport === 'ie8+' && this.cssPre ===
'sass') {
choices.push('Zurb Foundation 3');
}
if (this.legacySupport === 'modern' && this.cssPre ===
'sass') {
choices.push('Zurb Foundation 4');
choices.push('Zurb Foundation 5');
}
var prompts = [
{
name: 'uiFramework',
type: 'list',
message: 'Choose your preferred UI framework',
choices: choices,
default: 0
}
];
this.prompt(prompts, function (props) {
this.uiFramework = props.uiFramework.toLowerCase();
cb();
}.bind(this));
};
Our next method will be suggesting a multiple choice
of CSS and JavaScript libraries to include into our
Tools
},
{
resources
name: '960 grid',
value: 'includeGrid',
checked: false
}
);
}
Now that we have all the answers, lets start
scaffolding our new project. The this.mkdir variable
creates folders in your new folder, and this.copy copies
files over from the generator folder to the new one.
NetmagGenerator.prototype.app = function app() {
this.mkdir('app');
this.copy('_package.json', 'package.json');
this.copy('_bower.json', 'bower.json');
this.copy('_index.html', 'app/templates/index.html');
};
NetmagGenerator.prototype.projectfiles = function
projectfiles() {
this.copy('editorconfig', '.editorconfig');
this.copy('jshintrc', '.jshintrc');
};
Dont forget to configure your .jshintrc and .editorconfig
to maintain consistent coding conventions across
your projects. I also prefer using JSHint (www.jshint.
com) in conjunction with the SublimeLinter plug-in in
Sublime Text 2, it automatically picks up .jshintrc and
shows your errors in real time as you type.
Next, we include conditions (Ruby syntax) into our
_bower.json file, which contains all our dependencies.
For example, what Bootstrap 3 with the LESS option
enabled looks like:
"dependencies": {<% if (uiFramework == 'twitter bootstrap
3') { if (cssPre == 'less') { %>
"bootstrap": "~3.0.3"<% }} %>
}
The last thing is to properly wire up all included
libraries into index.html . In our generator folder we
create the app/templates/ index.html , adding a bit of
logic to it like so:
<% if (uiFramework == 'twitter bootstrap 3' && cssPre ==
'less') { %><link rel="stylesheet" href="bower_components/
bootstrap/dist/css/bootstrap.min.css"><% } %>
When working on large scale and long running web
projects, it's crucial that we work in a unified way, in
order to keep our code highly readable, consistent,
well-documented, scalable and bullet-proof.
further information
Here are a few suggestions of where you can find more
information about the tools mentioned in this article,
including a summary of each one:
Yeoman is an OS X, Linux, and Windows friendly system-wide
command-line tool that seeks out any installed generators on
your computer and then gives them control to scaffold an app for
you. Get familiar with what Yeoman can do for you out of the box
and what other generators are out there that have been created
by the community
When you get your head around generators and building your
own custom one, you'll need to dig deeper into the prompts
system. Inquirer.JS will ease the process of asking end user
questions, parsing, validating answers, managing hierarchical
prompts and providing error feedback in your generator.
github.com/SBoudrias/Inquirer.js
JSHint is a community-driven tool to detect errors and potential
problems in JavaScript code and to enforce your teams coding
conventions. It is very flexible so you can easily adjust it to your
particular coding guidelines and the environment you expect
your code to execute in. Dont forget to include .jshintrc in your
generator to keep your code conventions and recently even code
complexity requirements in sync across the team.
www.jshint.com
Bower is a package manager for your app and the bower.
json file tells Bower which components to install in the app/
bower_components directory. These are JavaScript and CSS
components which youll use within the website youre building.
If a component is available in Bower, its preferred to use package
management rather than including component code into the
generator. Bower is also capable of understanding the difference
between packages needed for development (for example, unit
testing tools) and those needed for development and runtime.
github.com/bower/bower
If your preferred IDE is Sublime Text, SublimeLinter is a must
have plug-in. It supports lint programs (for example JSHint) and
highlights lines of code the linter deems to contain (potential)
errors in real time while you type. SublimeLinter automatically
picks up your .jshintrc configuration for your project and helps
to achieve great results in maintaining code conventions and
consistency in your application.
github.com/SublimeLinter/SublimeLinter
ON
SALE
NOW
HOT 100
THE GEAR, TALENT & CUTTING-EDGE CREATIONS
IGNITING YOUR TECH WORLD RIGHT NOW
PROJECTS Accessibility
accessibility
Using aria-controls
<div id="I">Information.</div>
The more the two elements are separated in the
DOM, the more useful the aria-controls attribute is.
Imagine a checkbox that controls the filtration of
search results, or a tab that controls a tabpanel :
PROFILE
<ul role="tablist">
<li><a href="#" onclick="displayTab(1);" role="tab" ariacontrols="panel1">Tab 1</a></li>
<li><a href="#" onclick="displayTab(2);" role="tab" ariacontrols="panel2">Tab 2</a></li>
...
</ul>
<div role="tabpanel" id="panel1">...</div>
<div role="tabpanel" id="panel2"></div>
114
may 2014
0%
10
UK
D
SE
BA
9015
VPS
T
OR
PP
SU
ly
From on
11
vCPU
HDD
RAM
www.heartinternet.co.uk
9000
Projects
Slash design/
build time with
proportional RWD
Create a cloud icon
in Fireworks
Translate design
details with Sass
Master OpenType
Get started
with Pixi.js
Create a best practice
guide with a custom
Yeoman generator