Bulletproof Web Design
Dan Cederholm is, without question, one of the more glamorous web designers / bloggers of the web standards movement, as evidenced by the popularity of his website SimpleBits. His name is stamped on countless blogrolls for both his CSS code-slinging skills and his easy writing style and distinct personality. Those qualities led to the success of his first book and play an even more important role in his sophomore effort.
Where Web Standards Solutions led us through practical uses of XHTML and basic styling with CSS, Bulletproof Web Design takes us down a road of real-world scenarios where even the most carefully crafted layouts come under fire from unpredictable content changes, text resizing and other external factors. The theme of the book is contingency development.
As Cederholm points out over and over again, table-based layouts are restrictive, code-heavy heathens that have no place in contemporary development practice. This we all know. But Dan goes one step further in showing us how to implement flexible and forward-thinking designs with CSS.
The first chapter is about text. This is appropriate, since the next several chapters are all about how to code CSS widgets and modules for unplanned text changes like additional content and user resizing. The author subscribes to the keyword method of text sizing—essentially starting with the keyword “small” and using percentages to adjust different pieces of content, like setting the body at “small” and then an H1 at 150%. Although it can be hell when you start nesting percentages, this is generally accepted as the most cross-browser happy way of dictating text size.
“Scalable Navigation,” “Expandable Rows” and “Indestructible Boxes” are chapters that deal with creating CSS constructs that elegantly stand up to the aforementioned user text resizing and content changes. While the theme is constant, Cederholm approaches these problems with different creative solutions mostly hinged on hooking different aspects of a box to HMTL elements.
In “Creative Floating” and “Fluid Layouts,” the book discusses creating layouts with CSS, still a point of argument and confusion among many developers. The author gives a clear and definitive guide to floats and how to clear them, then a clean method for dynamic layouts using percentages. All in all, great, meat-and-potatoes CSS techniques collected under one title.
Beyond this material, the book has one high point and one low point. The chapter on styling tables is really good, and should be required reading for all CSS newbs; in my travels I have found many standards-conscious developers who do not know how to properly style tabular data—a shame, since there’s a lot of room for innovative and user-friendly design.
The weakest chapter is called “No CSS? No Images? No problem.” Dan discusses the need for testing under these conditions, which is a great if not obvious point. Unfortunately, this only lasts a few pages, after which the chapter falls away into a list of recommended testing tools like the Web Developer Toolbar for Firefox, the Web Accessibility Toolbar for IE and the W3C’s validator. Fine material for a CSS neophyte, but I was hoping for more content on what the chapter’s title promises.
Bulletproof Web Design is not a scholarly tome. It clocks in at just 280 pages, with a tremendous amount of space spent on code examples (fine) and explaining why table-based layouts are bad (redundant). For a newcomer to CSS, it should be required reading, along with Cederholm’s first book. The editing could also have been better; I caught several grammar mistakes and there is an entire page missing (pg 196).
The presentation is very slick. Pages are full color and it’s obvious Dan had his hand in the design—his use of bold colors and iconography are everywhere. Overall, Bulletproof Web Design is not an essential part of a developer’s library, but an easy read and a nice complement to your other CSS books.