JSFiddle - React, Tailwind, and code Playground
by pphheerroonn
HTML
First Block:
<div id='firstBlock'> </div>
<br><br><br>
Second Block:
<div id='secondBlock'> </div>
<div id='log'>Log: </div>
CSS
#firstBlock {
width: 50vw;
height: 80vh;
background: red;
}
#secondBlock {
width: 50vw;
height: 80vh;
background: blue;
}
#log {
width: 200px;
height: 80vh;
position: fixed;
right: 0px;
top: 10px;
overflow: auto;
}
JavaScript
function callbackFunc(entries, observer)
{
entries.forEach(entry => {
var txt = entry.target.id + " visibility: " + entry.isIntersecting;
entry.classList.add("scrolled");
document.getElementById('log').appendChild(document.createTextNode(txt));
document.getElementById('log').appendChild(document.createElement("br"));
});
}
let options = {
root: null,
rootMargin: '0px',
threshold: 0.3
};
let observer = new IntersectionObserver(callbackFunc, options);
observer.observe(document.getElementById('firstBlock'));
observer.observe(document.getElementById('secondBlock'));