Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New property to control the direction of slider controls #9832

Open
mfreed7 opened this issue Jan 22, 2024 · 4 comments
Open

New property to control the direction of slider controls #9832

mfreed7 opened this issue Jan 22, 2024 · 4 comments
Labels
Agenda+ css-forms-1 HTML Requires coordination with HTML people i18n-clreq Chinese language enablement i18n-jlreq Japanese language enablement i18n-mlreq Mongolian language enablement i18n-tracker Group bringing to attention of Internationalization, or tracked by i18n but not needing response. open-ui Issues that desire to have Open UI input

Comments

@mfreed7
Copy link
Contributor

mfreed7 commented Jan 22, 2024

I'm extracting this question from the various discussions in several forums:

For slider controls (<input type=range>, <progress>, <meter>, potentially <input type=checkbox switch>, etc.) there is a desire to be able to control:

  1. The orientation of the slider: horizontal vs. vertical.
  2. The polarity/direction of the slider: which way is toward "more".
  3. The writing mode and direction of any text associated with the control, such as tooltips.

In current browsers, #1 is controlled by the CSS writing-mode property, and #2 is controlled by the CSS direction property. This does allow full control of orientation and direction for sliders, and at least recently (thanks @dizhang168), this behavior is implemented interoperably, despite a lack of standards for this behavior. However, because of #3 (see whatwg/html#4177 (comment) in particular), it might make sense to have a specific CSS property to control the orientation and direction of slider type controls. One tricky detail will be getting it to behave predictably in the face of existing writing-mode/direction behavior, and maybe even the non-standard orient=vertical.

@yisibl
Copy link
Contributor

yisibl commented Jan 23, 2024

Placeholders.

I will add a detailed proposal here later.

@r12a r12a added i18n-tracker Group bringing to attention of Internationalization, or tracked by i18n but not needing response. i18n-jlreq Japanese language enablement i18n-clreq Chinese language enablement i18n-mlreq Mongolian language enablement labels Mar 5, 2024
@annevk
Copy link
Member

annevk commented Mar 5, 2024

Given that https://w3c.github.io/aria/#aria-orientation exists I wonder to what extent we should consider this to be a presentational aspect of the control. Maybe orient=vertical is the right approach?

@tabatkins
Copy link
Member

tabatkins commented Nov 8, 2024

I'm curious what value knowing the orientation in ARIA brings.


I agree that (ab)using writing-mode and direction for this is pretty hacky. We really should just add a dedicated property for it instead; those writing orientation properties have side effects we don't really want to invoke.

Quick proposal:

slider-orientation: [ inline | block | self-inline | self-block ]
                 || [ start | end | self-start | self-end ]
  • First value controls whether it's aligned with the inline axis ("horizontal") or block axis ("vertical"). Per usual for these sorts of values, plain values are relative to the containing block's writing-mode, self-* are relative to the element's own writing-mode.
  • Second value sets whether the "low" value is toward the start side of that axis, or the end side. Again, plain values use the containing block's direction, self-* use the element's own direction.

If we give it an initial value of self-inline self-start, this'll automatically play nicely with the existing writing-mode/direction hacks, I believe, and in the default case (where you aren't setting either of those properties) will correctly give a horizontal slider with the low value toward the left (in English). You can also override that to, say, inline start, and then use writing-mode/direction to change how the text in it renders without affecting the slider itself.

@annevk
Copy link
Member

annevk commented Dec 10, 2024

I discussed this with some colleagues and one of them shared this insight:

VoiceOver will announce the orientation of controls when you land on them (if you want an example, feel free to try out the sliders on this page). Imo, vertical vs horizontal sliders can have implicit meanings (think: volume bar that goes from bottom to top, 0 to 100 ), vs a horizontal slider that may be used to pick a point on a spectrum between two things in opposition.

That indicates this is a semantic aspect of the control and thus should be controlled by HTML.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Agenda+ css-forms-1 HTML Requires coordination with HTML people i18n-clreq Chinese language enablement i18n-jlreq Japanese language enablement i18n-mlreq Mongolian language enablement i18n-tracker Group bringing to attention of Internationalization, or tracked by i18n but not needing response. open-ui Issues that desire to have Open UI input
Projects
None yet
Development

No branches or pull requests

7 participants