tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

position-sticky-offset-top-left.html (2021B)


      1 <!DOCTYPE html>
      2 <title>Sticky positioned element should be observable by offsetTop and offsetLeft</title>
      3 <link rel="help" href="https://www.w3.org/TR/css-position-3/#sticky-pos" />
      4 <meta name="assert" content="This test checks that a sticky positioned element
      5 should be observable by offsetTop/offsetLeft." />
      6 
      7 <script src="/resources/testharness.js"></script>
      8 <script src="/resources/testharnessreport.js"></script>
      9 
     10 <style>
     11 body {
     12  margin: 0;
     13 }
     14 
     15 .container {
     16  position: relative; /* Required for offsetTop/offsetLeft tests. */
     17  overflow: scroll;
     18  width: 200px;
     19  height: 200px;
     20 }
     21 
     22 .spacer {
     23  width: 2000px;
     24  height: 2000px;
     25 }
     26 
     27 .box {
     28  width: 100px;
     29  height: 100px;
     30  background-color: green;
     31 }
     32 
     33 .sticky {
     34  position: sticky;
     35  top: 50px;
     36  left: 20px;
     37 }
     38 </style>
     39 
     40 <div id="scroller1" class="container">
     41  <div class="spacer"></div>
     42 </div>
     43 
     44 <script>
     45 test(() => {
     46    var scroller = document.getElementById('scroller1');
     47    scroller.scrollTop = 100;
     48    scroller.scrollLeft = 75;
     49 
     50    var sticky = document.createElement('div');
     51    sticky.className = 'sticky box';
     52    scroller.insertBefore(sticky, scroller.querySelector('.spacer'));
     53 
     54    assert_equals(sticky.offsetTop, scroller.scrollTop + 50);
     55    assert_equals(sticky.offsetLeft, scroller.scrollLeft + 20);
     56 }, 'offsetTop/offsetLeft should be correct for sticky after script insertion');
     57 </script>
     58 
     59 <div id="scroller2" class="container">
     60  <div id="sticky2" class="sticky box"></div>
     61  <div class="spacer"></div>
     62 </div>
     63 
     64 <script>
     65 test(function() {
     66    var scroller = document.getElementById('scroller2');
     67    var sticky = document.getElementById('sticky2');
     68    scroller.scrollTop = 100;
     69    scroller.scrollLeft = 75;
     70 
     71    var div = document.createElement('div');
     72    div.style.height = '65px';
     73    scroller.insertBefore(div, sticky);
     74 
     75    assert_equals(sticky.offsetTop, scroller.scrollTop + 50);
     76    assert_equals(sticky.offsetLeft, scroller.scrollLeft + 20);
     77 }, 'offsetTop/offsetLeft should be correct for sticky after script-caused layout');
     78 </script>