Yes, yes, I know pro-ASP.NET Theme people will say "you can use CSS with themes, it's not an either-or!" but my thoughts on this matter are the interaction between Themes and CSS is weak and not well integrated.
In a large sense Themes and CSS are attempting to accomplish the same thing: abstract the presentation, and assign uniformity throughout a web site. The problem I have with Themes is they don't really seem to offer many advantages over CSS, they introduce problems when using CSS, and CSS is really the standard when it comes to this sort of thing in a modern web site.
Issue #1 : All CSS files in a Theme are automatically linked into all pages that use that Theme. But wait! I have CSS files for specific controls that I only want linked to pages that use that control. Ick, I want finer grained control.
Issue #2: Backwards inheritance. We're coding in ASP.NET, we're familiar with the concept of classes, and subclasses, and how downstream classes can override behaviors from upstream classes. OOP 101, and something that flows very nicely with the CSS concept of Cascading. It's very useful too, say when you have a high-level CSS style that needs a minor tweak on a single page. In Themes it's the theme that rules, if a given page needs a minor tweak, tough.
Issue #3: Multiplicity. One Theme per page, no exceptions. Pretty inflexible in my mind. With CSS I can assign any number of classes to a markup element, and several CSS files per page. That's been quite useful in the past for me.
Ok, ok, let's look at some of the "positives" of Themes: (I'm afraid I'm going to go into sarcasm mode here....)
You can use skin files to add markup to common elements. A common example often suggested is to setup templates for GridViews. Yeah, because all my grids on my pages are exactly the same.... Oh wait, that's actually really rare...
You can use Default Themes or Themes created by Microsoft or other third parties. Woo-hoo, just what I want, my web site to look exactly like some other web site. Thank you, no.
Organization: your images, CSS, JavaScript, skins, etc is all neatly contained in a single directory structure. Ok, yeah, but I can do that with my own structure and CSS too. In fact Themes can introduce some odd resource reference problems with combined with CSS.
Ok, ok, so do I think Themes suck? No. They have a purpose, and some web developers might find them really nice and useful. However, I don't think that CSS and Themes play all that nicely, and if you're looking at doing a really CSS-based UI for your web site, you probably don't need the extra baggage that Themes bring along.
Am I missing something? Have a good example of CSS and Themes interacting? Can you offer up a solution to Issue #1 above? I'd love to hear it, leave a comment....
It's entirely possible I'm completely missing the boat here, but I don't think so....
-Andy