skip to Main Content

Using IntersectionObserver – is it possible to detect scroll intersecting AND past/below every entry – until the next entry comes is scrolled into view (other elements are between the entries.)?

In the example below, I would like to detect scrolling below every element with the class .title, and keep it until the next element with the class .title appears.

I tried with the below, but it doesnt’t work as expected.

Hope my questions makes sense. 🙂

let options = {
    root: null,
    rootMargin: '-50px 0px -50px 0px',
    threshold: [.5]
}

let sectionObserver = new IntersectionObserver((entries, options) => {
    entries.forEach((entry) => {
        if (entry.isIntersecting && window.scrollY >= entry.boundingClientRect.top) {
            // Do something here when scrolling below this entry - until next entry is in view.
            console.log(entry.target);
        }
    });
});

document.querySelectorAll('.title').forEach((section) => {
    sectionObserver.observe(section);
});
<div class="container">
  <div class="title">Title one</div>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor. Donec ut
    ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros. Aenean
    ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices, consectetur
    mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
    Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
    tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
    lobortis. Nullam egestas semper convallis.

    Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
    aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
    tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
    felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
    pellentesque velit. In a est at neque dignissim pellentesque et tempus sem. Nulla et leo diam.
  </p>
  <div class="title">Title two</div>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor. Donec ut
    ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros. Aenean
    ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices, consectetur
    mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
    Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
    tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
    lobortis. Nullam egestas semper convallis.

    Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
    aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
    tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
    felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
    pellentesque velit. In a est at neque dignissim pellentesque et tempus sem. Nulla et leo diam.
  </p>
  <div class="title">Title three</div>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor. Donec ut
    ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros. Aenean
    ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices, consectetur
    mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
    Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
    tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
    lobortis. Nullam egestas semper convallis.

    Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
    aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
    tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
    felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
    pellentesque velit. In a est at neque dignissim pellentesque et tempus sem. Nulla et leo diam.
  </p>
  <div class="title">Title four</div>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor. Donec ut
    ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros. Aenean
    ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices, consectetur
    mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
    Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
    tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
    lobortis. Nullam egestas semper convallis.

    Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
    aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
    tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
    felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
    pellentesque velit. In a est at neque dignissim pellentesque et tempus sem. Nulla et leo diam.
  </p>
  <div class="title">Title five</div>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor.`enter code here`
    Donec ut ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros.
    Aenean ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices,
    consectetur

    mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
    Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
    tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
    lobortis. Nullam egestas semper convallis.

    Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
    aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
    tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
    felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
    pellentesque velit. In a est at neque dignissim pellentesque et tem

    pus sem. Nulla et leo diam.
  </p>
</div>

2

Answers


  1. Is this what your asking.

    const titles = document.querySelectorAll('.title')
    
    onscroll = () => {
         const SP = window.scrollY
         let x = 0
    
         titles.forEach((title, i)=>{
    
              if(SP>titles[i].offsetTop && SP<titles[i+1].offsetTop) {
                   console.log(`title ${(1+i)} is not showing on the screen`)
                   x = 1+i
              }
    
              if((SP+screen.height)>titles[i].offsetTop && 1+i != x) {
                   console.log(`title ${(1+i)} is now showing`)
              }
    
         })
              
    };
    <!DOCTYPE html>
    <html lang="en">
    <head>
         <meta charset="UTF-8">
         <meta name="viewport" content="width=device-width, initial-scale=1.0">
         <title>Document</title>
    </head>
    <body>
    
         <div class="container">
              <div class="title">Title one</div>
              <p>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor. Donec ut
                ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros. Aenean
                ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices, consectetur
                mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
                Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
                tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
                lobortis. Nullam egestas semper convallis.
            
                Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
                aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
                tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
                felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
                pellentesque velit. In a est at neque dignissim pellentesque et tempus sem. Nulla et leo diam.
              </p>
              <div class="title">Title two</div>
              <p>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor. Donec ut
                ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros. Aenean
                ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices, consectetur
                mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
                Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
                tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
                lobortis. Nullam egestas semper convallis.
            
                Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
                aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
                tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
                felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
                pellentesque velit. In a est at neque dignissim pellentesque et tempus sem. Nulla et leo diam.
              </p>
              <div class="title">Title three</div>
              <p>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor. Donec ut
                ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros. Aenean
                ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices, consectetur
                mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
                Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
                tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
                lobortis. Nullam egestas semper convallis.
            
                Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
                aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
                tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
                felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
                pellentesque velit. In a est at neque dignissim pellentesque et tempus sem. Nulla et leo diam.
              </p>
              <div class="title">Title four</div>
              <p>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor. Donec ut
                ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros. Aenean
                ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices, consectetur
                mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
                Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
                tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
                lobortis. Nullam egestas semper convallis.
            
                Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
                aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
                tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
                felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
                pellentesque velit. In a est at neque dignissim pellentesque et tempus sem. Nulla et leo diam.
              </p>
              <div class="title">Title five</div>
              <p>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor.`enter code here`
                Donec ut ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros.
                Aenean ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices,
                consectetur
            
                mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
                Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
                tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
                lobortis. Nullam egestas semper convallis.
            
                Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
                aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
                tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
                felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
                pellentesque velit. In a est at neque dignissim pellentesque et tem
            
                pus sem. Nulla et leo diam.
              </p>
    
              <div class="title">Title 6</div>
              <p>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor. Donec ut
                ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros. Aenean
                ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices, consectetur
                mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
                Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
                tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
                lobortis. Nullam egestas semper convallis.
            
                Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
                aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
                tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
                felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
                pellentesque velit. In a est at neque dignissim pellentesque et tempus sem. Nulla et leo diam.
              </p>
              <div class="title">Title 7</div>
              <p>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor. Donec ut
                ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros. Aenean
                ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices, consectetur
                mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
                Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
                tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
                lobortis. Nullam egestas semper convallis.
            
                Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
                aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
                tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
                felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
                pellentesque velit. In a est at neque dignissim pellentesque et tempus sem. Nulla et leo diam.
              </p>
              <div class="title">Title 8</div>
              <p>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor. Donec ut
                ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros. Aenean
                ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices, consectetur
                mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
                Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
                tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
                lobortis. Nullam egestas semper convallis.
            
                Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
                aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
                tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
                felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
                pellentesque velit. In a est at neque dignissim pellentesque et tempus sem. Nulla et leo diam.
              </p>
              <div class="title">Title 9</div>
              <p>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor. Donec ut
                ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros. Aenean
                ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices, consectetur
                mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
                Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
                tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
                lobortis. Nullam egestas semper convallis.
            
                Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
                aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
                tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
                felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
                pellentesque velit. In a est at neque dignissim pellentesque et tempus sem. Nulla et leo diam.
              </p>
              <div class="title">Title 10</div>
              <p>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus dolor id ullamcorper tempor.`enter code here`
                Donec ut ullamcorper tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula eros.
                Aenean ornare nibh ut leo faucibus fringilla. Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices,
                consectetur
            
                mauris in, consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida, pulvinar lacus ut, volutpat nibh.
                Quisque commodo eu tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius non
                tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
                lobortis. Nullam egestas semper convallis.
            
                Ut ac blandit risus, sit amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien sit amet elit
                aliquet molestie. Mauris nec ligula viverra, ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
                tempus justo consectetur ut. Aenean malesuada iaculis tortor ac varius. Phasellus ultrices purus nisi, eu rutrum
                felis bibendum id. Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis auctor augue, eget
                pellentesque velit. In a est at neque dignissim pellentesque et tem
            
                pus sem. Nulla et leo diam.
              </p>
         </div>
         
         <script src="script.js"></script>
    </body>
    </html>
    Login or Signup to reply.
  2. Intersection Observer API performs better than Scroll Listener. Please check this article for performance comparison.

    What you did in your code is logically correct. You just need to correct the implementation’s syntax. Best way to learn something new is to look at the official documentation.

    const sections = document.querySelectorAll('section');
    const observerHandler = function (entries, observer) {
       entries.forEach((entry) => {
          if (entry.isIntersecting) {
             console.log(`Intersects viewport`);
             // Do something when it intersects
             observer.unobserve(entry.target); // Stops observing the target element to prevent the callback from being triggered on future intersections, useful when you only need to handle the event once.
          }
       });
    };
          
    const options = {
            root: null,
            rootMargin: '0px',
            threshold: 0.5,
          };
          
    const sectionObserver = new IntersectionObserver(
            observerHandler,
            options
          );
          
    sections.forEach((section) => sectionObserver.observe(section));
    <div class="container">
          <section>
            <div class="title">Title one</div>
            <p>
              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus
              dolor id ullamcorper tempor. Donec ut ullamcorper tellus. Etiam vel
              rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula
              eros. Aenean ornare nibh ut leo faucibus fringilla. Quisque varius ut
              ipsum egestas feugiat. Mauris id nisl ultrices, consectetur mauris in,
              consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida,
              pulvinar lacus ut, volutpat nibh. Quisque commodo eu tortor ac dictum.
              Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius
              non tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec
              dignissim. Curabitur viverra risus eu est pellentesque lobortis.
              Nullam egestas semper convallis. Ut ac blandit risus, sit amet
              elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien
              sit amet elit aliquet molestie. Mauris nec ligula viverra, ornare
              dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet tempus
              justo consectetur ut. Aenean malesuada iaculis tortor ac varius.
              Phasellus ultrices purus nisi, eu rutrum felis bibendum id. Phasellus
              enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis
              auctor augue, eget pellentesque velit. In a est at neque dignissim
              pellentesque et tempus sem. Nulla et leo diam.
            </p>
          </section>
          <section>
            <div class="title">Title two</div>
            <p>
              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus
              dolor id ullamcorper tempor. Donec ut ullamcorper tellus. Etiam vel
              rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula
              eros. Aenean ornare nibh ut leo faucibus fringilla. Quisque varius ut
              ipsum egestas feugiat. Mauris id nisl ultrices, consectetur mauris in,
              consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida,
              pulvinar lacus ut, volutpat nibh. Quisque commodo eu tortor ac dictum.
              Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius
              non tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec
              dignissim. Curabitur viverra risus eu est pellentesque lobortis.
              Nullam egestas semper convallis. Ut ac blandit risus, sit amet
              elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien
              sit amet elit aliquet molestie. Mauris nec ligula viverra, ornare
              dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet tempus
              justo consectetur ut. Aenean malesuada iaculis tortor ac varius.
              Phasellus ultrices purus nisi, eu rutrum felis bibendum id. Phasellus
              enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis
              auctor augue, eget pellentesque velit. In a est at neque dignissim
              pellentesque et tempus sem. Nulla et leo diam.
            </p>
          </section>
          <section>
            <div class="title">Title three</div>
            <p>
              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus
              dolor id ullamcorper tempor. Donec ut ullamcorper tellus. Etiam vel
              rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula
              eros. Aenean ornare nibh ut leo faucibus fringilla. Quisque varius ut
              ipsum egestas feugiat. Mauris id nisl ultrices, consectetur mauris in,
              consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida,
              pulvinar lacus ut, volutpat nibh. Quisque commodo eu tortor ac dictum.
              Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius
              non tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec
              dignissim. Curabitur viverra risus eu est pellentesque lobortis.
              Nullam egestas semper convallis. Ut ac blandit risus, sit amet
              elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien
              sit amet elit aliquet molestie. Mauris nec ligula viverra, ornare
              dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet tempus
              justo consectetur ut. Aenean malesuada iaculis tortor ac varius.
              Phasellus ultrices purus nisi, eu rutrum felis bibendum id. Phasellus
              enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis
              auctor augue, eget pellentesque velit. In a est at neque dignissim
              pellentesque et tempus sem. Nulla et leo diam.
            </p>
          </section>
          <section>
            <div class="title">Title four</div>
            <p>
              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus
              dolor id ullamcorper tempor. Donec ut ullamcorper tellus. Etiam vel
              rhoncus urna. Aenean augue nulla, congue a orci at, imperdiet vehicula
              eros. Aenean ornare nibh ut leo faucibus fringilla. Quisque varius ut
              ipsum egestas feugiat. Mauris id nisl ultrices, consectetur mauris in,
              consectetur mi. Sed sit amet dolor urna. Nullam nec enim gravida,
              pulvinar lacus ut, volutpat nibh. Quisque commodo eu tortor ac dictum.
              Vivamus sodales risus sed blandit vulputate. Proin elit erat, varius
              non tincidunt ut, semper sed erat. Nulla vehicula vitae nisl nec
              dignissim. Curabitur viverra risus eu est pellentesque lobortis.
              Nullam egestas semper convallis. Ut ac blandit risus, sit amet
              elementum ex. Donec rhoncus augue eu cursus consequat. Duis a sapien
              sit amet elit aliquet molestie. Mauris nec ligula viverra, ornare
              dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet tempus
              justo consectetur ut. Aenean malesuada iaculis tortor ac varius.
              Phasellus ultrices purus nisi, eu rutrum felis bibendum id. Phasellus
              enim dui, ultrices sed massa vel, euismod bibendum eros. Duis quis
              auctor augue, eget pellentesque velit. In a est at neque dignissim
              pellentesque et tempus sem. Nulla et leo diam.
            </p>
          </section>
          <section>
            <div class="title">Title five</div>
            <p>
              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec cursus
              dolor id ullamcorper tempor.`enter code here` Donec ut ullamcorper
              tellus. Etiam vel rhoncus urna. Aenean augue nulla, congue a orci at,
              imperdiet vehicula eros. Aenean ornare nibh ut leo faucibus fringilla.
              Quisque varius ut ipsum egestas feugiat. Mauris id nisl ultrices,
              consectetur mauris in, consectetur mi. Sed sit amet dolor urna. Nullam
              nec enim gravida, pulvinar lacus ut, volutpat nibh. Quisque commodo eu
              tortor ac dictum. Vivamus sodales risus sed blandit vulputate. Proin
              elit erat, varius non tincidunt ut, semper sed erat. Nulla vehicula
              vitae nisl nec dignissim. Curabitur viverra risus eu est pellentesque
              lobortis. Nullam egestas semper convallis. Ut ac blandit risus, sit
              amet elementum ex. Donec rhoncus augue eu cursus consequat. Duis a
              sapien sit amet elit aliquet molestie. Mauris nec ligula viverra,
              ornare dolor vel, malesuada nisl. Proin gravida dolor justo, sit amet
              tempus justo consectetur ut. Aenean malesuada iaculis tortor ac
              varius. Phasellus ultrices purus nisi, eu rutrum felis bibendum id.
              Phasellus enim dui, ultrices sed massa vel, euismod bibendum eros.
              Duis quis auctor augue, eget pellentesque velit. In a est at neque
              dignissim pellentesque et tem pus sem. Nulla et leo diam.
            </p>
          </section>
        </div>
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search