blob: e954ba305e8e0a9daa172c3e0cd136a596f38efe [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
* {
box-sizing: border-box;
}
body {
transform: translateZ(0px);
}
.scroller {
position: relative;
margin: 20px;
width: 600px;
height: 580px;
overflow-x: hidden;
overflow-y: auto;
perspective-origin: right bottom;
perspective: 1px;
border: 1px solid black;
}
.preserve3d {
transform-origin: top left;
transform-style: preserve-3d;
}
.box {
height: 12000px;
background-color: rgba(0, 0, 0, 0.2);
}
.parallax {
background-size: cover;
box-sizing: border-box;
width: 80%;
margin-left: 20px;
height: 1300px;;
/* Since the parallax elements still consume space, we set the margin to undo
the height of this parallax element making it essentially consume 0 space.
*/
margin-bottom: -1300px;
}
.tester {
position: relative;
z-index: 1;
background-color: green;
margin-top: 200px;
height: 600px;
width: 100%;
will-change: transform;
}
.filler {
background-color: silver;
}
</style>
<script>
if (window.testRunner) {
testRunner.waitUntilDone();
testRunner.dumpAsText();
}
window.addEventListener('load', () => {
setTimeout(() => {
let scroller = document.querySelector('.scroller');
scroller.scrollTop = 400;
if (window.internals)
document.getElementById('layers').innerText = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_BACKING_STORE_ATTACHED);
if (window.testRunner)
testRunner.notifyDone();
}, 0);
}, false);
</script>
</head>
<body>
<div class="scroller">
<div class="preserve3d">
<div class="parallax" style="transform: translate3d(0px, -220px, -2px);"></div>
<div class="box tester">&nbsp;</div>
<div class="box filler"></div>
</div>
</div>
<pre id="layers"></pre>
</body>
</html>