blob: 52b3592417727a6679578a934d547dfca911e199 [file] [log] [blame]
<!DOCTYPE html>
<!--
| This test checks that intersection observer events get fired when
| intersection information changes as the result of the target undergoing a
| transition.
| The target element is initially green when it intersects completely with the
| viewport, but when it moves partially offscreen (as it should after the
| transition) it should turn yellow.
| https://www.w3.org/TR/intersection-observer/
-->
<html>
<head>
<style>
div {
margin: 50px;
}
#static1 {
background-color: red;
width: 200px;
height: 200px;
position: absolute;
}
#static2 {
background-color: blue;
width: 200px;
height: 200px;
position: absolute;
}
#moving {
background-color: green;
width: 200px;
height: 200px;
transition: transform 1s linear;
}
</style>
</head>
<body>
<div id="static1">
<div id="static2">
<div id="moving">
</div>
</div>
</div>
<script>
if (window.testRunner) {
window.testRunner.waitUntilDone();
}
window.addEventListener("load", function() {
var firstStaticElement = document.querySelector('#static1');
var secondStaticElement = document.querySelector('#static2');
var movingElement = document.querySelector('#moving');
function handleIntersect(entries, observer) {
entries.forEach(function(entry) {
console.log(entry.intersectionRatio);
if (entry.intersectionRatio < 1) {
entry.target.style.backgroundColor = "yellow";
}
});
}
function createObserver() {
var options = {
root: null,
rootMargin: "0px",
threshold: 1
};
var observer = new IntersectionObserver(handleIntersect, options);
observer.observe(movingElement);
}
createObserver();
movingElement.style.transform = "translate(-200px, 0)";
if (window.testRunner) {
window.testRunner.DoNonMeasuredLayout();
window.testRunner.AdvanceClockByMs(1000);
window.testRunner.DoNonMeasuredLayout();
window.setTimeout(function() { window.testRunner.notifyDone(); }, 0);
}
});
</script>
</body>
</html>