<section class="animate-things-wrapper intersection-observer">
    <div class="text">
        <p>Illo veniam sequi dolor. Quibusdam corporis earum expedita similique ad necessitatibus enim. Ducimus temporibus sed odio eligendi. Ad velit non qui.</p>
        <p>Dolor neque recusandae eos commodi. Commodi quis corporis consequatur et voluptatem voluptas ut esse. Eveniet et voluptatibus et dolorum harum nemo porro consequatur. Dolorum qui dolorem numquam deleniti est dolores optio voluptatibus. Suscipit consequatur quos non quas. Eos quo harum reprehenderit velit.</p>
        <p>Ut magni id necessitatibus. Optio aperiam eos hic voluptas beatae ratione deserunt fugiat. Et officiis magnam rerum non aut porro ut corrupti.</p>
        <p>Tenetur architecto vel voluptates voluptate ut veniam recusandae. Molestiae rerum totam nulla et vitae doloribus voluptas. Eius sed in eum vel est. Eum quo accusantium totam deserunt ad ut. Vero totam aut molestias.</p>
        <p>Ea illo doloribus occaecati. Nihil sed nemo non quas laudantium. Facere totam ut commodi mollitia iste et expedita. Voluptatem laudantium corrupti rerum corrupti voluptas aut.</p>
        <p>Dolores amet reprehenderit impedit. Aut expedita sint libero consequatur est libero. Rerum qui repellendus id dolore odio enim deserunt. Illo in non amet doloribus sit et. Placeat molestias odit quasi nam quia.</p>
        <p>Tenetur autem aperiam dolor. Tenetur dolor vel eos sit. Molestiae sit quo iure est. Non tempore occaecati hic consequuntur ipsa voluptas.</p>
        <p>Maiores velit suscipit sint fugit illo. Ut eos asperiores quia. Quo a sit eum quisquam. Nisi rerum dolorem tenetur exercitationem eos aliquid.</p>
        <p>At dolor odit ut dolor aliquam corporis officia. Eveniet et inventore quas nostrum omnis. Praesentium fugiat eum aspernatur similique temporibus vitae quod. Id qui vel nesciunt enim fugiat.</p>
        <p>Aperiam illum aliquam sit aliquam et error. Expedita minima et eum deleniti hic quia. Deserunt alias porro est et aut est temporibus sunt. Quia eveniet et non sunt tempore. Ducimus eum fuga debitis dolor sunt maiores. Iure facilis ut et veniam sequi.</p>
    </div>

    <div id="box" class="box">
        Observe me change as I become at least 75% visible above the bottom of the viewport
    </div>

    <div class="text">
        <p>Illo veniam sequi dolor. Quibusdam corporis earum expedita similique ad necessitatibus enim. Ducimus temporibus sed odio eligendi. Ad velit non qui.</p>
        <p>Dolor neque recusandae eos commodi. Commodi quis corporis consequatur et voluptatem voluptas ut esse. Eveniet et voluptatibus et dolorum harum nemo porro consequatur. Dolorum qui dolorem numquam deleniti est dolores optio voluptatibus. Suscipit consequatur quos non quas. Eos quo harum reprehenderit velit.</p>
        <p>Ut magni id necessitatibus. Optio aperiam eos hic voluptas beatae ratione deserunt fugiat. Et officiis magnam rerum non aut porro ut corrupti.</p>
        <p>Tenetur architecto vel voluptates voluptate ut veniam recusandae. Molestiae rerum totam nulla et vitae doloribus voluptas. Eius sed in eum vel est. Eum quo accusantium totam deserunt ad ut. Vero totam aut molestias.</p>
        <p>Ea illo doloribus occaecati. Nihil sed nemo non quas laudantium. Facere totam ut commodi mollitia iste et expedita. Voluptatem laudantium corrupti rerum corrupti voluptas aut.</p>
        <p>Dolores amet reprehenderit impedit. Aut expedita sint libero consequatur est libero. Rerum qui repellendus id dolore odio enim deserunt. Illo in non amet doloribus sit et. Placeat molestias odit quasi nam quia.</p>
        <p>Tenetur autem aperiam dolor. Tenetur dolor vel eos sit. Molestiae sit quo iure est. Non tempore occaecati hic consequuntur ipsa voluptas.</p>
        <p>Maiores velit suscipit sint fugit illo. Ut eos asperiores quia. Quo a sit eum quisquam. Nisi rerum dolorem tenetur exercitationem eos aliquid.</p>
        <p>At dolor odit ut dolor aliquam corporis officia. Eveniet et inventore quas nostrum omnis. Praesentium fugiat eum aspernatur similique temporibus vitae quod. Id qui vel nesciunt enim fugiat.</p>
        <p>Aperiam illum aliquam sit aliquam et error. Expedita minima et eum deleniti hic quia. Deserunt alias porro est et aut est temporibus sunt. Quia eveniet et non sunt tempore. Ducimus eum fuga debitis dolor sunt maiores. Iure facilis ut et veniam sequi.</p>
    </div>
</section>

<script src="../../js/components/intersection-observer.js"></script>
<section class="animate-things-wrapper intersection-observer">
    <div class="text">
        <p>Illo veniam sequi dolor. Quibusdam corporis earum expedita similique ad necessitatibus enim. Ducimus temporibus sed odio eligendi. Ad velit non qui.</p>
        <p>Dolor neque recusandae eos commodi. Commodi quis corporis consequatur et voluptatem voluptas ut esse. Eveniet et voluptatibus et dolorum harum nemo porro consequatur. Dolorum qui dolorem numquam deleniti est dolores optio voluptatibus. Suscipit consequatur quos non quas. Eos quo harum reprehenderit velit.</p>
        <p>Ut magni id necessitatibus. Optio aperiam eos hic voluptas beatae ratione deserunt fugiat. Et officiis magnam rerum non aut porro ut corrupti.</p>
        <p>Tenetur architecto vel voluptates voluptate ut veniam recusandae. Molestiae rerum totam nulla et vitae doloribus voluptas. Eius sed in eum vel est. Eum quo accusantium totam deserunt ad ut. Vero totam aut molestias.</p>
        <p>Ea illo doloribus occaecati. Nihil sed nemo non quas laudantium. Facere totam ut commodi mollitia iste et expedita. Voluptatem laudantium corrupti rerum corrupti voluptas aut.</p>
        <p>Dolores amet reprehenderit impedit. Aut expedita sint libero consequatur est libero. Rerum qui repellendus id dolore odio enim deserunt. Illo in non amet doloribus sit et. Placeat molestias odit quasi nam quia.</p>
        <p>Tenetur autem aperiam dolor. Tenetur dolor vel eos sit. Molestiae sit quo iure est. Non tempore occaecati hic consequuntur ipsa voluptas.</p>
        <p>Maiores velit suscipit sint fugit illo. Ut eos asperiores quia. Quo a sit eum quisquam. Nisi rerum dolorem tenetur exercitationem eos aliquid.</p>
        <p>At dolor odit ut dolor aliquam corporis officia. Eveniet et inventore quas nostrum omnis. Praesentium fugiat eum aspernatur similique temporibus vitae quod. Id qui vel nesciunt enim fugiat.</p>
        <p>Aperiam illum aliquam sit aliquam et error. Expedita minima et eum deleniti hic quia. Deserunt alias porro est et aut est temporibus sunt. Quia eveniet et non sunt tempore. Ducimus eum fuga debitis dolor sunt maiores. Iure facilis ut et veniam sequi.</p>
    </div>

    <div id="box" class="box">
        Observe me change as I become at least 75% visible above the bottom of the viewport
    </div>

    <div class="text">
        <p>Illo veniam sequi dolor. Quibusdam corporis earum expedita similique ad necessitatibus enim. Ducimus temporibus sed odio eligendi. Ad velit non qui.</p>
        <p>Dolor neque recusandae eos commodi. Commodi quis corporis consequatur et voluptatem voluptas ut esse. Eveniet et voluptatibus et dolorum harum nemo porro consequatur. Dolorum qui dolorem numquam deleniti est dolores optio voluptatibus. Suscipit consequatur quos non quas. Eos quo harum reprehenderit velit.</p>
        <p>Ut magni id necessitatibus. Optio aperiam eos hic voluptas beatae ratione deserunt fugiat. Et officiis magnam rerum non aut porro ut corrupti.</p>
        <p>Tenetur architecto vel voluptates voluptate ut veniam recusandae. Molestiae rerum totam nulla et vitae doloribus voluptas. Eius sed in eum vel est. Eum quo accusantium totam deserunt ad ut. Vero totam aut molestias.</p>
        <p>Ea illo doloribus occaecati. Nihil sed nemo non quas laudantium. Facere totam ut commodi mollitia iste et expedita. Voluptatem laudantium corrupti rerum corrupti voluptas aut.</p>
        <p>Dolores amet reprehenderit impedit. Aut expedita sint libero consequatur est libero. Rerum qui repellendus id dolore odio enim deserunt. Illo in non amet doloribus sit et. Placeat molestias odit quasi nam quia.</p>
        <p>Tenetur autem aperiam dolor. Tenetur dolor vel eos sit. Molestiae sit quo iure est. Non tempore occaecati hic consequuntur ipsa voluptas.</p>
        <p>Maiores velit suscipit sint fugit illo. Ut eos asperiores quia. Quo a sit eum quisquam. Nisi rerum dolorem tenetur exercitationem eos aliquid.</p>
        <p>At dolor odit ut dolor aliquam corporis officia. Eveniet et inventore quas nostrum omnis. Praesentium fugiat eum aspernatur similique temporibus vitae quod. Id qui vel nesciunt enim fugiat.</p>
        <p>Aperiam illum aliquam sit aliquam et error. Expedita minima et eum deleniti hic quia. Deserunt alias porro est et aut est temporibus sunt. Quia eveniet et non sunt tempore. Ducimus eum fuga debitis dolor sunt maiores. Iure facilis ut et veniam sequi.</p>
    </div>
</section>

<script src="{{ path '/js/components/intersection-observer.js' }}"></script>
/* No context defined. */
  • Content:
    (function () {
      document.addEventListener('DOMContentLoaded', function () {
        console.log("Intersection Observer script active");
    
        const button = document.querySelector('#addClass');
        const box = document.querySelector('#box');
        const doc = document.querySelector('html');
    
        // Intersection Observer ready
        const hasIO = typeof IntersectionObserver === 'function';
        doc.classList.add((hasIO) ? "IntersectionObserver" : "noIntersectionObserver");
    
        if (hasIO) {
          const observedBoxes = [...document.querySelectorAll('#box')];
          const observerOptions = {
            rootMargin: '0px',
            threshold: '0.75',
          };
    
          const observerCallback = function(entries) {
            entries.forEach(function(entry) {
              const { target } = entry;
              const ir = entry.intersectionRatio;
              const rect = target.getBoundingClientRect();
    
              if (ir >= 0.75 && rect.bottom >= window.innerHeight) {
                target.classList.add("active");
              } else if (ir <= 0.75 && rect.bottom >= window.innerHeight) {
                target.classList.remove("active");
              }
            })
          };
    
          const boxObserver = new IntersectionObserver(observerCallback, observerOptions);
    
          observedBoxes.forEach(function(box, index) {
            boxObserver.observe(box);
          });
    
    
        }
      });
    })();
    
  • URL: /components/raw/intersection-observer/intersection-observer.js
  • Filesystem Path: components/05-intersection-observer/01-intersection-observer/intersection-observer.js
  • Size: 1.3 KB
  • Content:
    .intersection-observer {
      .text {
        width: 100%;
        max-width: 800px;
        margin: auto;
      }
    
      p {
        font-size: 1.5rem;
      }
    
      .box {
        width: calc(300px - 2rem);
        height: 300px;
        padding: 0 1rem;
        font-weight: bold;
    
        background: #ff0000;
    
        transition: background-color 0.5s ease-in-out, color 0.5s ease-in-out;
    
        &.active {
          background-color: #0000ff;
          color: #ffffff;
        }
      }
    }
    
  • URL: /components/raw/intersection-observer/intersection-observer.scss
  • Filesystem Path: components/05-intersection-observer/01-intersection-observer/intersection-observer.scss
  • Size: 419 Bytes
  • Handle: @intersection-observer
  • Preview:
  • Filesystem Path: components/05-intersection-observer/01-intersection-observer/intersection-observer.hbs

No notes defined.