- From: Mihai Sucan <mihai.sucan@gmail.com>
- Date: Fri, 10 Mar 2006 21:46:54 +0200
- To: "Andrew Fedoniouk" <news@terrainformatica.com>, www-style@w3.org
Le Fri, 10 Mar 2006 21:27:54 +0200, Andrew Fedoniouk <news@terrainformatica.com> a écrit: > There are situations when we need to define styles > of sub-elements of some DOM element. > Such sub-elements are not parts of the DOM so exsting selectors > cannot be applicable to them. > > Examples: > - style of scrollbars of some element and their parts. > - parts of <select> element: buttons, popups, etc. > > Question is: what is the best method to define sub-elements > in CSS Selectors? I understand that this question about future > extensions/directions of CSS Selectors rather than > existing mechanisms. > > My first attempt was to use pseudo-elements > for definition of e.g. scrollbar parts: > element : scrollbar-step-minus { ... } > element : scrollbar-step-minus : hover { ... } > element : scrollbar-step-minus : active { ... } > element : scrollbar-step-plus { ... } > ... > element : scrollbar-page-minus { ... } > ... > (all 15 declaration) > > Problems with this: > 1) this system of styles must be interpreted as single block of styles - > they shall be applied all or none. > 2) such declarations "pollute" set of styles of the document - > CSS Selectors is a flat table so adding there significant amount > of separate elements which will be used only as an aggregate seems > like technically wrong. > > The best candidate as far as I can see is to use at-rules for that: > > @style-block my-vertical-scrollbar > { > scrollbar-step-minus { ... } > scrollbar-step-minus : hover { ... } > scrollbar-step-minus : active { ... } > scrollbar-step-plus { ... } > .... > } > > But I am not sure of how assignment of such blocks should be done > in grammar: > > I would like to see something like this: > > element { color:red; } > element:hover { color:blue; } > element:v-scrollbar = my-vertical-scrollbar; // note '=' sign > > Any ideas here? I'd propose a different approach. Actually, I could think of several approaches myself :). I'll try to keep the prose low and make it quick: 1. The unique one: provide DOM elements for... scrollbars, for everything. Something like: document.body.scrollbar: .top() scrolls to top .bottom() scrolls to bottom .maxX returns an integer: the scrollable area (X axis) .maxX returns an integer: the scrollable area (X axis) .goto(n) scrolls to N, where N=position in pixels document.body.scrollbar.top() -- http://www.robodesign.ro ROBO Design - We bring you the future
Received on Friday, 10 March 2006 19:56:52 UTC