Re: Touch-action to SVG elements

Following up on this thread (and action 65).

From: Rick Byers <rbyers@google.com> 
Date: Fri, 17 Jan 2014 11:17:47 -0500

> *Jacob, *do you agree that the behavior we see in IE is what we want the
spec to describe (touch-action supported on <svg> elements, but not other
types of SVG elements)?

Yes.

> *Jacob/Doug*, what's the right wording to convey this precisely?  My
reading of the SVG spec is that "SVG elements" includes things like <path>,
etc.
>
> In addition, it seems IE applies touch-action on inline-block elements
(which I think makes sense).  My reading of the CSS spec is that
inline-block isn't necessarily included with "block level elements".  Is
there a more precise term to encompass display: block and display:
inline-block?
> 
> What about the other display types that establish a BOX but aren't
themselves BLOCKS (eg. table-row, table-cell), what's the expected behavior
for them?  Sorry I'm not enough of a CSS expert to know the precise terms
we're looking for here (and it wasn't obvious to me from the CSS spec).

I consulted with some of our CSS WG reps and also did testing to confirm IE's behavior. It looks like <svg> shouldn't be a special case. It is no different than <img>, which is a replaced inline element (not block-level) and supports touch-action. So the current spec text is incorrect.

The correct definition should match that of the intersection of the height and width properties from CSS2.1 [1,2]:
     Applies to:  all elements but non-replaced inline elements, table rows, row groups, table columns, and column groups

Put another way, it applies to any element that *both* width and height apply to in CSS. Note table rows only accept height and table cols only accept width, therefore touch-action applies to neither by this definition (also cols are effectively display: none; so they were already irrelevant). 

This means block elements (like div), inline-block elements (like button), replaced inline elements (like img, svg, canvas, video), tables, and table cells/headers/captions are supported. But non-replaced inline elements (like span), table col/row elements, and table col/row groups are not supported.

I propose we change the spec to match the applies to text above. Testing briefly [3] Chrome, it looks like the replaced inline elements (img, svg, canvas, etc) and input controls aren't supported but should be. Firefox has the same issue as Chrome, except that <img> is already correctly supported. We should probably convert this page into an actual test case.

-Jacob

[1] http://www.w3.org/TR/CSS21/visudet.html#the-width-property
[2] http://www.w3.org/TR/CSS21/visudet.html#the-height-property 
[3] http://jsfiddle.net/S9C5Y/3/embedded/result/ 

Received on Friday, 21 March 2014 19:09:56 UTC