Christian Heilmann

CSS Hacks and Filters review

Tuesday, August 16th, 2005 at 4:22 pm

Cover of CSS Hacks and Filters I hate using CSS hacks and filters. I strongly believe it is not my job to cover up the mistakes of browser vendors, and I hate relying on things I cannot test myself. As I also cannot be bothered to hunt the web for every new hack and workaround I considered buying this title to put it on my desk and get it over with. This was basically necessary as a lot of developers consider naming their hacks their main valve of creativity and you have to guess what a guillotine bug might be. I admire the work of Big John, Holly, Ingo Chao and other CSS stormtroopers, but please tell us what the bug and the fix is, put it in a fat h1 and we will all find it easier (this applies for any bug, I would love to find “XHTML and Flash” without looking for “Flash Satay”, too).

Well, the book does what is says on the cover, it introduces the reader to every conceivable CSS hack and filter out there, and does it nicely and thoroughly. You get a good index and cross reference table to learn how to make which browser behave. Of course the web based resources like Position Is Everything or dithered.com are still a good idea to visit, as they will be more up to date, but for a quick off-line check, this book is a great resource.

The book covers almost all topics, that were written about at alistapart.com in the last years, rounded corners, dropshadows, print styles and multi level dropdown navigations (have mercy).

Sadly enough however, it seemed that the book had to be bigger, which is why the writer also dwelled in the JavaScript, PHP, ASP and Cold Fusion area telling the reader how to hack for CSS in those. Yes, you can send different CSS to different browsers via JavaScript, but it also means that your CSS hack will only work when JavaScript is available and you mix HTML, JavaScript and CSS, which makes maintenance in a multi user environment a real nightmare.
The ever so cool JavaScript Style Switcher example is not backed up by a server side solution, which means that users without scripting support get all the stylesheets offered without having a chance to reach them (unless their browser does that anyways, in which case even a server side enhanced one would be superfluous).
The PHP chapter fails to mention that you also need to set the expiration header to make your CSS still cacheable.
The accessibility chapter rightfully explains font sizing and print media, hints at Joe Clark’s Big stark and chunky low vision article but ends with an explanation how to hide skip links, thus making them useless for sighted keyboard users.
It is nice that these topics are covered, but the way they just scratch the surface of the issues I personally consider them more harm than helpful.

It is all in all worth its money though, especially if your development environment is Dreamweaver and you want a good “How do I use CSS with today’s browsers” resource.

Share on Mastodon (needs instance)

Share on BlueSky

Newsletter

Check out the Dev Digest Newsletter I write every week for WeAreDevelopers. Latest issues:

160: Graphs and RAGs explained and VS Code extension hacks Graphs and RAG explained, how AI is reshaping UI and work, how to efficiently use Cursor, VS Code extensions security issues.
159: AI pipelines, 10x faster TypeScript, How to interview How to use LLMs to help you write code and how much electricity does that use? Is your API secure? 10x faster TypeScript thanks to Go!
158: 🕹️ Super Mario AI 🔑 API keys in LLMs 🤙🏾 Vibe Coding Why is AI playing Super Mario? How is hallucinating the least of our worries and what are rules for developing Safety Critical Code?
157: CUDA in Python, Gemini Code Assist and back-dooring LLMs We met with a CUDA expert from NVIDIA about the future of hardware, we look at how AI fails and how to play pong on 140 browser tabs.
156: Enterprise dead, all about Bluesky and React moves on! Learn about Bluesky as a platform, how to build a React App and how to speed up SQL. And play an impossible game in the browser.

My other work: