Skip to content

Commit d68b77b

Browse files
authored
Merge pull request #973 from patrickhlauke/mq4-pointer-hover-clarify-input-is-pointer
[mediaqueries-4] make explicit that `pointer`, `hover`, `any-pointer`, `any-hover` relate only to pointing devices
2 parents 1024dc3 + 11a6689 commit d68b77b

File tree

1 file changed

+45
-30
lines changed

1 file changed

+45
-30
lines changed

mediaqueries/Overview.bs

Lines changed: 45 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1625,18 +1625,27 @@ Interaction Media Features</h2>
16251625
</style>
16261626
</div>
16271627

1628-
The 'pointer' and 'hover' features relate to the characteristics of the “primary” input mechanism,
1629-
while 'any-pointer' and 'any-hover' can be used to query the properties of all potentially available input mechanisms.
1628+
The 'pointer' and 'hover' features relate to the characteristics of the “primary” pointing device,
1629+
while 'any-pointer' and 'any-hover' can be used to query the properties of all potentially available pointing devices.
16301630

1631-
Note: While this specification does not define how User Agents should decide what the “primary” input is,
1632-
the expectation is that User Agents should make this determination
1631+
Note: While this specification does not define how user agents should decide what the “primary” pointing device is,
1632+
the expectation is that user agents should make this determination
16331633
by combining knowledge about the device/environment they are running on,
1634-
the number and type of input mechanisms available,
1635-
and a notion of which of these inputs is generally and/or currently being used.
1636-
User Agents may also decide to dynamically change what type of input is deemed to be primary,
1634+
the number and type of pointing devices available,
1635+
and a notion of which of these is generally and/or currently being used.
1636+
In situations where the primary input mechanism for a device is not a pointing device,
1637+
but there is a secondary – and less frequently used – input that is a pointing devices,
1638+
the user agent may decide to treat the non-pointing device as the primary (resulting in 'pointer: none').
1639+
user agents may also decide to dynamically change what type of pointing device is deemed to be primary,
16371640
in response to changes in the user environment
16381641
or in the way the user is interacting with the UA.
16391642

1643+
Note: The 'pointer', 'hover', 'any-pointer' and 'any-hover' features only relate to the characteristics,
1644+
or the complete absence, of pointing devices,
1645+
and can not be used to detect the presence of non-pointing device input mechanisms such as keyboards.
1646+
Authors should take into account the potential presence of non-pointing device inputs,
1647+
regardless of which values are matched when querying these features.
1648+
16401649
<h3 id="pointer">
16411650
Pointing Device Quality: the 'pointer' feature</h3>
16421651

@@ -1648,10 +1657,10 @@ Pointing Device Quality: the 'pointer' feature</h3>
16481657
</pre>
16491658

16501659
The 'pointer' media feature is used to query the presence and accuracy of a pointing device such as a mouse.
1651-
If a device has multiple input mechanisms,
1652-
the 'pointer' media feature must reflect the characteristics of the “primary” input mechanism,
1660+
If multiple pointing devices are present,
1661+
the 'pointer' media feature must reflect the characteristics of the “primary” pointing device,
16531662
as determined by the user agent.
1654-
(To query the capabilities of <em>any</em> available input mechanism,
1663+
(To query the capabilities of <em>any</em> available pointing devices,
16551664
see the 'any-pointer' media feature.)
16561665

16571666
<dl dfn-type=value dfn-for="@media/pointer">
@@ -1686,14 +1695,14 @@ Pointing Device Quality: the 'pointer' feature</h3>
16861695
even on devices whose pointing device can be described as ''fine'',
16871696
the UA may give a value of ''coarse'' or ''pointer/none'' to this media query,
16881697
to indicate that the user has difficulties manipulating the pointing device accurately or at all.
1689-
In addition, even if the primary input mechanism has ''fine'' pointing accuracy,
1690-
there may be additional ''coarse'' input mechanisms available to the user. Authors may
1698+
In addition, even if the primary pointing device has ''fine'' pointing accuracy,
1699+
there may be additional ''coarse'' pointing devices available to the user. Authors may
16911700
wish to query the 'any-pointer' media feature to take these other ''coarse'' potential
1692-
input mechanisms into account.
1701+
pointing devicess into account.
16931702

16941703
<div class="example">
16951704
<pre>
1696-
/* Make radio buttons and check boxes larger if we have an inaccurate pointing device */
1705+
/* Make radio buttons and check boxes larger if we have an inaccurate primary pointing device */
16971706
@media (pointer:coarse) {
16981707
input[type="checkbox"], input[type="radio"] {
16991708
min-width:30px;
@@ -1714,39 +1723,41 @@ Hover Capability: the 'hover' feature</h3>
17141723
Type: discrete
17151724
</pre>
17161725

1717-
The 'hover' media feature is used to query the user's ability to hover over elements on the page.
1718-
If a device has multiple input mechanisms,
1719-
the 'hover' media feature must reflect the characteristics of the “primary” input mechanism,
1726+
The 'hover' media feature is used to query the user's ability to hover over elements on the page
1727+
with the primary pointing device.
1728+
If a device has multiple pointing devices,
1729+
the 'hover' media feature must reflect the characteristics of the “primary” pointing device,
17201730
as determined by the user agent.
1721-
(To query the capabilities of <em>any</em> available input mechanism,
1731+
(To query the capabilities of <em>any</em> available pointing devices,
17221732
see the 'any-hover' media feature.)
17231733

17241734
<dl dfn-type=value dfn-for="@media/hover">
17251735
<dt><dfn>none</dfn>
17261736
<dd>
1727-
Indicates that the primary pointing system can't hover,
1728-
or there is no pointing system.
1729-
Examples include touchscreens and screens that use a drawing stylus.
1737+
Indicates that the primary pointing device can't hover,
1738+
or that there is no pointing device.
1739+
Examples include touchscreens and screens that use a basic drawing stylus.
17301740

1731-
Pointing systems that can hover,
1741+
Pointing devices that can hover,
17321742
but for which doing so is inconvenient and not part of the normal way they are used,
17331743
also match this value.
17341744
For example, a touchscreen where a long press is treated as hovering
17351745
would match ''hover: none''.
17361746

17371747
<dt><dfn>hover</dfn>
17381748
<dd>
1739-
Indicates that the primary pointing system can easily hover over parts of the page.
1749+
Indicates that the primary pointing device can easily hover over parts of the page.
17401750
Examples include mice and devices that physically point at the screen, like the Nintendo Wii controller.
17411751
</dl>
17421752

17431753
<div class='example'>
17441754
For example, on a touch screen device that can also be controlled by an optional mouse,
1745-
the 'hover' <a>media feature</a> should match ''hover/none'',
1746-
as the primary interaction mode (touching the screen) can't hover.
1755+
the 'hover' <a>media feature</a> should match ''hover: none'',
1756+
as the primary pointing device (the touch screen) does not allow the user to hover.
17471757

1758+
However, despite this, the optional mouse does allow users to hover.
17481759
Authors should therefore be careful not to assume that the ':hover' pseudo class
1749-
will never match on device where 'hover:none' is true,
1760+
will never match on a device where 'hover:none' is true,
17501761
but they should design layouts that do not depend on hovering to be fully usable.
17511762
</div>
17521763

@@ -1814,6 +1825,9 @@ All Available Interaction Capabilities: the 'any-pointer' and 'any-hover' featur
18141825
As such, it should be understood as a query to test if any hover-capable pointing devices are present,
18151826
rather than whether or not any of the pointing devices is hover-incapable.
18161827
The latter scenario can currently not be determined using 'any-hover' or any other interaction media feature.
1828+
Additionally, it does not take into account any non-pointing device inputs,
1829+
such as d-pads or keyboard-only controls,
1830+
which by their very nature are also not hover-capable.
18171831
</div>
18181832

18191833
<div class="example">
@@ -1825,15 +1839,16 @@ All Available Interaction Capabilities: the 'any-pointer' and 'any-hover' featur
18251839

18261840
<div class="note">
18271841
While 'pointer' and 'hover' can be used to design the main style and interaction
1828-
mode of the page to suit the primary input mechanism, 'any-pointer' and 'any-hover'
1829-
can be used to potentially take into account all possible types of pointers
1842+
mode of the page to suit the primary input mechanism (based on the characteristics, or complete absence,
1843+
of the primary pointing device), 'any-pointer' and 'any-hover'
1844+
can be used to potentially take into account all possible types of pointing devices
18301845
that have been detected.
18311846

18321847
Designing a page that relies on hovering or accurate pointing
18331848
only because 'any-hover' or 'any-pointer' indicate that at least one of the available
18341849
input mechanisms has these capabilities is likely to result in a poor experience.
18351850
However, authors may use this information to inform their decision about the style and
1836-
functionality they wish to provide based on additional input mechanisms that
1851+
functionality they wish to provide based on any additional pointing devices that
18371852
are available to the user.
18381853
</div>
18391854

@@ -1846,7 +1861,7 @@ All Available Interaction Capabilities: the 'any-pointer' and 'any-hover' featur
18461861

18471862
The user may also have paired a Bluetooth mouse with the TV,
18481863
and occasionally use it for extra convenience,
1849-
but such the mouse is not the main way the TV is operated.
1864+
but this mouse is not the main way the TV is operated.
18501865
'pointer' still matches ''coarse'', while 'any-pointer' now both matches ''coarse'' and ''fine''.
18511866

18521867
Switching to small click targets based on the fact that ''(any-pointer: fine)'' is now true

0 commit comments

Comments
 (0)