Salut
Soit 2 <div> en mode table avec des ordonnancements légèrement différents :
https://codepen.io/kerlutinoec/pen/jOBQQad
Le CSS :
L'apparition du texte est géré par Intersection Observer :
Pourquoi le deuxième texte veut bien s'animer mais pas le premier ???
PS : le plus étrange c'est que sur mac ça marche (Firefox, Chrome, Safari) et pas sur PC (ni Firefox, ni Chrome)
PS2 : seule la présence de 'image2' créé le problème (sous windows) ; sans elle ça marche !
Modifié par kerlutinoec (14 Jun 2021 - 16:18)
Soit 2 <div> en mode table avec des ordonnancements légèrement différents :
https://codepen.io/kerlutinoec/pen/jOBQQad
<div style="position: relative; overflow-x: hidden; margin: 0 0 15vw 0;">
<div class="figs">
<figure>
<img src="image1.jpg" alt="" height="350" width="350"
class="maxheight">
</figure>
<figure style="vertical-align: bottom; border-spacing: 0;">
<p class="textesurimage textesurimageD">
Le premier texte
</p>
<img src="image2.jpg" alt="" height="125" width="350">
</figure>
</div>
</div>
<div style="position: relative; overflow-x: hidden; margin: 0 0 15vw 0;">
<img src="image3.jpg" alt="" height="250" width="500"
style="width: 100%;" class="maxheight">
<div class="figs">
<figure>
<img src="image4.jpg" alt="" height="205" width="305"
style="vertical-align: bottom;">
</figure>
<figure style="vertical-align: middle; background-color: #758C92;">
<p class="textesurimage textesurimageD">
Le deuxième texte
</p>
</figure>
</div>
</div>
Le CSS :
.figs { display: table; border-spacing: .2vw 0; }
figure { position: relative; display: table-cell; }
figure img { width: 49.7vw; }
.maxheight { height: auto; max-height: 100vh; object-fit: cover; }
.textesurimage {
transform: translateX(-100%);
overflow: hidden;
width: 50%;
bottom: 0;
left: 5vw;
text-align: left;
font-size: 2.5em;
text-shadow: 1px 1px 1px #000;
}
.textesurimageD {
transform: translateX(100%);
width: 100%;
text-align: center;
}
@media screen and (max-width:1200px) { .textesurimage{font-size: 1.75em;line-height: 1.125em;} }
.animtext { transform: translateX(0); transition: transform 1s ease; }
L'apparition du texte est géré par Intersection Observer :
const callback = (entries, observer) => { entries.forEach((entry) => {
if (entry.isIntersecting) { entry.target.classList.add("animtext") } } ) };
const options = { root: null, rootMargin: '0px', threshold: 0 };
const myObserver = new IntersectionObserver(callback, options);
const txtList = document.querySelectorAll(".textesurimage");
txtList.forEach(txt => { myObserver.observe(txt); });
Pourquoi le deuxième texte veut bien s'animer mais pas le premier ???
PS : le plus étrange c'est que sur mac ça marche (Firefox, Chrome, Safari) et pas sur PC (ni Firefox, ni Chrome)
PS2 : seule la présence de 'image2' créé le problème (sous windows) ; sans elle ça marche !
Modifié par kerlutinoec (14 Jun 2021 - 16:18)