IntersectionObserver not working properly while trying with translationX

44 Views Asked by At

I am trying to work with intersectionObserver but it is acting wierd while trying with translationX. I wanted to translate all the .feature class form right to left as I scroll down but for some reason it is pushing contents outside of the viewport and it goes back to normal after all the items are visible. Edit: The above problem is occuring When i refresh page while viewing .feature class and it shows directly after refresh.

Found a solution: Due to overflow hidden my documet was being scroll lock before the tranlation at the right side. Using animation soved my problem. :)

When I try to translate from left to right by changing

.feature{
    opacity: 0;
    transition: opacity 200ms ease-in,
        transform 200ms ease-in;
    transform: translateX(400px);
}

to

.feature{
    opacity: 0;
    transition: opacity 200ms ease-in,
        transform 200ms ease-in;
    transform: translateX(-400px);
}

it is working properly.

here is my codes.

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Scroll effect</title>
    <link rel="stylesheet" href="style.css">
    <script src="mian.js" defer></script>
</head>
<body>
    <div class="space"></div>
    <div class="grid features">
        <div class="feature"><p> Lorem ipsum, dolor sit amet consectetur adipisicing elit. Aut deleniti aliquid obcaecati hic laudantium molestiae ea beatae maxime explicabo velit commodi, mollitia ratione corporis itaque suscipit sint eaque iure, ab doloribus quibusdam? Itaque beatae eaque nesciunt! Saepe mollitia veritatis accusamus aspernatur itaque modi alias dolores corrupti omnis odit, vero iusto repudiandae. Deleniti vel adipisci eveniet reiciendis natus? Quia iure sint debitis veritatis illo optio repellat? Blanditiis dicta atque quam possimus asperiores laudantium! Nulla modi facilis quas provident eaque hic cum obcaecati distinctio, qui soluta illo ratione expedita nihil. Distinctio voluptate qui autem. Debitis aliquid porro cupiditate accusantium, sunt quibusdam animi!</p></div>
        <div class="feature"><p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Veritatis iusto totam labore cum laborum rem amet, impedit eveniet dolorum quaerat natus magnam sed quidem ipsum suscipit velit? Corrupti eligendi cumque aliquam a tenetur, cupiditate, sint illo ut explicabo ex exercitationem reiciendis. Sapiente nostrum est voluptatum. At distinctio voluptate laboriosam? Quos voluptas blanditiis magnam quaerat sit cumque placeat possimus iure accusamus ex laudantium quasi unde, laboriosam similique ullam iste magni distinctio quis veniam eius. Magni aliquid ipsum eligendi odit cupiditate deserunt in libero laudantium, beatae hic nemo natus culpa dolore quas impedit exercitationem atque rerum! A est hic temporibus minus laborum!</p></div>
        <div class="feature"><p> Lorem ipsum dolor sit, amet consectetur adipisicing elit. Natus est earum sit quam aliquid ratione eaque nihil magni exercitationem veritatis nemo ex, ipsum et deserunt fugit porro commodi magnam quibusdam omnis molestias tempora! Deserunt laborum rerum debitis obcaecati officia sed autem quae temporibus repellendus! Nam deleniti debitis placeat laudantium illum cupiditate repellendus, quis laboriosam distinctio repudiandae. Quibusdam deleniti inventore perspiciatis aspernatur? Officia illum neque, eos distinctio repellendus quod odio hic labore unde necessitatibus voluptates doloribus. Ea in aliquam dolorem iure. Voluptatem dolores dicta iste sed eos a exercitationem molestias ipsa, quod natus similique corrupti ipsam fuga id cupiditate reprehenderit pariatur?</p></div>
    </div>
    <div class="grid features">
        <div class="feature"><p> Lorem ipsum, dolor sit amet consectetur adipisicing elit. Aut deleniti aliquid obcaecati hic laudantium molestiae ea beatae maxime explicabo velit commodi, mollitia ratione corporis itaque suscipit sint eaque iure, ab doloribus quibusdam? Itaque beatae eaque nesciunt! Saepe mollitia veritatis accusamus aspernatur itaque modi alias dolores corrupti omnis odit, vero iusto repudiandae. Deleniti vel adipisci eveniet reiciendis natus? Quia iure sint debitis veritatis illo optio repellat? Blanditiis dicta atque quam possimus asperiores laudantium! Nulla modi facilis quas provident eaque hic cum obcaecati distinctio, qui soluta illo ratione expedita nihil. Distinctio voluptate qui autem. Debitis aliquid porro cupiditate accusantium, sunt quibusdam animi!</p></div>
        <div class="feature"><p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Veritatis iusto totam labore cum laborum rem amet, impedit eveniet dolorum quaerat natus magnam sed quidem ipsum suscipit velit? Corrupti eligendi cumque aliquam a tenetur, cupiditate, sint illo ut explicabo ex exercitationem reiciendis. Sapiente nostrum est voluptatum. At distinctio voluptate laboriosam? Quos voluptas blanditiis magnam quaerat sit cumque placeat possimus iure accusamus ex laudantium quasi unde, laboriosam similique ullam iste magni distinctio quis veniam eius. Magni aliquid ipsum eligendi odit cupiditate deserunt in libero laudantium, beatae hic nemo natus culpa dolore quas impedit exercitationem atque rerum! A est hic temporibus minus laborum!</p></div>
        <div class="feature"><p> Lorem ipsum dolor sit, amet consectetur adipisicing elit. Natus est earum sit quam aliquid ratione eaque nihil magni exercitationem veritatis nemo ex, ipsum et deserunt fugit porro commodi magnam quibusdam omnis molestias tempora! Deserunt laborum rerum debitis obcaecati officia sed autem quae temporibus repellendus! Nam deleniti debitis placeat laudantium illum cupiditate repellendus, quis laboriosam distinctio repudiandae. Quibusdam deleniti inventore perspiciatis aspernatur? Officia illum neque, eos distinctio repellendus quod odio hic labore unde necessitatibus voluptates doloribus. Ea in aliquam dolorem iure. Voluptatem dolores dicta iste sed eos a exercitationem molestias ipsa, quod natus similique corrupti ipsam fuga id cupiditate reprehenderit pariatur?</p></div>
    </div>
    <div class="grid features">
        <div class="feature"><p> Lorem ipsum, dolor sit amet consectetur adipisicing elit. Aut deleniti aliquid obcaecati hic laudantium molestiae ea beatae maxime explicabo velit commodi, mollitia ratione corporis itaque suscipit sint eaque iure, ab doloribus quibusdam? Itaque beatae eaque nesciunt! Saepe mollitia veritatis accusamus aspernatur itaque modi alias dolores corrupti omnis odit, vero iusto repudiandae. Deleniti vel adipisci eveniet reiciendis natus? Quia iure sint debitis veritatis illo optio repellat? Blanditiis dicta atque quam possimus asperiores laudantium! Nulla modi facilis quas provident eaque hic cum obcaecati distinctio, qui soluta illo ratione expedita nihil. Distinctio voluptate qui autem. Debitis aliquid porro cupiditate accusantium, sunt quibusdam animi!</p></div>
        <div class="feature"><p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Veritatis iusto totam labore cum laborum rem amet, impedit eveniet dolorum quaerat natus magnam sed quidem ipsum suscipit velit? Corrupti eligendi cumque aliquam a tenetur, cupiditate, sint illo ut explicabo ex exercitationem reiciendis. Sapiente nostrum est voluptatum. At distinctio voluptate laboriosam? Quos voluptas blanditiis magnam quaerat sit cumque placeat possimus iure accusamus ex laudantium quasi unde, laboriosam similique ullam iste magni distinctio quis veniam eius. Magni aliquid ipsum eligendi odit cupiditate deserunt in libero laudantium, beatae hic nemo natus culpa dolore quas impedit exercitationem atque rerum! A est hic temporibus minus laborum!</p></div>
        <div class="feature"><p> Lorem ipsum dolor sit, amet consectetur adipisicing elit. Natus est earum sit quam aliquid ratione eaque nihil magni exercitationem veritatis nemo ex, ipsum et deserunt fugit porro commodi magnam quibusdam omnis molestias tempora! Deserunt laborum rerum debitis obcaecati officia sed autem quae temporibus repellendus! Nam deleniti debitis placeat laudantium illum cupiditate repellendus, quis laboriosam distinctio repudiandae. Quibusdam deleniti inventore perspiciatis aspernatur? Officia illum neque, eos distinctio repellendus quod odio hic labore unde necessitatibus voluptates doloribus. Ea in aliquam dolorem iure. Voluptatem dolores dicta iste sed eos a exercitationem molestias ipsa, quod natus similique corrupti ipsam fuga id cupiditate reprehenderit pariatur?</p></div>
    </div>
    <div class="grid features">
        <div class="feature"><p> Lorem ipsum, dolor sit amet consectetur adipisicing elit. Aut deleniti aliquid obcaecati hic laudantium molestiae ea beatae maxime explicabo velit commodi, mollitia ratione corporis itaque suscipit sint eaque iure, ab doloribus quibusdam? Itaque beatae eaque nesciunt! Saepe mollitia veritatis accusamus aspernatur itaque modi alias dolores corrupti omnis odit, vero iusto repudiandae. Deleniti vel adipisci eveniet reiciendis natus? Quia iure sint debitis veritatis illo optio repellat? Blanditiis dicta atque quam possimus asperiores laudantium! Nulla modi facilis quas provident eaque hic cum obcaecati distinctio, qui soluta illo ratione expedita nihil. Distinctio voluptate qui autem. Debitis aliquid porro cupiditate accusantium, sunt quibusdam animi!</p></div>
        <div class="feature"><p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Veritatis iusto totam labore cum laborum rem amet, impedit eveniet dolorum quaerat natus magnam sed quidem ipsum suscipit velit? Corrupti eligendi cumque aliquam a tenetur, cupiditate, sint illo ut explicabo ex exercitationem reiciendis. Sapiente nostrum est voluptatum. At distinctio voluptate laboriosam? Quos voluptas blanditiis magnam quaerat sit cumque placeat possimus iure accusamus ex laudantium quasi unde, laboriosam similique ullam iste magni distinctio quis veniam eius. Magni aliquid ipsum eligendi odit cupiditate deserunt in libero laudantium, beatae hic nemo natus culpa dolore quas impedit exercitationem atque rerum! A est hic temporibus minus laborum!</p></div>
        <div class="feature"><p> Lorem ipsum dolor sit, amet consectetur adipisicing elit. Natus est earum sit quam aliquid ratione eaque nihil magni exercitationem veritatis nemo ex, ipsum et deserunt fugit porro commodi magnam quibusdam omnis molestias tempora! Deserunt laborum rerum debitis obcaecati officia sed autem quae temporibus repellendus! Nam deleniti debitis placeat laudantium illum cupiditate repellendus, quis laboriosam distinctio repudiandae. Quibusdam deleniti inventore perspiciatis aspernatur? Officia illum neque, eos distinctio repellendus quod odio hic labore unde necessitatibus voluptates doloribus. Ea in aliquam dolorem iure. Voluptatem dolores dicta iste sed eos a exercitationem molestias ipsa, quod natus similique corrupti ipsam fuga id cupiditate reprehenderit pariatur?</p></div>
    </div>
    <div class="grid features">
        <div class="feature"><p> Lorem ipsum, dolor sit amet consectetur adipisicing elit. Aut deleniti aliquid obcaecati hic laudantium molestiae ea beatae maxime explicabo velit commodi, mollitia ratione corporis itaque suscipit sint eaque iure, ab doloribus quibusdam? Itaque beatae eaque nesciunt! Saepe mollitia veritatis accusamus aspernatur itaque modi alias dolores corrupti omnis odit, vero iusto repudiandae. Deleniti vel adipisci eveniet reiciendis natus? Quia iure sint debitis veritatis illo optio repellat? Blanditiis dicta atque quam possimus asperiores laudantium! Nulla modi facilis quas provident eaque hic cum obcaecati distinctio, qui soluta illo ratione expedita nihil. Distinctio voluptate qui autem. Debitis aliquid porro cupiditate accusantium, sunt quibusdam animi!</p></div>
        <div class="feature"><p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Veritatis iusto totam labore cum laborum rem amet, impedit eveniet dolorum quaerat natus magnam sed quidem ipsum suscipit velit? Corrupti eligendi cumque aliquam a tenetur, cupiditate, sint illo ut explicabo ex exercitationem reiciendis. Sapiente nostrum est voluptatum. At distinctio voluptate laboriosam? Quos voluptas blanditiis magnam quaerat sit cumque placeat possimus iure accusamus ex laudantium quasi unde, laboriosam similique ullam iste magni distinctio quis veniam eius. Magni aliquid ipsum eligendi odit cupiditate deserunt in libero laudantium, beatae hic nemo natus culpa dolore quas impedit exercitationem atque rerum! A est hic temporibus minus laborum!</p></div>
        <div class="feature"><p> Lorem ipsum dolor sit, amet consectetur adipisicing elit. Natus est earum sit quam aliquid ratione eaque nihil magni exercitationem veritatis nemo ex, ipsum et deserunt fugit porro commodi magnam quibusdam omnis molestias tempora! Deserunt laborum rerum debitis obcaecati officia sed autem quae temporibus repellendus! Nam deleniti debitis placeat laudantium illum cupiditate repellendus, quis laboriosam distinctio repudiandae. Quibusdam deleniti inventore perspiciatis aspernatur? Officia illum neque, eos distinctio repellendus quod odio hic labore unde necessitatibus voluptates doloribus. Ea in aliquam dolorem iure. Voluptatem dolores dicta iste sed eos a exercitationem molestias ipsa, quod natus similique corrupti ipsam fuga id cupiditate reprehenderit pariatur?</p></div>
    </div>
    <div class="grid features">
        <div class="feature"><p> Lorem ipsum, dolor sit amet consectetur adipisicing elit. Aut deleniti aliquid obcaecati hic laudantium molestiae ea beatae maxime explicabo velit commodi, mollitia ratione corporis itaque suscipit sint eaque iure, ab doloribus quibusdam? Itaque beatae eaque nesciunt! Saepe mollitia veritatis accusamus aspernatur itaque modi alias dolores corrupti omnis odit, vero iusto repudiandae. Deleniti vel adipisci eveniet reiciendis natus? Quia iure sint debitis veritatis illo optio repellat? Blanditiis dicta atque quam possimus asperiores laudantium! Nulla modi facilis quas provident eaque hic cum obcaecati distinctio, qui soluta illo ratione expedita nihil. Distinctio voluptate qui autem. Debitis aliquid porro cupiditate accusantium, sunt quibusdam animi!</p></div>
        <div class="feature"><p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Veritatis iusto totam labore cum laborum rem amet, impedit eveniet dolorum quaerat natus magnam sed quidem ipsum suscipit velit? Corrupti eligendi cumque aliquam a tenetur, cupiditate, sint illo ut explicabo ex exercitationem reiciendis. Sapiente nostrum est voluptatum. At distinctio voluptate laboriosam? Quos voluptas blanditiis magnam quaerat sit cumque placeat possimus iure accusamus ex laudantium quasi unde, laboriosam similique ullam iste magni distinctio quis veniam eius. Magni aliquid ipsum eligendi odit cupiditate deserunt in libero laudantium, beatae hic nemo natus culpa dolore quas impedit exercitationem atque rerum! A est hic temporibus minus laborum!</p></div>
        <div class="feature"><p> Lorem ipsum dolor sit, amet consectetur adipisicing elit. Natus est earum sit quam aliquid ratione eaque nihil magni exercitationem veritatis nemo ex, ipsum et deserunt fugit porro commodi magnam quibusdam omnis molestias tempora! Deserunt laborum rerum debitis obcaecati officia sed autem quae temporibus repellendus! Nam deleniti debitis placeat laudantium illum cupiditate repellendus, quis laboriosam distinctio repudiandae. Quibusdam deleniti inventore perspiciatis aspernatur? Officia illum neque, eos distinctio repellendus quod odio hic labore unde necessitatibus voluptates doloribus. Ea in aliquam dolorem iure. Voluptatem dolores dicta iste sed eos a exercitationem molestias ipsa, quod natus similique corrupti ipsam fuga id cupiditate reprehenderit pariatur?</p></div>
    </div>
</body>
</html>

main.js

const features = document.querySelectorAll(".feature");

const observer = new IntersectionObserver(function (entries, observer) {
    entries.forEach( entry => {
        if (!entry.isIntersecting) {
            return
        }
        entry.target.classList.toggle("viewed")
        observer.unobserve(entry.target);
    })
}, {threshold: 0, rootMargin: "-200px"})

features.forEach(feature => {
    observer.observe(feature)
})

style.css

body{
    overflow-x: hidden;
}
.space{
    height: 100vh;
}

.grid{
    display: grid;
}

.grid.features{
    gap: 2rem;
    grid-template-columns: repeat(3, 1fr);
    
}

.feature{
    opacity: 0;
    transition: opacity 200ms ease-in,
        transform 200ms ease-in;
    transform: translateX(400px);
}
.viewed{
    opacity: 1 !important;
    transform: translateX(0px) !important;
}

Image

0

There are 0 best solutions below