The result of the discussion here:

http://www.w3.org/mid/514a17d4.3070...@jwatt.org

is that I've changed Firefox Nightly's handling of <input type=range> to allow it to render as a vertical slider if it has an orient="vertical" attribute on it. There was only one reply to my email to www-style, but the author suggested using an attribute which I'd also concluded was the best thing to do.

I'd like to propose that this attribute be added to the HTML5 specification.

My original email to www-style is reproduced below in case anyone wants to reply here, directly quoting parts of my original description of the problem.

-Jonathan


I'm working on <input type=range> support in Mozilla, and one of the questions that has come up is how best to allow content authors to change the orientation of <input type=range> to be vertical (so the slider runs up/down instead of left/right).

There is some vague text in the HTML5 spec describing an <input type=range> example that hints that a UA might change a range's orientation based on the ratio of its width to height[1], which says:

   Note how the UA determined the orientation of the control from the
   ratio of the style-sheet-specified height and width properties.

As far as I can tell that's all that any relevant specifications say on the matter though.

This issue becomes tricky when user agents provide pseudo-elements to allow content authors to style the component parts of a range. Typically there are two main component parts: the thumb (the bit that can be dragged left/right or up/down) and the track (a visual "gutter" or "line" that the thumb is fixed to move along).

It seems like, A), it would be desirable to be able to apply different styles to the thumb and track depending on whether the range is horizontal or vertical. For example, content authors might want to give the thumb a background image that would make it appear like one of the following two diagrams depending on its orientation:

                                           | |
                                           | |
                   __                      | |
                  /  \                    _|_|_
        ----------|  |--------           |     \
        ----------|  |--------           |_____/
                  |__|                     | |
                                           | |
                                           | |
                                           | |

It also seems like, B), it would be desirable to be able to use CSS to specify the orientation of the range, since, to a certain extent, whether the range is vertical or not is a matter or presentation.

Unfortunately, B (specifying the orientation using a new CSS property called 'orient', say) seem to conflict with A. Content author's don't have a way to select on the computed value of one property to specify the values of other properties, so they can't select on the computed value of an 'orient' property to specify different styling for horizontal/vertical range.

One way to solve the issue would be to reject B and have an 'orient' _attribute_ instead, since it _is_ possible to select on attributes.

It may seem tempting to say that if content authors are specifying different styles for vertical and horizontal range, then they can specify those styles in the same rules that specify the 'orient' property. It doesn't seem like that is going to provide for authors' needs in some circumstances though. For example, if a JavaScript library provides API to insert a "vertical range", and it specifies style="orient:vertical" on the range that it inserts.

Does anyone have any thoughts on the mechanism that should be provided to content authors to specify that an <input type=range> should be vertical, given the above?

Jonathan

1.
http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#range-state-%28type=range%29

Reply via email to