W3C home > Mailing lists > Public > www-style@w3.org > October 2005

Re: Simple template-based editing

From: Matthew Raymond <mattraymond@earthlink.net>
Date: Sun, 02 Oct 2005 23:06:33 -0400
Message-ID: <4340A039.2080604@earthlink.net>
To: Andrew Fedoniouk <news@terrainformatica.com>
CC: W3C CSS <www-style@w3.org>

Andrew Fedoniouk wrote:
>[Matthew Raymond wrote:]
>>  The <table> example just strikes me as being presentational use of
>>table markup.
>>The <option> elements can be styled as "display:
>>table-cell", with the <select> styled as "display: table" (or something
>>like that, since I'm not sure how you want this to look).
> 
> Couple of examples:
> 
> http://terrainformatica.com/hsmile/images/controls2.jpg
> http://terrainformatica.com/hsmile/images/hsmileselect.png
> 
> Again <select> here is just a div with overflow:auto
> correspondent behavior knows of how to select
> contained <option>s.
> 
> And more:
> <select>
>     <ul>
>           <li style="role:option">one</li>
>           <li style="role:option">two</li>
>           <li><option>two</option></li>
>     </ul>
> </select>

   This is all kinds of corrupt. First of all, the unordered list markup
serves no semantic purpose. The <select> is already a list of options to
select from, so I can only assume that you're using the list markup for
list-like presentation. This is clearly the domain of CSS, and could
probably be achieved with just the <option> elements using existing CSS
selectors and properties.

   Secondly, you're using CSS, which is supposed to be exclusively
presentational, as a way of assigning semantics to specific markup. This
is totally backwards. The markup holds the semantics, and CSS holds
presentation. For that matter, a CSS property is supposed to be a
_hint_, and therefore may be disregarded by the user agent. As a result,
your list item markup isn't even guaranteed to behave like an option,
even if the user agent is fully compliant with CSS.

>>>Another example - labeled check box:
>>><input type="checkbox">label text</input>
>>>
>>>CSS:
>>>input[type="checkbox"]
>>>{
>>>   display: inline-block;
>>>   background-image: url(stock:checkbox);
>>>   background-repeat: no-repeat;
>>>   background-position: 0 50%;
>>>   padding-left: 16px;
>>>   behavior: checkbox;
>>>   role: form-field;
>>>   ... etc.
>>>}
>>>input[type="checkbox"]:hover
>>>{
>>>   background-image: url(stock:checkbox-hover);
>>>}
>>>.. etc.
>>
>>  Not sure what this is about. The "behavior" and "role" properties
>>sound like they're dangerously close to XBL/HTC territory.
> 
> Again these are just my personal experiments. I am not proposing them 
> formally.
> Consider them as a proof of concept - system of input elements
> can be build using CSS and some arbitrary XML alike DOM.
> Just need two additional attributes: role and behavior in CSS.

   If I understand this, "role" is a semantic property, while behavior
is very similar to the "behavior" property used by HTML Controls (HTCs).
While there is value in binding markup and script via CSS, semantic CSS
properties are a horrific idea. It essentially relegates markup elements
to being placeholders for user-defined semantics. The actual markup
would become something web authors would ignore, even when using an
external stylesheet, which could result in pages that have meaningless
markup that does nothing when the stylesheet fails to load.

> Behaviors can be intrinsic and/or defined as ECMAScript objects.
> The main point - they are assignable through CSS. Having this
> we can define what we have in HTML now but for any arbitrary
> markup language.

   You're just transferring semantic definitions from the markup to CSS.
This doesn't actually solve anything. All it does is move language
definitions from XML and HTML into CSS.

> The reality:
> No one UA now is using native UI widgets nor following OS guidlines.
> as they are trying to be OS agnostic. Good it or bad - I don't know.

   That's misleading. Most browsers do have their own widgets, but only
because the original operating system widgets didn't support the range
of features required for web browsing. In most cases it's considered a
bug when HTML widgets deviate from the native UI conventions. Programs
with themes/skins are a special case, but even those have user interface
conventions, even if they're not those of the operating system. In the
case of Mozilla, I believe their design philosophy is to allow the user
interface to be as close to the OS and the theme author chooses, so
themes that exactly duplicate the local UI are entirely possible (at
least in theory).

   The bottom line, though, is that breaking UI conventions confuses
users. The user expects certain behavior and presentation when
performing a certain task. It's poor design to deviate from those
conventions without cause.

>>>Plain text representation of textarea is what to be sent to the server as 
>>>a value of the form field.
>>>And this is part of behavior to determine what exactly is it.
>>
>>  Clearly only plain text is sent to the server, since the default
>>contents are supposed to be plain text.
>>
>>  When I experimented with placing markup inside <textarea> in an XHTML
>>area, the elements and their children were ignored in Firefox, while
>>Opera ignored the entire contents of the <textarea>. So clearly you
>>can't put markup inside <textarea> in an XHTML document and expect it to
>>be supported in legacy browsers.
> 
> I am experimenting by my own and not hacking legacy browsers
> I have my own engine for that.

   Who said anything about hacking. I just observed how the browsers
respond to specific markup, and it didn't turn out too well. You can
implement new features in your own code, but that doesn't result in old
content utilizing your new features, nor does it allow legacy browser to
make use of content using your new markup in any reasonable fashion.
Received on Monday, 3 October 2005 03:06:42 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 27 April 2009 13:54:41 GMT