Thursday, July 29, 2010

Design vs. Content

I spent the past few days working on a solution that allows a designer to easily add/remove CSS class name(s) to any HTML element. My goal was to give a designer the ability to fully specify both the .css file itself, as well as (easily) mark up the HTML with whatever CSS class names were desired. I called my father and told him about it, he replied that it was not useful, as it was not how designers (people who style HTML content) are accustomed to working.

My vision was such. A DEVELOPER should design the whole web site, including a blank CSS file, would not even touch the CSS class properties: that is the DESIGNERS job. I had visions of being able to hand the logically/structurally complete site over to a designer, saying "Do what you will shall be the whole of the law" (Translation: modify the empty .css file I included for this site, and assign whatever class names you want to any of the sites HTML structure). Evidently, this is not at all how design work is conventionally done. Designers expect you to have class and id annotations that clue them in to how they should structure the content. Maybe it was naive, but this surprised me. This was of course disheartening news (wasted time), but it was also surprising. In my mind, I had pictures of designers being the artsy sort, who would not want to have the content "structured" by me. They would want the ability to "structure" the content however they see fit: they would love the freedom to be able to add class names to the HTML without needing to consult me.


  • I did not want to have to work closely with the designer. I wanted to have the ability to simply hand the product to them and say "show me what you can do". I realize that this would be a iterative process, that I pictured that I would only have to say "This I like, this I do not". I wanted to minimize my interaction to nothing more than giving my approval or displeasure with things that have been done. Put succinctly, I wanted to only interact with them on the result of the process, not have to work with them on the process itself.

    Frankly, what I want is irrelevant. If designers are not accustomed to working with such freedom, you are doing a disservice to your site in forcing them to work in a fashion in which they are unaccustomed.

  • As a programmer, I am acutely aware of modules/namespaces/whatever collisions. If I am defining things in the class of elements, and the designers is as well, how do we keep from stepping on each others toes? Simplest solution as I saw it was to not use the class property at all, and simply allow free range to the designer to modify it as they wish.

    Realistically, if you are working closely with a designer, this probably isn't as big a deal as I make it out to be. Of course, notice the words "working closely with the designer", that is precisely what I did not want to do.

  • This is pedantic, but is the class attribute of elements actually supposed to be used as markup? To me, the class property is supposed to be used purely for style, not for setting a property within a div. This is not a popular opinion at this time, and there are plenty of examples of web sites that use the CSS as a form of markup, that is, as something that might effect the business logic of the executing program on the web site.

    I can fully see why many web sites use the class names of elements for the purpose of both styling and markup. The DRY (Don't Repeat Yourself) is a pretty darn good rule. You only want to write the markup once, you have to write it in the class property if you want the css to use it, so why would you write it twice if it is already in the class property? Unfortunately, I do not have a good answer to this. It does not seem right, but it is what it is.

What do others think? Clearly, a clean separation of style and content does not currently exist in HTML. You have developers that work on generating the correct content, and you have designers that work on the styling of things, but the fact is that they often have to interact (often to a great degree) at some point. Would it be possible to design a system that would allow designers to do their jobs without ever needing to talk to developers? Where the designer, given that the content was finalized, had complete and total domain over the design? Is this even desirable?

No comments:

Post a Comment