Ian details his frustration with the progression of CSS, and how in some ways it mirrors the HTML issues.

HTML 5 was driven by real world usage, and the next CSS should be similar. How much time do you spend writing your Ajax applications, where you are tweaking CSS for browser issues. I know it is a bane in my world. Layouts are very painful indeed.

It is hard to really learn CSS right. It is too tempting to tweak a padding here…. add a _margin: there, until it looks good enough. This is a really Bad Thing ™ as it means that you aren’t working out the core issue, so you can’t learn about it. We need help.

The CSS specs show their age; they come from a time where specifications were much vaguer than those of the modern day. Someone really needs to do to CSS what the WHATWG has been doing to HTML, defining everything in detail, explicitly, with strict and clear normative conformance criteria, taking implementations into account, defining things like quirks mode. (The WHATWG community refers to such a hypothetical project as “CSS 5”, as a reference to the way the current WHATWG specs define HTML5, XHTML5, and DOM5 HTML.)

Of course, we have had CSS 3 for ages, and hardly anyone implements it. How do we get the browser vendors to pony up to support these things?

All these things, IMHO, are much more important than the CSS 3 selectors, drop shadows, etc…

Comment by jamie — June 7, 2007

Even better than worrying about CSS3 – how about a consistent CSS implementation across browsers? We’re constantly looking on the horizon for the future set of browsers that comply with all standards – why not ask for them to implement what we currently have?

Who cares about CSS3/4/5 when there’s no compliance with CSS1/2 ? I’m not sure if there will ever be an end to the ‘tweaking’ we have to do to make layouts and such work correctly.

Comment by Jon — June 7, 2007

Even with a perfect spec, we would still have the same issues. I remember an email exchange with Microsoft where someone was pointing out that they were not complying to the HTTP spec. The response was that they consider the HTTP spec to be just a guideline. If they won’t do it for HTTP, why would they for CSS?

Comment by SteveB — June 7, 2007

@HarZens: it has just been a piece of what we need. i’m totally clear about the situation (css hacks, need for variables and so on).

@SteveB: I’m of the opinion that no one deserves respect who ignores standards. And when Microsoft needs years to get a new version of IE out without having standards implemented correctly (even css2) they do not deserve my attention.
I only make adjustments if the client explicitly wants me to – i’m sick of that crap.

Comment by britneyfreek — June 7, 2007

I think the current CSS specs are followed pretty well in all major browsers now (FF, ie7, Safari/Konq, Opera) — and Dean Edwards’ IE7 takes care of ie6. The big problem is the amounts of lame hacks you need to do just to do what should be simple designs — matching column heights, vertical alignment, and yes rounded corners. You need to add extra divs, use JS, use weird border hacks, etc. This is a problem with CSS itself, not with implementations. These problems were immediately apparent to web developers once we transitioned from tables to CSS back in the year 2000 or so — the design of CSS, while really amazing, lacked a few things that we really need. But the people working on tweaking the spec got bogged down. I think a WHAT-style working group would be a very healthy thing for the big browsers (and other interested parties) to set up. What is needed is pretty obvious, we just need to standardize it and then implement it.

Comment by jamie — June 7, 2007

I love CSS and I hate CSS. In a sense, it has made most of the hard stuff easier, but it has made some of the easy stuff harder and some stuff, stuff we really need, hasn’t been touched.

Without going into too much of a rant, let me just mention something that hasn’t improved a wit in the last 5 years – Printing. You can’t control where the page breaks, and 90% of my print outs split a printed line so the top half of the characters are on one page, the others on the following. When will printing reports or nice looking pages become a priority?

For any project where printing matters, we resort to creating PDFs or Word docs.

In addition to printing, I wish we had a grid layout for laying out page elements, similar to the ones used by GUI app programmers. When VB6 mostly went away, also went away the last of the majorly used GUI toolkits that forced you to use absolutely positioned widgets. Not counting the web that is.

Oh wait, we do have a grid layout… its called a table. Why is it that we don’t use those for layout? Right, semantics. Well, maybe we need a more sophisticated layout option for css then.

Lastly, CSS is ugly to maintain. The cascading part makes it especially difficult. I thought there’d be more tools to help organize and maintain CSS, but as it is, I hate going back to make changes to my code 6 – 8 months later. Thankfully we now have firebug. Still, CSS doesn’t seem to have been designed for maintainability.

OK, I’m done now. sorry for all that, I feel better though. Thanks for the topic, I’ve been rolling this stuff around in my head for a week now.

@jamie: The features you pointed out are sorely needed, but I wouldn’t go so far as to say they are more important than CSS 3 selectors.
A couple of quick examples..
tr:nth-child(odd) { background: #F1F1F1; } // zebra striped tables
a[href^=”http://”] { color: #D63600; } // all external links
div:empty { display: none; } // hide all divs which have no children

and so on. The new selectors would enable us to do away with alot of classes/id’s and also take some of the work away from Javascript etc

That’s all nice, but keep in mind when CSS becomes easy to learn and “do properly”, half of you will have to fight more for a job, since others now “helpless” will become “experts”…;-)

Comment by obrouk — June 8, 2007

I think a lot of support missing for certain CSS properties like ‘inline-block’ and various css3 featues is that they’re too hard to implement. Take mozilla rounded corners for example – they’re kind of crappy

Comment by Justin Lumb — June 8, 2007

: By controlling where the page breaks in printing do you mean something like: #myId { page-break-after: always; } ??

@obrouk :
that may be true, but there will be an important factor in the works, code quality and how effective and efficient is..
we, all the coders, have to fight with the “tutorialKids”, who underprice their works (bad bad bad quality) and we, the people who makes GOOD quality coding/programming and charge the REAL price, can’t get many jobs..

but as i said to a couple of friends…

i don’t care the money, at least, is not my first motivation for my works. i care more about the quality of the work and how important it is…
i prefer one big, good and well paid job, that 20 little “projects” for a penny… :)

@Aaron Bassett :
what you are saying is completely true…it would help A LOT and would give more flexibility while coding ;)