Dans le HTML, une section .images contient des images qui disposent chacune d’un id. Au sein du texte sont intégrés des éléments span dont l’attribut rel permet de les “lier” à l’id d’une image.

En CSS, la section .images est positionnée de manière fixe. La section .text est décalée de la même dimension que la largeur de .images. Les images de la section .images sont masquées par défaut, mais une class .visible va permettre de les afficher.

En javascript, on observe la visibilité des span dans le viewport, et s’ils sont visibles (= qu’ils intersectent la zone du viewport), on ajoute la class .visible à l’image à laquelle ils sont liés.

Dans cet exemple, les span sont rendus var des blocs noirs, mais il est évidemment possible de les laisser vides et sans styles.

Cet exemple peut être modifié en attribuant à chaque image un positionnement spécifique. Voir ici la version alternative.

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Officia nobis magnam quod totam voluptatibus culpa quibusdam quo numquam quas ea, aperiam, saepe porro natus sequi facilis eos. Magni, nulla odit!

Aperiam, molestiae possimus aliquam fugiat iusto officia sapiente! Velit magni fugit mollitia numquam officiis beatae in eius est, hic nulla earum, ex inventore odit! Sed inventore in eos? Aut, excepturi.

In dignissimos qui odio alias dolor id magni quasi animi quam molestias vel, ex tempora sint dolorem eligendi velit ab consequuntur suscipit unde commodi dolore asperiores! Eaque enim culpa ratione?

Voluptates a sequi aliquid recusandae ullam voluptatem possimus consectetur libero aliquam, itaque ipsam culpa voluptatibus est corrupti iure reiciendis explicabo nihil adipisci, maxime repellendus expedita labore officia! Neque, ex voluptate.

Earum enim temporibus rerum sit. Doloribus nemo alias culpa totam, eaque cupiditate blanditiis quasi facere, consectetur sit natus similique ducimus tempore corrupti vel voluptates reiciendis. Iure ullam laudantium illum veniam!

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Officia nobis magnam quod totam voluptatibus culpa quibusdam quo numquam quas ea, aperiam, saepe porro natus sequi facilis eos. Magni, nulla odit! Aperiam, molestiae possimus aliquam fugiat iusto officia sapiente! Velit magni fugit mollitia numquam officiis beatae in eius est, hic nulla earum, ex inventore odit! Sed inventore in eos? Aut, excepturi.

In dignissimos qui odio alias dolor id magni quasi animi quam molestias vel, ex tempora sint dolorem eligendi velit ab consequuntur suscipit unde commodi dolore asperiores! Eaque enim culpa ratione? Voluptates a sequi aliquid recusandae ullam voluptatem possimus consectetur libero aliquam, itaque ipsam culpa voluptatibus est corrupti iure reiciendis explicabo nihil adipisci, maxime repellendus expedita labore officia! Neque, ex voluptate.

Earum enim temporibus rerum sit. Doloribus nemo alias culpa totam, eaque cupiditate blanditiis quasi facere, consectetur sit natus similique ducimus tempore corrupti vel voluptates reiciendis. Iure ullam laudantium illum veniam!