Book your place only £325.00
-
Birmingham, UK
April 1st, 2010
Book now
Excludes VAT.
Photo credit: © John Morrison / Subism StudiosLiked most of my projects these days, I’m designing the next iteration of CannyBill‘s front of house site in a browser rather than making static visuals of page layouts. I know I’m in danger of sounding like a broken record, but I genuinely do find the process to be faster and better at scoping ideas and demonstrating them to clients. So I thought I’d share the start of this process and the files that I use.
Back in July (after the @media conference) Simon Collison wrote about his Ultimate Package™ (no sniggering please). As Simon said.
Without question or compromise, every website needs to be built with a solid foundation layer and an Ultimate Package.
With an uncanny ability to make sense, Simon outlined Erskine's conventions and convinced me to adapt my own starting files to the way that Erskine work.
A bumper compendium of cascading and connected CSS files, naming conventions, modules, plugins and library scripts that ensure any project will stay on convention and be simpler for anyone to step into and work with at any time.
On top of this, I have found that developing my own package of conventions and library items makes designing in a browser as easy, I would argue easier, than plugging in a third-party framework like 960gs or Baseline. So what is stuffed into my package?
Package contents
There are only so many ways to express content in HTML, so I developed several files that bring together our own naming conventions and Microformats that act as a starting point for common content types including;
Over the last few iterations, I updated these files from XHTML1.0 to HTML5 so that (unless a client specifies otherwise) all our projects going forward will be written in HTML5. The attribute values I chose for elements in these templates always come from Microformats. Where I needed to extend these attributes, rather than starting from scratch I used Microformats as a basis for coming up with values such as entry-caption and entry-extended.
Assets
All of the assets that we need for a project are kept inside an assets folder that includes CSS files (more on those in just a moment), images (content images and UI), scripts and typefaces that we use for @font-face embedding.
Scripts
I keep a library of up-to-date scripts for designing. These are mostly replaced by hosted (so hopefully cached) versions when a site goes live. Using jQuery is a no-brainer, but what about Modernizr? I can't stress how important Modernizr is. It has taken designing alternatives for browsers' natural differences and implementations of CSS properties to a whole new level. It is now the cornerstone of my approach to using HTML5 and CSS.
Images
Recently I've found that separating images into folders can help enormously while designing and especially when we get ready to hand over the finished project. A temporary folder keeps placeholder and stock images separate and over the months I have built several sets of placeholder images, each with dimensions overlaid. I also store a selection of grid layout images to use as background images to make designing with CSS easier. I also keep UI icons from my favourite set tucked away in the UI folder.
CSS
The way that we structure our CSS files has changed most over the years as our ideas changed. Recently I brought our CSS structure inline with Erskine Design because, for one thing, they have great ideas and it makes the times that we collaborate with them easier. In particular, using a scratch CSS file for everyone involved makes perfect sense as it acts a place where everyone can experiment with styles before they are committed to the main, screen stylesheet. These stylesheets and others make good use of @import and the cascade to allow us to add new files without having to edit the list of linked files from every HTML document.
This set of files makes it incredibly fast and easy for me to go from rough sketches, PostIts and meeting notes to HTML and CSS. Best of all, because I never start off knowing that my markup and CSS might be scrapped later (as I would have to do if I used a third-party framework), almost 100% of the code that I write while designing makes it to the finished site. For me, running a small design business, this is hugely important. I can only imagine how, done in the right way, this process could help larger teams in larger organisations.
Will I share our package contents? I don't think so, although if you dig deep enough throughout the CannyBill redesign you'll get your hands on most of it. I don't want to share the package as a whole because I think that it is hugely important that you develop your own package of files and conventions that make sense to your projects, clients and working process. Using our package instead of your own would be no better than settling for a third-party CSS framework and all that goes with that.
Everything in our package has been built upon what we have learned from everyone else, from Eric Meyer's reset and print CSS to Dan Cederholm's grouping of elements to clear floats and onto the Erskine chaps' scratch system.
These are the files and structure that I am using for the current CannyBill redesign and all of our projects going forward. I'd be interested in hearing if you have developed your own package and what you have stuffed into it.
Join world-renowned mobile designer and author Dan Rubin for a full day learning the key steps to transform your site for mobile users, from content strategy to CSS3 to device detection and optimisation.
April 1st, 2010
Book nowExcludes VAT.
Photo credit: © John Morrison / Subism Studios18th Oct 2009A great insight, and really interesting to see how people start and organise their projects.
On an extremely small and low-tech scale, I tend to start with a Kitchen Sink of HTML and CSS styling: http://prandall.com/2009/10/16/the-kitchen-sink-of-html/
18th Oct 2009I was asking on Twitter about peoples folder structures for projects and what not. This is a great insight. Many thanks!
As both Paul and Sulcalibur have posted above, a great insight into how you structure your web projects.
At the FOWD Tour where Simon Collison presented his “Ultimate Package” as you mentioned, people were asking if he would be willing to make the Erskine package available. Simon declined for the same reasons you mentioned.
It makes sense to develop your own package so that you know (most) of the code insight out and you can diagnose problems much quicker. This sound advice from both Simon and yourself is definitely something I will be taking on-board myself.
(This comment was left on For A Beautiful Web)
18th Oct 2009Have you looked at Sprockets (http://vurl.me/BJY) for concatenating your JS files to a single file? The idea here would be to have your package for designing, but then compile every js file in a single file that would only need one http request. This would speed up the site in production, but still would give you the ease of development.
Take this one step further and you could do this then for CSS files as well, of course keeping separate files for IE. This would still be in line with progressive enhancement, IE users would get 2 files the modern browsers still only load one.
(This comment was left on For A Beautiful Web)
19th Oct 2009Ah so I get it, basically you create separate html files for separate facets of functionality, and then you grab that code when you need it?
Most definitely is a time-saver.
Following on from Colly’s blog postings, I actually wrote my own version.
Instead of having forms, tabular data and galleries in separate files, I had them in an all-in-one document, but I suppose it’s horses for courses.
What I can’t understand is why it’s taking us this long to actually do this.
(This comment was left on For A Beautiful Web)
19th Oct 200919th Oct 2009Hey Andy,
First off, exploring your work process of designing in browser rather than paint app, was very intriguing when I listened to your presentation at FABW Birmingham, So intriguing in fact when I got home I had to give it a try. However, I’m still finding the gravitation of presenting a client with a mock-up produced in a paint app too great to resist :( although I do appreciate the positives on your approach. I will have to persevere a little more.
As for you main article, many thanks for sharing, I also agree that developing your own set of foundation files is extremely useful, especially from the point of increasing productivity when working perhaps as a small business or freelancer. To this end, to make these files which are specific to your design / build process freely available to download / take copy of wouldn’t give the user any real benefits or aid any understanding of your reasoning behind them.
For me personally I have prescribed to developing new builds with a structured approach like discussed for quite a while and do find that should you need to go back to the project in say several week / months time, having a structured approach to folders, files, and code expedites the process much faster then having little or no underlying structure at all.
20th Oct 2009I’ve been working on creating my own ultimate package myself. Not just to make things faster but to make sure those pages that tend to get “forgotten” get the loving care they need. It also help to keep me consistent from project to project
By the way are you going to continue to use modernizer or switch to eCSStender?
21st Oct 2009Kevin: Are you going to continue to use modernizer or switch to eCSStender?
— As I see it, Modernizr and eCSStender serve two different purposes. Modernizr fits perfectly into my belief that we should design around browser differences, not hack around them. It’s the perfect opener. eCSStender is interesting and no doubt brilliant. But I must admit that after reading through its documentation online and listening to Aaron Gustafson (its inventor) explain it at An Event Apart, I still have not a clue how I might or can use eCSStender. But then maybe I’m stupid.
22nd Oct 2009
I still have not a clue how I might or can use eCSStender. But then maybe I’m stupid.
You’re not stupid Andy.
Right now there are only a handful of extensions available for eCSStender, but that’s changing. The first big one is support for the entire CSS3 selectors module. It’s currently available on github and supports just about everything. There are a few outliers that need tweaking (like :root, which IE6 gets horribly wrong), but things like attribute selectors, adjacent sibling selectors, language selectors, etc. are working. The eCSStender download includes examples of CSS rotation (which works) and border radius (which works in everything but IE), but they have not been broken out into their respective CSS3 module files yet as client work has gotten in the way. @font-face support is also complete and on github.
Taking a look @ eCSStender.org, you can see several of these extensions in use. As a designer, you simply include eCSStender.js and the extensions you want to use, then write your CSS as you’d like. eCSStender does the rest. If nothing else, it allows you to keep your CSS clean and as more extensions come out, I hope it will become a very handy tool for achieving cutting-edge CSS in a cross-browser and forward-compatible way.
For developers, eCSStender opens up a lot of options for patching browsers or pushing the limits of what CSS can do. But you would probably want a solid grounding in JavaScript before taking that plunge.
22nd Oct 2009Many thanks for explaining Aaron,
eCSStender makes a lot more sense now :)
There are currently no tweet replies. Add one?
An archive of blog entries since 2004 on subjects including CSS, web standards, accessibility, website design and development.