W3C home > Mailing lists > Public > www-style@w3.org > November 2008

Re: Selectors Tests

From: Andrew Fedoniouk <news@terrainformatica.com>
Date: Wed, 05 Nov 2008 17:25:22 -0800
Message-ID: <49124782.5050604@terrainformatica.com>
To: fantasai <fantasai.lists@inkedblade.net>
CC: Boris Zbarsky <bzbarsky@MIT.EDU>, Lachlan Hunt <lachlan.hunt@lachy.id.au>, www-style <www-style@w3.org>

fantasai wrote:
> Boris Zbarsky wrote:
>> fantasai wrote:
>>> Well, the Selectors spec is fixable. Daniel and I are actively
>>> editing it now. However I don't think I agree that :enabled/:disabled
>>> should not apply to type="hidden". The distinction does exist for
>>> hidden controls as well, does it not?
>> Indeed.  Disabled hidden inputs do not submit.
>> If that's the sort of distinction we want for :enabled/:disabled, 
>> that's also fine by me; the spec text just needs to be adjusted to 
>> handle that, then.
> Goals for rewording:
>   - Allow HTML5 to easily define what elements are :enabled or :disabled
>   - Make sure definition of :enabled/:disabled depends not on CSS but on
>     the semantics of the markup and object model.
>   - Make sure <input style="display: none"> matches :enabled
>   - Make sure <a href=""> does not match :enabled
> Here's a proposal:
> http://dev.w3.org/csswg/selectors3/#UIstates
> Change
>  # The :enabled pseudo-class allows authors to customize the look of
>  # user interface elements that are enabled — which the user can
>  # select or activate in some fashion (e.g. clicking on a button
>  # with a mouse)
> to
>  | The :enabled pseudo-class represents user interface elements that
>  | are in an enabled state — e.g. elements that the user can alter or
>  | activate in some fashion, but that could be disabled in a different
>  | context.
> Change
>  # Similar to :enabled, :disabled allows the author to specify
>  # precisely how a disabled or inactive user interface element should
>  # look.
> to
>  | The :disabled pseudo-class represents user interface elements
>  | that are in a disabled state — e.g. elements that could be enabled
>  | but cannot currently be altered or activated by the user due to
>  | its semantics.
> Remove
>  | An element is enabled if the user can either activate it or transfer
>  | the focus to it. An element is disabled if it could be enabled, but
>  | the user cannot presently activate it or transfer focus to it.
> Comments? Suggestions for improvement?
It is not clear what :enabled means exactly.

:disabled is a state of focusable element - the DOM element that has 
some active behavior (controller) assigned to it.
That element could be :disabled, otherwise it will accept focus.
For example <input type=text> is focusable element as its behavior knows 
about and will handle setFocus() request.
Passive elements like <p> and <div> are normally non-focusable. To make 
such elements focusable we  someone should
define  <p tabindex=1 > for example.

So are my questions:
1)  is :enabled is a sort of :focusable element?
2) Is any passive DOM element like <p> has :disabled state flag by 
default? Or it has neither :disabled nor :enabled?
3) Usually <p tabindex=1 > is a focusable element so presumably it 
should get :enabled (or better :focusable) state flag
    and <p tabindex="-1" > should have :disabled flag. Is this how it 
supposed to work?

I believe (and propose) that CSS should have just :focusable 
pseudo-class. Thus all passive elements will have not this flag set
and active input elements (including those that have @tabindex >= 0 
defined) will get the :focusable state. Active input elements
that are disabled by e.g. using @disabled (and so will not accept focus) 
are not :focusable.

Otherwise we need to specify clearly of what :disabled, :enabled, 
:not(:disabled) and :not(:enabled) mean.

Andrew Fedoniouk.

Received on Thursday, 6 November 2008 01:26:10 UTC

This archive was generated by hypermail 2.3.1 : Monday, 2 May 2016 14:27:41 UTC