HTML:
<section class="paralax"> <h1>bistrot gourmand</h1> <img src="<?php echo get_template_directory_uri(); ?>/css/img/burger.png" alt="" class="imgSlideInLeft"> <img src="<?php echo get_template_directory_uri(); ?>/css/img/bonappetit.png" alt="" class="imgSlideInRight"> </section>
CSS:
/* Paralaxe */
/**
* La parti commentée doit être rajouté à chaque nouvelle "observation"
* Ne pas oublier de mettre les keyframes voulu si vous voulez en utiliser d'autre
*/
.paralax{
background-image: url('img/mrrobot2.jpg');
min-height: 500px;
background-attachment: fixed;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
.paralax h1{
color: red;
font-size: 120px;
text-align: center;
text-transform: uppercase;
}
.imgSlideInLeft{
position: relative;
bottom: -110px;
width: 40%;
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: forwards;
transition: 1s all ease-in-out;
}
.imgSlideInRight{
position: relative;
bottom: -100px;
right: -450px;
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: forwards;
transition: 1s all ease-in-out;
}
/* .fadeIn{
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: forwards;
transition: 1s all ease-in-out;
} */
@-webkit-keyframes fadeInLeft {
from {
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes fadeInLeft {
from {
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@-webkit-keyframes fadeInRight {
from {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes fadeInRight {
from {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@media (max-width:1024px){
.imgSlideInLeft{
bottom: -60px;
}
.imgSlideInRight{
bottom: -80px;
right: -235px;
}
}
@media (max-width:768px){
.imgSlideInRight{
bottom: -60px;
right: -130px;
width: 40%;
}
}
@media (max-width:426px){
.paralax h1{
font-size: 70px;
}
.imgSlideInLeft{
bottom: -190px;
width: 60%;
}
.imgSlideInRight{
bottom: -100px;
right: -250px;
width: 40%;
}
}
JavaScript:
// Intersection Observer
// En commentaire tout ce qui doit être rajouter pour faire une observation supplémentaire
// Ne pas oublier de rajouter dans le css les animations sur l'objet observé
var imgLeft;
var imgRight;
// var fadeIn;
var prevRatio = 0.0;
var fadeInLeft = "fadeInLeft";
var fadeInRight = "fadeInRight";
/**
* var fadeInRight sauvegarde le nom de la keyframes qui sera utilisé pour lancé l'animation
*/
window.addEventListener("load", function(){
imgLeft = document.querySelector(".imgSlideInLeft");
imgRight = document.querySelector(".imgSlideInRight");
// fadeIn = document.querySelector(".fadeIn");
createObserver();
}, false);
function createObserver(){
var observerLeft;
var observerRight;
// var observerFadeIn;
var options = {
root: null,
rootMargin: "0px",
thresholds: 0.2
/**
* threshold = entre 0.0 et 1.0 (ratio de visibilité du bloc pour déclenchement de l'action
*/
};
observerLeft = new IntersectionObserver(handleIntersectLeft, options);
observerLeft.observe(imgLeft);
observerRight = new IntersectionObserver(handleIntersectRight, options);
observerRight.observe(imgRight);
// observerFadeIn = new IntersectionObserver(handleIntersectFadeIn, options);
// observerFadeIn.observe(fadeIn);
}
function handleIntersectLeft(entries){
entries.forEach(function(entry){
if(entry.intersectionRatio > prevRatio){
entry.target.style.animationName = fadeInLeft;
}
prevRatio = entry.intersectionRatio
});
}
function handleIntersectRight(entries){
entries.forEach(function(entry){
if(entry.intersectionRatio > prevRatio){
entry.target.style.animationName = fadeInRight;
}
prevRatio = entry.intersectionRatio
});
}
// function handleIntersectFadeIn(entries){
// entries.forEach(function(entry){
// if(entry.intersectionRatio > prevRatio){
// entry.target.style.animationName = fadeInLeft;
// }
// prevRatio = entry.intersectionRatio
// });
// }
