I'm creating a form, that is following some WCAG guidelines. One of those is:
The summary of this rule is:
Operating systems have a native indication of focus, which is available in many user agents. The default rendering of the focus indicator isn't always highly visible and may even be difficult to see against certain backgrounds. However, many platforms allow the user to customize the rendering of this focus indicator. Assistive technology can also change the appearance of the native focus indicator. If you use the native focus indicator, any system-wide settings for its visibility will carry over to the Web page. If you draw your own focus indicator, for example by coloring sections of the page in response to user action, these settings will not carry over, and AT will not usually be able to find your focus indicator.
(emphasis mine)
In order to comply with this rule, I want to keep the OS' default focus indicator for form elements.
However, I'm facing different problems here.
In Firefox on macOS:
As soon as the I change the style of the element (e.g. by changing the border settings), the default focus gets lost1.
This is strange as border
and outline
are different style attributes.
In Firefox and Edge on Windows:
The browsers show a focus indicator that is only a differently colored border, when entering a form element – as long as it's unstyled. Chrome on the other hand does have an indicator as an outline – like on macOS2.
Here's a snippet to demonstrate the behaviour (alternatively try this fiddle):
.b {
border: 1px solid red;
}
<form>
<input class="a" type="text">
<input class="b" type="text">
</form>
As a sidenote: There is no difference in the behaviour if label
-elements are present or not.
My questions are:
- Why does Firefox and Edge react like that on macOS and Widnows? Why do they use the border instead of the outline of the document?
- How can I force these browsers to show the OS's default focus indicators even when custom styles are applied?
- When somebody has created a customized indicator, will it still be shown in Firefox and Edge, even though the default one isn't anymore?
With these issues, I wonder whether this rule is even possible to achieve. In the end maybe I must manually set outline
on focus
to get the same behaviour in all browsers and skip this rule.
1 Here's a screenshot showing the problem on macOS:
2 Here's a screenshot showing the problem on Windows: