50 lines
1.4 KiB
HTML
50 lines
1.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<style>
|
|
body {
|
|
margin: 0;
|
|
height: 100%;
|
|
}
|
|
.app {
|
|
display: flex;
|
|
width: 100%;
|
|
}
|
|
.sidebar {
|
|
width: 31.1%;
|
|
margin: 0;
|
|
background: rgb(231, 249, 139);
|
|
}
|
|
section {
|
|
width: 68.9%;
|
|
background-color: rgb(119, 219, 172);
|
|
border: dashed red 3px;
|
|
}
|
|
p {
|
|
margin-top: 0;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class=app>
|
|
<div class="sidebar"></div>
|
|
<section id=target>
|
|
<h2>Observer target</h2>
|
|
<p><strong>Intersection ratio:</strong> <span id=ratio></span></p>
|
|
</section>
|
|
</div>
|
|
|
|
<script>
|
|
const onIntersection = entries => {
|
|
const ratio = entries[0].intersectionRatio;
|
|
const eventData = { intersectionRatio: ratio };
|
|
document.getElementById("ratio").innerText = ratio.toFixed(5);
|
|
const event = new CustomEvent("iframeObserved", {detail: eventData});
|
|
parent.document.dispatchEvent(event);
|
|
};
|
|
const observer = new IntersectionObserver(onIntersection, {threshold: 1});
|
|
setTimeout(() => {observer.observe(document.getElementById("target"))}, 0);
|
|
</script>
|
|
</body>
|
|
</html>
|