Skip to content

Commit e9148b6

Browse files
flackrchromium-wpt-export-bot
authored andcommitted
::scroll-marker activation only scrolls associated scroller.
When activating a scroll marker we should only scroll the associated scrolling container, and not all ancestor scrolling elements. Bug: 391609997,391627364 Change-Id: I5800e6a33a4a544587ab11f5b5355a122c71d0cb Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6259655 Reviewed-by: Vladimir Levin <vmpstr@chromium.org> Commit-Queue: Robert Flack <flackr@chromium.org> Cr-Commit-Position: refs/heads/main@{#1420618}
1 parent 39d7f91 commit e9148b6

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<!doctype html>
2+
<meta charset="utf-8">
3+
<title>CSS Test: ::scroll-marker only scrolls associated scrolling container</title>
4+
<link rel="help" href="https://drafts.csswg.org/css-overflow-5/#scroll-marker-activation">
5+
<script src="/dom/events/scrolling/scroll_support.js"></script>
6+
<script src="/resources/testharness.js"></script>
7+
<script src="/resources/testharnessreport.js"></script>
8+
<script src="/resources/testdriver.js"></script>
9+
<script src="/resources/testdriver-actions.js"></script>
10+
<script src="/resources/testdriver-vendor.js"></script>
11+
<style>
12+
body {
13+
margin: 0;
14+
}
15+
16+
#ancestor-scroller {
17+
border: 2px solid gray;
18+
width: 600px;
19+
height: 150px;
20+
overflow: auto;
21+
position: relative;
22+
}
23+
24+
#marker-scroller {
25+
height: 300px;
26+
overflow: auto;
27+
scroll-snap-type: x mandatory;
28+
position: relative;
29+
scroll-marker-group: before;
30+
white-space: nowrap;
31+
}
32+
33+
#marker-scroller div {
34+
scroll-snap-align: start;
35+
box-sizing: border-box;
36+
border-radius: 5px;
37+
background: lightgray;
38+
border: 1px solid black;
39+
display: inline-block;
40+
width: 500px;
41+
height: 100%;
42+
}
43+
44+
#marker-scroller::scroll-marker-group {
45+
display: flex;
46+
height: 100px;
47+
}
48+
49+
#marker-scroller div::scroll-marker {
50+
content: "";
51+
width: 100px;
52+
height: 100px;
53+
box-sizing: border-box;
54+
border-radius: 5px;
55+
border: 1px solid black;
56+
display: inline-block;
57+
}
58+
#marker-scroller div::scroll-marker:target-current {
59+
background: blue;
60+
}
61+
</style>
62+
<div id="ancestor-scroller">
63+
<div id="marker-scroller">
64+
<div>1</div>
65+
<div id="target">2</div>
66+
<div>3</div>
67+
</div>
68+
</div>
69+
<script>
70+
promise_test(async t => {
71+
const target = document.querySelector('#target');
72+
const ancestorScroller = document.querySelector('#ancestor-scroller');
73+
const scroller = document.querySelector('#marker-scroller');
74+
const scrollEndPromise = waitForScrollEndFallbackToDelayWithoutScrollEvent(scroller);
75+
actions_promise = new test_driver.Actions()
76+
.pointerMove(150, 50)
77+
.pointerDown()
78+
.pointerUp()
79+
.send();
80+
await actions_promise;
81+
await scrollEndPromise;
82+
assert_equals(scroller.scrollLeft, target.offsetLeft, "::scroll-marker activation scrolls to target");
83+
assert_equals(ancestorScroller.scrollTop, 0, "::scroll-marker activation doesn't scroll ancestors");
84+
});
85+
</script>

0 commit comments

Comments
 (0)