Bulletproof Web Design, by Dan Cederholm. New Riders (Peachpit).

[Many thanks to Harvey Green for this review]
This book is intended to be a hands on guide for designing “bulletproof” web sites using CSS (Cascading Style Sheets) and XHTML. By bulletproof, the author means sites that will cater for the widest possible number of web browsers, various window sizes, be easy to maintain, and cater for users who have accessibility problems, e.g. those who are visually impaired for example.
The author, Dan Cederholm, has definitely got a lot of experience in this area, having worked for companies such as Google, Blogger and MTV. He has organized the book into 8 chapters, each one concentrating on one particular aspect of web design, including font size, tables, navigation menus, and rounded-corner text box layouts. The final chapter brings all his techniques together into one web page of a sample website.
The author makes it clear that creating “bulletproof” websites is not easy. Of course if you are designing a site that has millions of users, then it would definitely be worth spending a lot of time and effort implementing all his recommendations in order to improve the look of your site for a couple of extra percent of users. It’s really a matter of taking what you want from this book as it suits your particular problem or project.
On first looking at this book’s chapter headings, I thought that there wouldn’t be much in there that I didn’t already know something about, but the detail with which the author discusses the topics is incredible. The first chapter on font size for example discusses his own solution for creating site-wide bulletproof font sizes by using a combination of a CSS font size keyword used as a base (e.g. “medium”) along with a percentage which is relative to that base, all of which are done via CSS. That said, even with this first chapter on font size, to implement his recommendations requires you to also include some non-standard “hacks” within your CSS code to workaround bugs in browsers such as IE5. These hacks are explained fully, but I must admit this put me off quite a bit, since I personally would rather have clean code which is easy to read than code which has some embedded hacks to support old browsers.
One chapter I have to mention is the one entitled “No Images? No CSS? No Problem!”, in which the author describes his method of still presenting a readable website even when there is no CSS support and no images can be displayed. I think personally that it’s not worth bothering with such cases as it would be such a tiny percentage of users (if any) that would be affected.
The aspects of his solutions that are particularly attractive are those like the chapter on bulletproof navigation menus, which will in the long term make your website easier to maintain. Instead of traditional image based tab menus, he describes a method using CSS and the HTML <ul> tag (unordered list). This stores all the text and links together in the HTML instead of the old fashioned method of creating two images per tab (one selected and one deselected) which must be redone when its text changes.
If you’re an ASP.NET developer, then to some degree a lot of the work of making your site cross-browser compatible will be done for you automatically by the ASP.NET engine – since it automatically detects what browser is running on the client and generates the relevant HTML code. Also, the navigation controls available in ASP.NET are very high level and easy to maintain using XML sitemaps. Nevertheless, I would say this book is still definitely worth a look – the techniques explained will certainly improve the layout and structure of your website and will give you insights into how to solve various classical problems of website design.