mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-23 02:05:42 +00:00
Bug 1373835
- Add a test case for unreachable snap positions. r=botond
The snap alignment position of the target element is the top left of the target and the position is located out of scroll port (top: -100px, left: -100px). Even so we try to snap a position as much as possible. From the spec [1]; If a snap position is unreachable as specified, such that aligning to it would require scrolling the scroll container’s viewport past the edge of its scrollable overflow region, the used snap position for this snap area is the position resulting from scrolling as much as possible in each relevant axis toward the desired snap position. [1] https://drafts.csswg.org/css-scroll-snap-1/#unreachabLe Depends on D21630 Differential Revision: https://phabricator.services.mozilla.com/D21631 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
f905a44094
commit
3a6373adc1
@ -0,0 +1,53 @@
|
||||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#unreachable" />
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<style>
|
||||
div {
|
||||
position: absolute;
|
||||
margin: 0px;
|
||||
}
|
||||
#scroller {
|
||||
height: 500px;
|
||||
width: 500px;
|
||||
overflow: hidden;
|
||||
scroll-snap-type: both mandatory;
|
||||
}
|
||||
#unreachable {
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
top: -100px;
|
||||
left: -100px;
|
||||
background-color: blue;
|
||||
scroll-snap-align: start;
|
||||
}
|
||||
#reachable {
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
top: 400px;
|
||||
left: 400px;
|
||||
background-color: blue;
|
||||
scroll-snap-align: start;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="scroller">
|
||||
<div style="width: 2000px; height: 2000px;"></div>
|
||||
<div id="unreachable"></div>
|
||||
<div id="reachable"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
test(() => {
|
||||
// Firstly move to the reachable snap position.
|
||||
scroller.scrollTo(400, 400);
|
||||
assert_equals(scroller.scrollLeft, 400);
|
||||
assert_equals(scroller.scrollTop, 400);
|
||||
|
||||
// Then move to a position between the unreachable snap position and the
|
||||
// reachable position but closer to the unreachable one.
|
||||
scroller.scrollTo(100, 100);
|
||||
assert_equals(scroller.scrollLeft, 0);
|
||||
assert_equals(scroller.scrollTop, 0);
|
||||
}, "Snaps to the positions defined by the element as much as possible");
|
||||
</script>
|
Loading…
Reference in New Issue
Block a user