html and css complexity

We html/css people like to complain. About the specs, limitations of the language, lack of browser support and lack of proper methods to implement certain design elements. There is plenty to complain about, but one could ask, are we right complaining about them all the time? This week Zeldman published an article that seems to suggest we should cherish the simplicity of css rather than complain about it. I don't know if I can agree to that.

easy does it

The general idea behind Zeldman's article is that since easy things are easier to pick up, they have a better chance of succeeding. The web became big because everyone was able to make a site. html and css were picked up for similar reasons. Vendors found the languages easy to implement, people found them rather easy to learn. And so every fanboy in the world was able to make a site about whatever subject he fancied, it only took about a day or two to get something online that looked remotely decent. All that remained was content, and many a fanboy has plenty of that.

Of course there is certain truth in this statement. Simplicity made the web accessible to many and made it possible for people to publish their own content. It helped make the web.

easy did it

While I agree this was a key aspect to the success of the web, at the same time it is also responsible for the mess we are in now. Everyone's nephew was able to make a site, and so everyone's nephew did, without too much knowledge of what they were doing. Therefor, the web was, and still is, a complete mess of crappy html code and hilariously bad css. The perceived simplicity made the web crap from a technological point of view, as it successfully hid the complexities.

Today, the web is a different place. We live in a semi-post-web2.0 era where there is little room left for little fansites looking like the ones made ten years ago. The days of making your own site are basically over, as you don't need to know any html and css to get your own little hideout on the web. You subscribe to a free blogging service, download one out of a million possible themes and off you go. The responsibility of html and css has shifted from your every day Joe to Joe Professional. This shift is very important for the continuation of the web and for our line of work, since it allows us to tackle bigger, more complex projects in a more professional way. The web is growing, the days of everyone's nephew are over.

simple is complex

I agree that many ideas about the future of css are somewhat far-fetched. Constants might be nice, but stuff like inheritance, macros, conditional statements and the likes don't really belong in css and will only result in more styling chaos. That said, css quickly needs to get a level where a series of best practices and solid methods of working are established. Sadly, the current restrictions are preventing this at the moment, of which css simplicity is one.

More importantly, the simplicity of css turned it into something very complex indeed. We have to use the little means we have to build complex sites, and so we abuse everything we have at our disposal to come to the wanted result. Many properties (like float) are used outside their intended purpose and confuse newcomers to the job. Even oldtimers have a hard time explaining all the finesses of seemingly simple things like floats, margins and paddings.

times change

Simplicity might have introduced css, times have changed and today css is an accepted language. It is time to let the language grow. The same simplicity that made css big is now suffocating the language and causing a whole lot of trouble. What was once simple has become very complex, because the context (building websites anno 2009) has changed. The result is quite obvious looking at many existing tools, programs and sites.

Personally, I am tired of dealing with horrible html documents and badly written css. When I have to make a site wider, I want to adapt one value in the css and leave it at that. Not run through a whole css file with a calculator next to me to recalculate a bunch of unnecessary widths. When I need to style a select box, I don't want to find out the box is actually constructed out of three input type="text" elements, two of which are used for styling the arrow. I am tired of styling applications obviously constructed over the course of 10 years and handled by a village of developers. All of these examples are direct results of the simplicity of the languages.

Consistency and flexibility should become the keywords of the next wave of css improvements. When I style a form on one page I want it to look the same on all other pages. The only way to make this work is to claim our job and to make sure the tools we work with become better suited for professional use. Does this mean html and css will become harder to learn? Sure, but if this means it will reduce web-tools built by Java programmers or simple amateurs at home with little interest in writing flexible and correct code, I'm all for it really. The web has come to a point where it has proven its use, now it's time to take it one step further.


I guess if you're fine with all the above then you might promote the simplicity of css as something positive. I acknowledge its usefulness in the past, but it is really time to move forward, otherwise we'll be in this same rut for another 10 or 20 years. The web matured, now it is time for some of the corner stones of the web to do the same. It is time to add complexity to html and css so working with these languages will become easier, more flexible and more standardized. And people wanted to do webdesign will simply have to learn the trade, not dabble along while screwing things up for the rest of us.