Close and Go BackBack to Viget

What To Expect When You’re Expecting CSS/HTML Handoff

Doug Avery
Doug Avery , ON THE TOPIC OF General
6/26
2009
9

Picture this: You're a designer at Fancy Design Firm, charged with building out a design that another group will implement. You might never meet this group, you don't know how adept they are with buildout, and you're not entirely sure what they'll want to do with your CSS/HTML.

Even worse, maybe you're only delivering a sliver of the site, just one or two pages, and this team will need to finish out the other 90% of the markup. You'll be credited with the buildout or blamed for it, but the final results are out of your hands. What do you do?

Or, imagine that you're a client who's hired Fancy Design Firm to design the site, and you want your Stressed-Out Internal Team to develop it. You need to make sure that S.O.I.T. can correctly implement the stuff you get from F.D.F., and you even want them to expand on it, stretching the design into a full site with new styles.

The trouble? You don't know how F.D.F. codes or what to expect from them. Whatever you get from them will be final - you can't go running back every day until launch and asking them for stylesheet tweaks. You're not a CSS/HTML expert, so you're not sure you'll be able to tell what's good or not. What do you do?

A Bad Place To Be

Both parties are in a spot here: Designers are hoping their work doesn't get mangled, and clients are hoping their deliverable isn't crappy and inflexible, but neither party has a sure-fire way to get what they want.

I've been delivering buildout a lot recently, so I've been reflecting on what works best in this situation. In the interest of helping designers and clients agree on deliverables, I've written this little reference list. This is by no means a "client bill of rights," simply a set of topics clients and designers should discuss when expecting a CSS/HTML deliverable.


What To Expect from CSS/HTML/JS Deliverables

Reusability - Styles should be named and implemented with re-use in mind. Simple utility classes like "right", "left," "intro," and "hide" let clients quickly achieve design effects, and more specific classes like "feature-set" can be reused sitewide and modified to client needs. In contrast, "fall-2009-promos" is a dead class: a set of styles that the client will need to basically rewrite in order to copy.

Note about semantics: While classnames should be semantically meaningful whenever possible, clients will run into situations where their boss just asks them to float a photo to the right. Rather than making them add a ".secondaryPhotoArticle" class to the stylesheet, I'd rather give them something meaningful to THEM, like ".right."

Documentation - A designer's first instinct might be to leave comments in the code, but these tend to get ignored and bloat the filesize. Any buildout deliverable needs some kind of documentation of how the more complex elements interact, and offer ideas on how to reuse or change them.

Quick tip: Sometimes we hand off sites with an "element list" page, which has all the site's major components laid out on a single page with notes. Developers can mix and match elements as they please, instead of trying to copy pieces from finished designs.

Design Files - Nothing is final on the web, and the PSDs received from a designer should reflect this. At the very least, they should still have slices in place, but major images and sprites should be broken out into files that can be easily tweaked and Save-For-Webbed.

Quick tip: I've found that breaking elements into individual PSDs is a huge help during the buildout phase itself — it makes quick adjustments a snap.

Styles for Every Tag - Even if the design doesn't have a <dl> or <table>, for example, it needs to anticipate one with some simple styles.

Quick tip: I actually use a class of ".data" to style tables, just in case clients need to use a table for layout or import some existing tables. In a perfect world, clients wouldn't use tables for layout, but designers need to design for imperfect situations.

Validating Markup - The final markup validate, even if it won't be perfectly valid on the final site (due to outside plugins or requirements). This is a simple way to check for bad markup, as well as a way to tell if designers are working with web standards in mind.

Bugs - Everything should be built for flexibility, but between handoff and launch, there's always going to be something the design just didn't anticipate. If the client doesn't have the technical expertise to work on these bugs, they should consider keeping 10-20 hours of support time on the contract for help during the development phase. (Actually, put this time on the contract regardless!)

IE6 Support - Sorry designers, but clients should expect that you tested everything in IE6 and got it running. Clients, install something like MultipleIE to check this out for yourself.

What NOT To Expect

IE6 Perfection - Nothing should look broken in IE6, but it won't look exactly like the comp. There are some visual touches that are just too time-intensive to implement in IE6, and quite frankly not worth the time a client pays a design firm for.

Hyper-Changeable Design - There's no way around it - some things are just going to be a pain to change. Graphical navs and big backgrounds tend to be time-consuming to update, so if clients anticipate new nav items or color changes a month after launch, they should let the designer know early in the process.

"Our Internal Designer Will Finish It" - Javascript and CSS, while familiar to most designers, might not be a strength that a client's in-house designer has. If the designer needs to make major changes to complex pieces of the site (an image carousel, for example), make sure everyone knows up front, and make sure the internal designer talks to whoever's doing the buildout. This also goes for Photoshop effects: if a client expects to copy a designer's style month after month, they should ask for a tutorial on the style.


Happier Clients, Happier Designers

No one's off the hook here: In order to get a good, appropriate buildout deliverable, both parties need to set expectations and be ready to make compromises. These guidelines are just a starting point. So what do you think? Did I miss anything, or put something in that you absolutely disagree with? Let me know in the comments.

Matt Henry said on 06/26 at 01:13 PM

Another great use for an “element list” page is for quick regression testing. If you make such a page early in the development process, and make it robust enough (i.e. with examples of some of the more complicated modules from throughout the site), then it’s super handy to keep open all the time so you can periodically eyeball it and make sure your changes aren’t breaking anything you’ve already built. Not necessarily relevant to the handoff, but a nice side benefit nonetheless.

Doug Avery said on 06/26 at 01:37 PM

@Matt, that’s good to hear! I actually like to build the element list completely first (using wrappers and some layout), for the same reason. The helps with spacing issues as well as regression tests. Using it as a hand-off was just an unexpected bonus after the first time we did this.

Jeremy Frank said on 06/26 at 02:03 PM

All great advice, especially the element list and individual PSDs. Creating styles for every tag is also a good tip to follow not only for handoffs like you described, but also when dealing with a CMS that uses a wysiwyg editor like XStandard. You never know what tags a content editor will use. I also liked the idea of using a .data class for tables, in the case that a content editor regresses, and uses a table for layout.

Shah Dhaval said on 06/27 at 11:03 AM

great article !!  Learned and enjoyed reading it

Erik Wallace said on 06/30 at 09:40 AM

Nice article, I mostly only build front-end for in-house projects. I really like the idea of building an element list, it had never occurred to me before. I have also started making PSD templates of smaller pieces of the design to speed up changes and updates. Great article Doug.

Lance said on 07/02 at 01:31 PM

Hi Doug!

I just want to print this article :) But the print version is yet to be fully polished. I hope you guys spend sometime :) Viget inspire is a really nice resource for me.

Thanks!

Dharma said on 07/06 at 09:15 PM

Great post - Doug!

One thing we have been using with success is the layercomps feature within Photoshop to minimize the number of external .psd templates necessary.

Generally, we will create a pasteboard file that contains any major graphic elements (such as sprites), but will then have those separated out by layercomp so that they can all reside in the same file. For example, we will have a layercomp for primary navigation, a layer comp for graphic heads, etc.

It is not always necessary, but it does reduce the number of files we have to maintain and makes global updates a bit less time consuming.

Keep up the great work - big fan of you guys!

Doug Avery said on 07/07 at 08:31 AM

@Dharma I tend to like separate files because I can easily hit Save For Web, and the correct sizing, color depth, and filename are already set. Just open the nav, change the hover color on one area, and shift-ctrl-cmd-S.

However, holy CRAP, layer comps are fantastic. I’d never heard of this! This is going to save me/everyone a ton of time here at Viget, so thanks for the tip!

Dharma said on 07/07 at 10:33 AM

No problem - thanks!

Yeah, for whatever reason, they remain an unheralded feature in Photoshop, but they are great for efficiency.

We actually use them for most interior template designs, so one file will neatly contain all of the various screens and views. Combining those files with smart objects for persistent elements (such as branding and footers) can also save a ton of time as well.

Good luck and keep up the great work.

Commenting is not available in this weblog entry.

We're The Designers

at Viget Labs. We write about design news, trends, techniques, buildout, inspiration, CSS, and our projects.

What's a-twitter?

Follow us @VigetInspire for updates of the goings-on here or @Viget for more from all of the Viget crew. #thatisall

Recent Comments

We use it a lot at Hashrocket now. It’s made life a lot easier when coding large-scale applications.

The hardest part of SASS is going back to coding regular CSS after you’ve been in it...

Subscribe to Comments RSS RSS

Contact Us

Have any questions, comments, ideas, or secrets to share? Let us know.


How many minutes in an hour?

Sorry, you need to have Javascript enabled to use this form. (Don't blame us, blame the spammers!) If you'd like to contact us, please visit our Contact page.