Re: [CSSOM View] Extensions to Element.scrollLeft and Element.scrollTop are not valid WebIDL

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Thank you for your feedback.  Please advise if I have
captured this as you intended.  I have also added details
on the interactions with CSSOM-View scroll-behavior
smooth scrolling...

In order to include writing-mode and rtl agnostic scroll
offset support, I propose that we create a new function,
Element.scrollTo, which takes a dictionary derived from
ScrollOptions.

Proposed WebIDL
- ---------------

dictionary ElementScrollOptions : ScrollOptions {
  double left;
  double top;
  double right;
  double bottom;
  double blockStart;
  double blockEnd;
  double inlineStart;
  double inlineEnd;
};

void scrollTo(optional ElementScrollOptions options);

Members
- -------

Various combinations of ElementScrollOptions members can
be passed to scrollTo to select the scroll destination
with a physical or abstract offset:

left:
  - Number of pixels that an element’s content is scrolled
    to the left.  Equivalent to setting the
    "Element.scrollLeft" attribute.
  - If the direction of the element is ltr (left-to-right)
    then "left" is 0 when the scrollbar is at its leftmost
    position (at start of the scrolled content) and then
    increases as you scroll towards the end of the
    content.
  - If the direction of the element is rtl (right-to-left)
    then "left" is 0 when the scrollbar is at its
    rightmost position (at start of the scrolled content)
    and then increasingly negative as you scroll towards
    the end of the content.

right:
  - Number of pixels that an element’s content is scrolled
    to the right.
  - If the direction of the element is ltr (left-to-right)
    then "right" is 0 when the scrollbar is at its
    rightmost position (at the end of the scrolled content)
    and then increasingly negative as you scroll towards
    the start of the content.
  - If the direction of the element is rtl (right-to-left)
    then "right" is 0 when the scrollbar is at its
    leftmost position (at the end of the scrolled content)
    and then increases as you scroll towards the start of
    the content.

top:
  - Number of pixels that the content of an element is
    scrolled upward.  Equivalent to setting the
    "Element.scrollLeft" attribute.
  - "top" is 0 when the scrollbar is at its topmost
    position (at the start of the scrolled content) and
    then increases as you scroll towards the bottom of the
    content.

bottom:
  - Number of pixels that the content of an element is
    scrolled downward.
  - "bottom" is 0 when the scrollbar is at its bottommost
    position (at the start of the scrolled content) and
    then increasingly negative as you scroll towards the
    top of the content.

blockStart:
  - "blockStart" is an offset relative to the side that
    comes earlier in the block progression, as determined
    by the writing-mode property.
  - In horizontal-tb mode, is equivalent to setting value
    of "top".
  - In vertical-rl mode, is equivalent to setting value
    of "right".
  - In vertical-lr mode, is equivalent to setting value
    of "left".

inlineStart:
  - "inlineStart" is an offset relative to the side from =
    which text of the inline base direction would start.
  - With a direction value of ltr, this is the line-left
    side.
  - With a direction value of rtl, this is the line-right
    side.

blockEnd:
  - "blockEnd" is an offset is relative to the side
    opposite block-start.

inlineEnd:
  - "inlineEnd" is an offset is relative to the side
    opposite inline-start.

For a complete list of all combinations and their
equivalent physical mappings, see [2].

Rules
- -----
- - "left", "top", "right", and "bottom" represent physical
  scrolling offsets.
- - "blockStart", "blockEnd", "inlineStart", and "inlineEnd"
  represent offsets
  in flow-relative directions [1].
- - Values assigned to "blockStart", "blockEnd",
  "inlineStart", and "inlineEnd" are set
  to the equivalent physical offsets of left, top, right,
  and bottom as per
  "6.4 Abstract-to-Physical Mappings" in the "CSS Writing
  Modes Level 3"
  specification [2].
- - If physical scrolling offsets are mixed with offsets in
  flow-relative directions, an exception will be thrown.
- - If non-finite values (NaN, -Infinity, Infinity) are
  passed to any member of ElementScrollOptions, an
  exception will be thrown.
- - The scrolling offset is considered over-constrained if
  more than one offset for any axis are passed
  simultaneously.
  - "left" and "right" are mutually exclusive
  - "top" and "bottom" are mutually exclusive
  - "blockStart" and "blockEnd" are mutually exclusive
  - "inlineStart" and "inlineEnd" are mutually exclusive
- - If the scrolling offset is over-constrained, an
  exception will be thrown.
- - If a scrolling offset for an axis is not passed, then
  the position of that axis at the start of the scroll
  will be used as the destination position for that axis.
- - If no scrolling offsets are included in
  ElementScrollOptions, the scrollTo call will perform a
  scroll with the destination set to the current scroll
  offset.  This may cause a smooth scroll [3] to be
  interrupted.  If ScrollOptions and the smooth-scroll
  CSS property evaluate to a smooth scroll, then a smooth
  scroll to the current position is performed to end the
  scroll at the specified offset in a UA defined smooth
  fashion.


[1] CSS Writing Modes Level 3 - Flow-relative directions
http://dev.w3.org/csswg/css-writing-modes/#block-start

[2] CSS Writing Modes Level 3 - 6.4 Abstract-to-Physical
    Mappings
http://dev.w3.org/csswg/css-writing-modes/#logical-to-physical

[3] CSSOM View Module - 4.1 Scrolling
http://dev.w3.org/csswg/cssom-view/#scrolling
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJUGHwDAAoJEHziBT1mB5A7CKoH/1K7GlVaAOmF5IRHmAnEC64j
+FQLRMQd0bsLShGkLOk/B75XgNTF2irR4L0+hjmyXHs7I1AG9JZNkLugMz6FwdQH
OHJHkVIlyXOga8jIRbTv8mcfgb68/17nzRivleK7w1Jd9Gr1qeR9C7fO29mD/kwM
0vVKpTgF3Vo5BWo+aJ1wzq3B7EnW9/0dmBF8OinTLK0ijaMHheO+7ORNcLDs+rsp
xl1KZf9RN04gPT8UyUPScYGaB+9xzRy1cyT5yptWdpMWE/vyrnwUqNLXqYvpyGRt
MJYzB9mwdFH9nxKJRzwBwV61vcB407UzBlcFw2J8rxkHtzAnjr3Q30+699ztY1o=
=LpBB
-----END PGP SIGNATURE-----

Received on Tuesday, 16 September 2014 18:06:25 UTC