-
Notifications
You must be signed in to change notification settings - Fork 716
[css-ui-4] Change the pointer cursor to indicate any interactive element. #1936
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
Comments
This seems reasonable to me. I'll run it by the WG. |
You give valid arguments in your post why it's ok to use pointer for interactive elements, but why it should be a standard for every single site and every interactive element?
This seems to me as a 'dirty hack' to ignore actual problems caused by poor design: lack of affordance or false affordance (appearance doesn't express the behavior), element misuse. These are the issues that should be addressed in the first place. Cursor is just a side-effect. The single most common problem I encounter on almost any site is when there's a content that looks like it has a link (image, text with underline), but it actually has none, is also provided with a pointer cursor on hover, which makes you think you can copy it or open on a new page. That always leads to frustration and you implicitly encourage them to continue doing that. With that said, I don't really mind a common cursor for every interactive element, but it should be different from the link cursor to exclude any misinterpretations. For example a hand with an arrow for links (similar to current |
@CyberAP Re: your “negative side-effects”:
The problems you're talking about have nothing to do with cursor. Yes, those are valid problems, yes, they are serious, but they should be solved alongside the cursor problem and not instead of it. |
This comes down to a change of definition to reflect reality better, and I am all for it. Personally, I wouldn't mind if browsers actually made pointer cursor the default for buttons. But that's a much trickier issue, since it would be changing well-established defaults. However, that's not what @kizu is suggesting here, and discussion of that possibility shouldn't derail the simple suggestion. |
By interactive element, do you mean:
If the definition is changed as suggested then the cursor will/should be permanently set to pointer, diminishing its meaning and usefulness. |
@adamsilver I'm not sure why you have chosen this passive aggressive tone which can easily derail the conversation. Try not to do this. That said, if the “interactive element” would be introduced, then its definition should be added somewhere in the specs too. However, there is a chance that people from the csswg could reformulate this in a different manner, in a way that would be clearer and more understandable. The example in my proposal is just an example, a draft. Not the final version. So, if you'd like to be constructive, you could try to think about the idea of this issue and not about the wording. |
@kizu, what did I say to cause you to think I was being passive aggressive? I don't see which part of my feedback wasn't constructive. Surely it's you that's derailed the conversation by moving the subject away from the cursor and toward me/my apparent tone/etc. |
@adamsilver Your first comment here looks much like a “straw man argument”. Your second comment confirms that you're not interested in a conversation about the topic, so this is the last time I'd ask you: if you want to be constructive, you can contribute to the conversation by either reformulating the wording that you find incorrect and/or by presenting your arguments without the snark. Otherwise, I would just need to stop to interact with you here. |
I'll bring this back to my original question/comment. What exactly do you mean by “interactive element”? Does that include, for example, labels, text, images, whitespace, form controls? Or are you just saying “buttons” should have the pointer? In either case, can you please clarify exactly what you mean? When it comes to buttons there's some ambiguity there too: |
All kinds of inputs are interactive elements too. For example textarea: it usually sussgest with beam cursor that I could type in it. Pointer would just mislead here. Another example: range element, which you mostly use for dragging a hangle to get a needed value. Sure, you could also click to get a specific value, but how you’d make it work: one cursor for clicking, one for dragging? I don’t think so. As far as I see you need to specify not just “interactive elements” group for applying pointer by default, but somehow narrower group which would actually benefit from it. Links, buttons, sure. But what else? |
Ok, I'll quote from the description of this issue:
I've highlighted there “that did not have any other cursor defined for them”. Text inputs, for example, already have a cursor: caret-like So, what I mean by “interactive elements” that should have pointer cursor (or, essentially, a cursor that is different from the default one) — any element clicking on which once with the primary click would result in an action. If clicking on it won't result in an action, then it shouldn't have a pointer cursor. If there is a more common or encouraged action that could happen when you interact with an element (like dragging for elements that also can be clicked), then, of course, the more fitting cursor should be applied. And, yes, any button-y things like inputs with types Static text, whitespaces (uh), images — unless they're interactive, should have the default cursor (or more appropriate like the text one for text). Labels for text elements or for other inputs that could get focus… I'd say pointer would be ok as well, but only if there'd be also a visual highlighting of the element which would become focused on hover. And I think that cursor over labels is really important, as it would mean people would know that they could actually click on those labels to interact with the associated inputs. Otherwise, people who have used to badly designed forms that don't have interactive labels wouldn't dare to click on the labels and would spend more time struggling to hit the smaller radios or checkboxes. Nobody is arguing that each HTML element should be used properly. That they should have all the available states designed nicely and distinctively. But the cursor should be one of those tools that developers and designers should be able to point to the interactive elements (sorry for the pun). Yes, this cursor won't help for those who're using alternative input methods. But if we can help those who're using mouses and trackpads — why not? And if we would have ways to find how to help in those alternative cases only — why wouldn't we use them? We should strive to make things better wherever we can, not discard those partial solutions that are obviously won't work in the conditions they were not supposed to. |
Yes, most elements are or could be interactive, so a more precise definition would be useful. The key feature of buttons and links is that a single click, with the primary mouse button, triggers an activation behavior. The finger pointer cursor has therefore come to mean "click here". Working from @kizu's proposed text:
We can replace "any action" with a more specific description:
And while we're editing, we could add a visual description, to be consistent with other descriptions in the list:
|
I support Amelia's proposal.
|
None of operating systems uses that cursor on buttons etc. So why in the web it should be different? Designers use this cursor because of ignorance and, presumably, to compensate bad design decisions when it's not obvious which element is actually interactive. Unfortunately, that doesn't make it accessible, because you still need to hover cursor over the element. Many devices even unable to do it at all. So, I'm against it. Please, don't make bad design decisions spreading. |
I agree with @GreLI. Users don't know where the browser or OS ends, and the web page begins. “There’s no distinction between what’s a browser, what’s a website, what’s an operating system” — Jakob Nielsen, Mobile Usability Futures |
If we do not update the default styles of native buttons, checkboxes, etc... then I disagree with this proposal. If the only use of pointer in the UA stylesheets is for links, then it should be stated in the spec as being for links-like things. Changing the style of native buttons is going to be problematic for us as we have to match the Operating System guidelines. If you believe the operating systems should change their guidelines, I'd recommend you send that feedback to them, not to us. |
I am concerned with changing this description which has been this way for a very long time (10+ years). To consider this text description change, I would need to see additional tests (feel free to link to them directly here in comments) that demonstrate existing interop with the proposed change. (if there is not interop on it, or worse, interop against it, then I don't think we can make this change). |
@tantek The original proposal would only change the semantics of when authors may select a particular cursor value for their content. There is nothing to test as far as browser behavior goes. If the working group decides to go a step further, and also recommend changes to default user agent styles (as @FremyCompany suggests), then tests would be appropriate. The tests should be organized with other tests of the user agent stylesheets for HTML. In other words, they would be probably HTML tests (not CSS) and SHOULD tests (not MUST). (As an aside, as I go to press the "comment" button on this very page, I notice that my cursor changes to a pointer. Now, I'm not saying that GitHub is a beacon of best practices in web design, but users are used to this behavior because it is used on all sorts of sites.) |
When I wrote this issue, I proposed to only change the description, without enforcing it on browser vendors to change the default cursor for the buttons. So I'd propose just the change of the wording to something like @AmeliaBR wrote at this comment for now. |
(removed stale Agenda+ label - please re-add when needed) |
I don't agree with that article as well, and it doesn't argue against any of the arguments in my article. Though I'm not sure all sides could come to any consensus, but from the usage in the web its obvious that a lot of sites use |
I agree that the issue is mostly about matching the reality where too many people (both devs and users) treat the pointer cursor as an (additional) indicator of "clickability", and where sometimes there is no clear distinction between different kinds of controls that one can activate. So I like the @AmeliaBR's suggested wording from the comment above. However, I believe that the spec should warn against making the cursor change the only visual indicator of interactivity. Maybe it would be worth to add a note that using |
Excellent suggestion.
Distinct hover styles don't help on touch screens. Keyboard focus styles are already required & expected. Making buttons look like buttons and links look like links is still the best approach for pointer users, so they know to point the cursor at that element in the first place. |
I'm pretty sure this trend is much older than the flat design trend. Changing the cursor for "all clickable things" to I suppose that the main reason for that trend was lack of other interactive elements in early HTML and browser limitations for styling (e.g. supporting of |
JFI, MDN has been teaching web devs that |
|
The Working Group just discussed The full IRC log of that discussion<dael> Topic: Change the pointer cursor to indicate any interactive element.<dael> github: https://github.com//issues/1936 |
Interestingly, Gmail recently changed its cursor behavior: while in the "Classic" version of Gmail interface there was a clear distinction between "links to the objects" (individual mail items, folders etc.) with pointer cursor and "buttons of the actions" (reload, reply, delete, change settings...) with default cursor, in the "New" interface all clickable elements have the pointer cursor. Isn't this an evidence of the prevalence of the "pointer means clickable" approach on the web? |
I don't know. I like the 🎯 |
I'm not a part of any formal W3C process, just a "concerned citizen of the open web" for whom finding this issue was the end of a long strange rabbithole that started with a chat thread questioning whether or not it was appropriate to use the "pointer" to indicate a "clickable" element (so i.e. the exact same thing you have all been talking about here for a while). I'll just share some observations I made along the way to provide an outside point-of-view:
|
Thanks for the feedback.
You're following it perfectly: civil discussion in this github repo is the way it's done.
Do you think it would help if there was some wording in the standard, not just for the Or maybe just a note next to the pointer value that "This value is commonly, although not universally, used by authors to indicate all clickable targets, rather than just links". |
@frivoal I would think for the case of providing an affirmative defense for practitioners who wanted to use the |
@FremyCompany You were one of the main persons pushing back against the normative change. What do you think about the note (read the last 3 comments)? |
|
I have not changed my point of view that if we do not require user agents to use the |
But I am not opposed to try to change the default cursor on buttons and other interactive elements, just don't think this is worth our time, and frankly Edge cannot commit on doing this, but if other vendors want to experiment with this, and can show this is a sustainable change, I'm sure we'd happily follow. But changing the spec in a way that makes every user agent stylesheet invalid without checking if this is fixable first doesn't seem the right way forward. By the way, the |
As far as I can tell, we're still on the previous situation then. Browsers don't want to change what uses the pointer cursor by default, nor is spec text that suggests that it may be used for other things welcome as long as this is true. @atanassov @astearns I don't think any new information has been added since we last discussed it, so it is not clear to me that it makes sense to try and rediscuss it on the call to try and overturn the previous resolution. At the same time, it is also clear that this resolution does not satisfy the person who reported this issue and a number of people who are in agreement. What do we do? Mark it as an objection and move on? Reopen anyway? something else? |
I can only repeat myself there: #1936 (comment) I'm not sure why you're talking about |
I agree with @kizu - it's easy enough to just say "this value SHOULD be used on links, and CAN be used on other interactive elements to indicate 'clickability'". Or even upgrade the CAN to an actual 2119-MAY. (I also use |
The CSS Working Group just discussed
The full IRC log of that discussion<dael> Topic: Pointer Cursor wrangling<dael> github: https://github.com//issues/1936#issuecomment-419616109 <dael> florian: I think we have strong consensus that we do NOT want to change UA requirements as to what they should do with pointer cursor. But there is a fairly large contingent of authors that think this is an author requirement and if you do pointer on anything other then link it's invalid. <dael> florian: Large part of web does things like pointer on button <dael> florian: Is there room for a note or some wording to say UA do links and links only, but authors can put it in other places <dael> astearns: Last comment in issue TabAtkins suggested the sentence [reads] <astearns> this value SHOULD be used on links, and CAN be used on other interactive elements to indicate 'clickability' <dael> astearns: Is that sufficient? Acceptable? <dael> florian: replace can with may but yes <dael> fremy: not thrilled but don't want this thread open for 250000 years and this coming back up all the time. Still wrong because people have been misusing something and people pointed out we're misusing it and now we have to change requirements because we pointed that out <dael> fremy: It doesn't make sense. Either we say it should be used and change UA style sheet. Why say can if we don't do it? I have mixed feelings. I won't object to a may. It's wrong, but I won't object <dael> TabAtkins: That browsers can't change their behavior doesn't have baring on how a lot fo heavy usage leads to the value's usage. Legacy constraint on browsers shouldn't constrain us here. THis is about matching author expections. People expect this to work in a particular way. <dael> astearns: Objections to adding the proposed sentece: this value SHOULD be used on links, and MAY be used on other interactive elements to indicate 'clickability' to UI 4 <dael> astearns: the pointer value SHOULD be used on links, and MAY be used on other interactive elements to indicate 'clickability' <tantek> +0 sounds ok, still reading <dael> florian: Should this be "authors should use" unstead of "should be used" <dael> TabAtkins: It's on UAs. <dael> florian: Do we want to say UA may apply to others? <dael> TabAtkins: That's why I started with a can <dael> florian: Is sentence meant for author and ua or just author? <dael> TabAtkins: Both author and UA. I don't think it's bad if a browser changes to pointer on clickable things <dael> AmeliaBR: We already agreed to UA must apply pointer on hyperlinks <dael> AmeliaBR: more passive voice this cursor should be used could be included without cancelling the must <dael> florian: I don't object to current. If it's meant as vague I'm okay with vague <tantek> ok with CAN or MAY <tantek> though slight preference for MAY <dael> dbaron: Good to be clear who requirement is on <dael> astearns: Not vauge, it applies everywhere <tantek> also going to note for the record that no one followed up with tests as I requested last year in the issue :P (unless I missed something? searched whole issue for "test") <dael> AmeliaBR: Have an explicit requirement on UAs. Another sentence could be authors should us it on any other element that behaves as a link and may use it to indicate clickability <dael> florian: There's no UAs must not <tantek> https://github.com//issues/1936#issuecomment-346420266 <dael> AmeliaBR: Exactly. No negative about UAs applying to other elements <dael> florian: Like that better <dael> astearns: Does reduce confusion <dael> astearns: Object to scoping this sentence to jsut authors? <dael> astearns: Proposal:": Authors should use pointer on links and may use on other interactive elements <tantek> no objection <dael> astearns: Obj? <dael> RESOLVED: Add sentence "Authors should use pointer on links and may use on other interactive elements" To UI4 |
Marked as not needing tests as this is a change to author requirements, not UA requirements, and we don't test those. |
Uh oh!
There was an error while loading. Please reload this page.
For years and years the definition of the
pointer
cursor in specs did not change:But that definition is clearly outdated: today (and for years) this value is used by designers and developers not only for the “links” but for any other interactive element that did not have any other cursor defined for them, for example, for buttons. And there are a lot of new interactive elements in the modern web that are often somewhere between links and buttons.
For some reason, I often find articles in support for this legacy definition, but I yet to see any objective argument on why it should be like that. I myself wrote an article with most of my arguments in January 2013.
I propose to change this definition to something like that:
I understand that that is a somewhat controversial topic, but if you'd look at the websites in the real world, you would see that probably most of them use the
pointer
for buttons. And its unlikely they would change it, so it would make sense for the specification to change in favor of a better definition that would make the web more accessible.The text was updated successfully, but these errors were encountered: