File: scroll-target-margin-006.html

package info (click to toggle)
firefox 145.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,653,528 kB
  • sloc: cpp: 7,594,999; javascript: 6,459,658; ansic: 3,752,909; python: 1,403,455; xml: 629,809; asm: 438,679; java: 186,421; sh: 67,287; makefile: 19,169; objc: 13,086; perl: 12,982; yacc: 4,583; cs: 3,846; pascal: 3,448; lex: 1,720; ruby: 1,003; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10
file content (57 lines) | stat: -rw-r--r-- 1,946 bytes parent folder | download | duplicates (18)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<!DOCTYPE html>
<html>
<title>scrollIntoView() and scroll-margin applied to an inline element</title>
<link rel='author' title='Martin Robinson' href='http://igalia.com'>
<link rel='help' href='https://www.w3.org/TR/css-scroll-snap-1/#scroll-margin'>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<style type='text/css'>
  .container {
    border: solid black 1px;
    height: 40px;
    width: 40px;
    overflow: auto;
  }
</style>

<div class="container">
  <div style="height: 1000px; width: 2000px;"></div>
  <div style="width: 2000px;">
    <span>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</span>
    <span id="target">TARGETTARGETTARGETTARGET</span>
    <span>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</span>
  </div>
  <div style="height: 1000px; width: 2000px;"></div>
</div>

<script>

test(() => {
  target.scrollIntoView();
  const scroller = target.parentElement.parentElement;
  let expectedScrollPosition = [scroller.scrollLeft - 20, scroller.scrollTop - 20];
  scroller.scrollTo(0, 0);

  target.style.scrollMarginTop = "20px";
  target.style.scrollMarginLeft = "20px";
  target.scrollIntoView();
  assert_equals(scroller.scrollLeft, expectedScrollPosition[0]);
  assert_equals(scroller.scrollTop, expectedScrollPosition[1]);

  target.style.scrollMarginTop = "0px";
  target.style.scrollMarginLeft = "0px";

  scroller.scrollTo(2000, 2000);
  target.scrollIntoView({"block": "end", "inline": "end"});
  expectedScrollPosition = [scroller.scrollLeft + 20, scroller.scrollTop + 20];
  scroller.scrollTo(2000, 2000);

  target.style.scrollMarginBottom = "20px";
  target.style.scrollMarginRight = "20px";
  target.scrollIntoView({"block": "end", "inline": "end"});
  assert_equals(scroller.scrollLeft, expectedScrollPosition[0]);
  assert_equals(scroller.scrollTop, expectedScrollPosition[1]);

}, "scroll-margin is taken into account when scrolling an inline element into view");
</script>