- From: <bugzilla@jessica.w3.org>
- Date: Tue, 16 Sep 2014 17:53:52 +0000
- To: public-css-bugzilla@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=26294
--- Comment #2 from Kearwood "Kip" Gilbert <kgilbert@mozilla.com> ---
Feedback on w3.org is requesting that new scrolling API's support both physical
and logical coordinates for the scroll offset:
http://lists.w3.org/Archives/Public/www-style/2014Jul/0385.html
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
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Tuesday, 16 September 2014 17:53:53 UTC