CSS properties for snapping during scrolling

Microsoft introduced a large number of CSS properties controlling scrolling
and zooming in Windows 8:
http://msdn.microsoft.com/en-us/library/ie/hh920761%28v=vs.85%29.aspx
As far as I know, none of them other than touch-action have been proposed
for standardization so far.

One of the features that we have use-cases for at Mozilla is the ability to
snap scrolling to land at specific offsets. One such use-case is
touch-based horizontal panning between pages of the home-screen in
FirefoxOS. At the end of the panning gesture the screen should show a
single page, not parts of two pages. An underlying physics model determines
which page is selected when the gesture ends, and the selected page snaps
into place using animation. Similar use-cases arise from many situations
involving scrolling through a list of items.

The Microsoft CSS properties for this are -ms-scroll-snap-points-x/y and
-ms-scroll-snap-type:
http://msdn.microsoft.com/en-us/library/ie/hh920761%28v=vs.85%29.aspx#creating_content_snap_points
Their approach requires explicitly specifying a sequence of CSS lengths (or
percentages) representing allowable snap offsets. It seems to me instead
the snap offsets should be derived automatically from the layout of the
descendants of the scrolling container, so that changes to that layout
don't require manual updating of some property set on the container.

So, here's my proposal:
https://wiki.mozilla.org/Gecko:CSSScrollSnapping
I made this up just now so I expect it has problems :-). The most obvious
issue right now is that it doesn't handle RTL well. Vertical writing may
also be a problem.

Rob
-- 
Jtehsauts  tshaei dS,o n" Wohfy  Mdaon  yhoaus  eanuttehrotraiitny  eovni
le atrhtohu gthot sf oirng iyvoeu rs ihnesa.r"t sS?o  Whhei csha iids  teoa
stiheer :p atroa lsyazye,d  'mYaonu,r  "sGients  uapr,e  tfaokreg iyvoeunr,
'm aotr  atnod  sgaoy ,h o'mGee.t"  uTph eann dt hwea lmka'n?  gBoutt  uIp
waanndt  wyeonut  thoo mken.o w  *
*

Received on Thursday, 15 August 2013 06:04:54 UTC