Regular readers of my blog (both of them) may be surprised to learn that I enjoy talking about anything other than baseball, but every once in a while I like to talk about web development. After all, it is what I do for a living, and on top of that, I love it! So today, we will talk about web development. Specifically, Cascading Style Sheets (CSS).
CSS is the most wonderful front-end web development technology in the world. (By the way, “front-end” refers to (X)HTML, CSS, Javascript, and anything else that shows up when you go to “View Source” in your browser; the opposite is “back-end,” which includes the server-side scripting language, the database, and everything that goes on behind the scenes to determine what information is sent to the browser in the first place.) CSS allows (encourages) you to separate the content of your site from the design of your site, allowing you to change one without ever thinking about the other. There are a ton of great CSS resources on the web, but I will just link to one that links to many others: Veerle Pieters’ links page.
So anyway, the reason I am writing about CSS today is a column in PC Magazine entitled “Why CSS Bugs Me.” Author John Dvorak could have written a much shorter column with the same title, because the text just needed to say: “Because I am an idiot.” But instead, he spent several hundred words pointing out “flaws” in CSS that ultimately add up to, “I don’t know how to use it, and it’s not easy to learn, and not all browsers support it correctly, so it sucks.”
John Allsop and Andy Clarke have already voiced their opinions on the matter, and they are both much more significant than I am in the world of web standards, but I wanted to add my two cents. John said it pretty well when he said:
CSS, like any non trivial technology, or skill set, has a non trivial learning curve. But, it’s also not rocket surgery people.
It’s true. CSS is not the hardest thing in the world to learn. In fact, it was no harder for me to learn than HTML was back in 1998. One problem lies in the fact that so many people have been trained in the wrong way to do things (misusing HTML tables, HTML’s <font> tag, and other other elements to create your design), so part of the learning curve for CSS includes unlearning all that other crap.
But every problem that Dvorak mentions is not a problem with CSS; it is a problem with the people implementing it. Yes, Internet Explorer has some major CSS issues, although IE7 will address most of them and any decent CSS coder can work around the problems for IE6 and earlier. That is not CSS’s fault at all. And the best thing is, you get to choose your own browser!!! If you hate the way IE renders CSS — and let’s face it, that is one of the Big Three Reasons to Hate IE (along with security issues and no tabbed browsing) — then download a real browser like Firefox or Opera!
The biggest problem with CSS — and again, this isn’t REALLY a problem with CSS — is that most people don’t know how to use it effectively. Any high school kid to took an HTML class at school can slap together a website with a tables-based layout. It will be ugly, it will be bulky, and it will suck, but he can do it for you. But if you want a site that is standards-compliant and doesn’t hog your bandwidth, you need someone who actually knows what he is doing to use CSS.
There are a lot of things that are a matter of personal preference. I use PHP as my server-side language of choice, but a case can be made for ASP, JSP, Ruby, Python, etc. But let me make this perfectly clear: no web developer worth his weight in moldy tangerines can make a solid case for using (X)HTML instead of CSS for the presentation of your website. (X)HTML is used for content, CSS handles the presentation, and never the twain shall meet. Anyone who tells you otherwise is wrong, even if he writes a column for PC Magazine.