fractional-scroll-area.html (1686B)
1 <!DOCTYPE html> 2 <html class="reftest-wait"> 3 <meta charset="utf-8"> 4 <title>Fractional scroll area position / size</title> 5 6 <style> 7 8 body { 9 margin: 0; 10 } 11 12 #scrollbox { 13 width: 200px; 14 overflow: hidden; 15 background: red; 16 } 17 18 #scrolled-content { 19 background: lime; 20 box-sizing: border-box; 21 border: solid black; 22 border-width: 1px 0; 23 } 24 25 </style> 26 27 <div id="scrollbox"> 28 <div id="scrolled-content"></div> 29 </div> 30 31 <script> 32 33 function getFloatQueryParams(defaultValues) { 34 let result = Object.assign({}, defaultValues); 35 for (let chunk of location.search.substr(1).split("&")) { 36 let parts = chunk.split("="); 37 result[parts[0]] = parseFloat(parts[1]); 38 } 39 return result; 40 } 41 42 let params = getFloatQueryParams({ 43 top: 0, 44 outerBottom: 100, 45 innerBottom: 100, 46 borderTop: 0, 47 borderBottom: 0, 48 scrollBefore: 0, 49 scrollAfter: undefined, 50 offsetAfter: undefined, 51 }); 52 53 let scrollArea = document.getElementById("scrollbox"); 54 let scrolledContent = document.getElementById("scrolled-content"); 55 56 scrollArea.style.marginTop = params.top + "px"; 57 scrollArea.style.height = (params.outerBottom - params.top) + "px"; 58 scrolledContent.style.height = (params.innerBottom - params.top) + "px"; 59 60 scrollArea.scrollTop = 1; 61 scrollArea.scrollTop = 2; 62 scrollArea.scrollTop = params.scrollBefore; 63 64 window.addEventListener("MozReftestInvalidate", function () { 65 if (params.scrollAfter !== undefined) { 66 scrollArea.scrollTop = params.scrollAfter; 67 } 68 if (params.offsetAfter !== undefined) { 69 document.body.style.marginTop = params.offsetAfter + "px"; 70 } 71 document.documentElement.className = ""; 72 }); 73 74 </script>