Content 1

Click here to add your own text

Content 2

Content 3

See Layout below on the right side

#top .avia-section.hero-scroll {
 /* === set by the script itself  height: 300vh;  === */
  position: relative;
  clip-path: inset(0 0 0 0);
}

#top .avia-section.hero-scroll .container,
#top .avia-section.hero-scroll .content {
  padding: 0;
}

#top .hero-scroll .entry-content-wrapper .flex_column.bg-column {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  margin: 0 !important;
  background-size: cover;
  background-position: center;
  transition: opacity 0.3s ease;
  display: flex;
  align-items: center;
  justify-content: center;
}

#top .hero-scroll .entry-content-wrapper .flex_column.bg-column:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  visibility: visible;
  background: rgba(0, 0, 0, 0.2);
}


#bg1 { opacity: 1; }
#bg2 { opacity: 0; }
#bg3 { opacity: 0; }

#top .hero-scroll .entry-content-wrapper .flex_column.content-section {
  position: relative;
  height: 100vh;
  display: grid;
  z-index: 10;
  align-items: center;
  align-content: center;
}

Layout of this page

<script>
    // CONFIGURATION - Only change the number of images here
    const NUM_IMAGES = 3;

    // Automatically adjust container height of the color-section
    document.querySelector('.hero-scroll').style.height = (NUM_IMAGES * 100) + 'vh';

    // Automatically fetch all background elements
    const backgrounds = [];
    for (let i = 1; i <= NUM_IMAGES; i++) {
        backgrounds.push(document.getElementById('bg' + i));
    }


    window.addEventListener('scroll', () => {
        const scrollPos = window.scrollY;
        const windowHeight = window.innerHeight;
        
        // Calculate scroll progress (0 to 1)
        const progress = scrollPos / (windowHeight * NUM_IMAGES);
        
        // Calculate threshold values (for example for 3 images: 0.33 and 0.66)
        const thresholds = [];
        for (let i = 1; i < NUM_IMAGES; i++) {
            thresholds.push(i / NUM_IMAGES);
        }
        
        // Kreuzblenden zwischen den Bildern
        for (let i = 0; i < NUM_IMAGES - 1; i++) {
            const threshold = thresholds[i];
            const prevThreshold = i > 0 ? thresholds[i - 1] : 0;
            
            if (progress >= prevThreshold && progress < threshold) {
                // Transition from image i to image i+1
                const fadeProgress = (progress - prevThreshold) / (threshold - prevThreshold);
                backgrounds[i].style.opacity = 1 - fadeProgress;
                backgrounds[i + 1].style.opacity = fadeProgress;
                
                // All others to 0
                for (let j = 0; j < NUM_IMAGES; j++) {
                    if (j !== i && j !== i + 1) {
                        backgrounds[j].style.opacity = 0;
                    }
                }
            }
        }
        
        // Last image remains visible
        if (progress >= thresholds[thresholds.length - 1]) {
            for (let i = 0; i < NUM_IMAGES - 1; i++) {
                backgrounds[i].style.opacity = 0;
            }
            backgrounds[NUM_IMAGES - 1].style.opacity = 1;
        }
    });
</script>