summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-tables/tentative/position-sticky-container.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:22:09 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:22:09 +0000
commit43a97878ce14b72f0981164f87f2e35e14151312 (patch)
tree620249daf56c0258faa40cbdcf9cfba06de2a846 /testing/web-platform/tests/css/css-tables/tentative/position-sticky-container.html
parentInitial commit. (diff)
downloadfirefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz
firefox-43a97878ce14b72f0981164f87f2e35e14151312.zip
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/css/css-tables/tentative/position-sticky-container.html')
-rw-r--r--testing/web-platform/tests/css/css-tables/tentative/position-sticky-container.html170
1 files changed, 170 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-tables/tentative/position-sticky-container.html b/testing/web-platform/tests/css/css-tables/tentative/position-sticky-container.html
new file mode 100644
index 0000000000..604b536df1
--- /dev/null
+++ b/testing/web-platform/tests/css/css-tables/tentative/position-sticky-container.html
@@ -0,0 +1,170 @@
+<!doctype html>
+<title>Table parts sticky containers</title>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<link rel="author" title="Aleks Totic" href="mailto:atotic@chromium.org" />
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/" />
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5020"/>
+<style>
+ body {
+ margin: 0;
+ }
+ main * {
+ box-sizing: border-box;
+ }
+
+ main .scroller {
+ width: 350px;
+ height: 302px;
+ overflow-y: scroll;
+ outline-offset: -1px;
+ outline: gray solid 1px;
+ }
+ main .padblock {
+ width: 300px;
+ height: 400px;
+ outline-offset: -2px;
+ outline: black dotted 2px;
+ }
+ main table {
+ border-spacing: 0;
+ }
+
+ main td {
+ width: 100px;
+ height: 25px;
+ }
+ .sticky {
+ position:sticky;
+ top: 0;
+ background: rgba(0,255,0, 0.3);
+ }
+
+</style>
+<main>
+ <div class="scroller">
+ <div class="padblock">top</div>
+ <table>
+ <thead>
+ <tr>
+ <td>h:0,0</td>
+ <td>h:0,1</td>
+ <td>h:0,2</td>
+ </tr>
+ <tr >
+ <td>h:1,0</td>
+ <td >h:1,1</td>
+ <td>h:1,2</td>
+ </tr>
+ <tr>
+ <td>h:2,0</td>
+ <td>h:2,1</td>
+ <td>h:2,2</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>b:0,0</td>
+ <td>b:0,1</td>
+ <td>b:0,2</td>
+ </tr>
+ <tr>
+ <td>b:1,0</td>
+ <td>b:1,1</td>
+ <td>b:1,2</td>
+ </tr>
+ <tr>
+ <td>b:2,0</td>
+ <td>b:2,1</td>
+ <td>b:2,2</td>
+ </tr>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td>f:0,0</td>
+ <td>f:0,1</td>
+ <td>f:0,2</td>
+ </tr>
+ <tr>
+ <td>f:1,0</td>
+ <td>f:1,1</td>
+ <td>f:1,2</td>
+ </tr>
+ <tr>
+ <td>f:2,0</td>
+ <td>f:2,1</td>
+ <td>f:2,2</td>
+ </tr>
+ </tfoot>
+ </table>
+ <div class="padblock">bottom</div>
+ </div>
+</main>
+<script>
+
+ function scrollTo(y) {
+ let scroller = document.querySelector("main .scroller");
+ scroller.scrollTop = y;
+ }
+
+ test( () => {
+ // Setup
+ let target = document.querySelector("main tbody tr:nth-child(2) td:nth-child(2)");
+ let scroller = document.querySelector("main .scroller");
+ target.classList.toggle("sticky");
+
+ // Tests
+ scrollTo(0);
+ assert_equals(target.getBoundingClientRect().top, 500, "intrinsic position");
+
+ scrollTo(600);
+ assert_equals(target.getBoundingClientRect().top, 0, "sticking to the table");
+
+ scrollTo(640);
+ assert_equals(target.getBoundingClientRect().top, -40, "sticking to the table bottom");
+
+ // Teardown
+ target.classList.toggle("sticky");
+ }, "TD sticky container is table");
+
+ test( () => {
+ // Setup
+ let target = document.querySelector("main tbody tr:nth-child(2)");
+ let scroller = document.querySelector("main .scroller");
+ target.classList.toggle("sticky");
+
+ // Tests
+ scrollTo(0);
+ assert_equals(target.getBoundingClientRect().top, 500, "intrinsic position");
+
+ scrollTo(600);
+ assert_equals(target.getBoundingClientRect().top, 0, "sticking to the table");
+
+ scrollTo(640);
+ assert_equals(target.getBoundingClientRect().top, -40, "sticking to the table bottom");
+ // Teardown
+ target.classList.toggle("sticky");
+ }, "TR sticky container is table");
+
+
+ test( () => {
+ // Setup
+ let target = document.querySelector("main tbody");
+ let scroller = document.querySelector("main .scroller");
+ target.classList.toggle("sticky");
+
+ // Tests
+ scrollTo(0);
+ assert_equals(target.getBoundingClientRect().top, 475, "intrinsic position");
+
+ scrollTo(550);
+ assert_equals(target.getBoundingClientRect().top, 0, "sticking to the table");
+
+ scrollTo(600);
+ assert_equals(target.getBoundingClientRect().top, -50, "sticking to the table bottom");
+
+ // Teardown
+ target.classList.toggle("sticky");
+ }, "TBODY sticky container is table");
+
+</script>