- From: Andrew Clover <and@doxdesk.com>
- Date: Mon, 8 Apr 2002 14:42:38 +0000
- To: www-style@w3.org
Ian Hickson <ian@hixie.ch> wrote:
>> ...sections 5.2 - 5.4, which don't belong in a styling language IMO...
> As the editor of the "Advanced UI" spec (aka "UI2"), I am curious as to
> where you believe such properties actually belong.
I would ask why they *do* belong in CSS. The chief traits of CSS are:
* it defines what a document looks like
* it allows the author and the user to compromise on how the document
should be styled
* it allows groups of related document parts to be styled together
conveniently through the mechanisms of inheritance and cascade
None of these apply to behavioural properties such as those proposed in
userint-20000216 5.2-5.4.
Are the properties even intended to be used by document authors, or are
they simply there to make XHTML slightly more like generic XML, for the
benefit of browser implementors? Or are they intended to make defining
new applications of XML with forms capabilities easier?
The former case seems disastrous: you end up with documents containing
forms that can only work when the correct stylesheet is applied, and
not overridden by the author in any way. Specifying an
<input type="radio">'s 'toggle-group' [1] in a stylesheet means the form
simply won't work in a non-CSS user agent, quite unnecessarily.
If the properties are not meant for document authors, why make them
available to authors? It will only encourage misuse. Even in this case,
the full behavioural properties of forms (how they work, how they are
submitted) will never be modellable in CSS.
In the latter case, isn't the idea to have all future XML-based forms
capabilities supplied by XForms anyway?
> Could you explain what alternative ideas you have?
Scripting seems the obvious approach. Attach a behaviour to form field
elements (via XBL or other means) which can handle clicks and keypresses
and know what to do with them. [2] One could even build the submission
process and link behaviour out of scripting attached to those elements,
removing the need for any special-casing at all. (This would be
'user-scripting', not turned off when 'author-scripting' is disabled.)
Whatever the solution, it should be tied to the language at use -
XHTML now, XForms later - and not to the single document in question.
As far as I can tell, the attraction of using CSS in this case is that
it can leverage W3C Selectors as a mechanism for choosing the elements
to affect. This is also the idea behind XBL's 'binding' property and
BeCSS's 'behavior' property, both of which I find extremely dangerous
from a security point of view, as well as not really being anything to
do with styling. I do not want hidden scripting lurking in my
stylesheets.
It would be useful to have a mechanism for binding behaviour to elements
that match a selector without having to put it in a stylesheet, where it
patently does not belong.
Having said all this, I must emphasise that I do agree in spirit
with the rest of the css3-userint spec, which concerns itself with
presentation. Though I might quibble with minor details [3], it's
clearly heading in the right direction, and I hope a new revision
will be available soon.
Thanks to yourself and Tantek for keeping us in touch!
[1] - I notice in the Base Style Sheet, toggle-group is applied to
checkbox as well as radio; is this a simple mistake or has
something been redefined?
[2] - One would probably want to add the facility to call some
built-in handler code rather than having to rely on JavaScript
code and DOM manipulation for each keypress in a text field, for
efficiency's sake and to allow for things that cannot be expressed
in DOM scripting, such as drag-and-drop of selected text outside
the browser.
[3] - Namely, the incredibly ugly "height: attr(size)em". Apart from
the nastiness of the implication that the attr() is replaced
before parsing the rest of the value as a length (which
could be relieved by introducing a limited form of CSS
expressions[4]), it wouldn't even work for values of
line-height other than '1em', which is not the default
value for line-height. The only way around this I can think
of for the moment would be to introduce a new unit which is
relative to the computed line height, or to interpret unitless
values of 'height' that way.[5]
[4] - eg. "height: 1em*attr(size)". I think there's a lot to be
said for CSS expressions, if well-defined and limited to
properties currently defined as <length>. As well as the
expected operators +, -, * and / (the latter two being slightly
limited as one of their operands must be a unitless number, not
a length), it would also be useful to have 'maximum of a and b'
and 'minimum of a and b' operators, and a 'round down to the
nearest multiple of' operator. These could obsolete min-width
etc. properties and make their advantages available to any
of the other properties. For example, one could ask for fonts
at 0.75em but no smaller than 9px by saving something like
"font-size: 0.75em>9px;", '>' being an operator returning
the greater of its operands. But anyway, that's wandering
way off topic.
[5] - also related to <select> elements: there is currently no way to
scroll elements to ensure that the selected option(s) are currently
displayed, which would make select-one controls pretty useless.
It would be useful in general to have CSS and/or DOM control
over the scrolling of elements with overflow.
[6] - enough already!
--
Andrew Clover
mailto:and@doxdesk.com
http://and.doxdesk.com/
Received on Monday, 8 April 2002 10:45:04 UTC