/* ===========================
ATURAN UMUM
=========================== */
.wdpal-fade-in,
.wdpal-muncul-atas,
.wdpal-muncul-bawah,
.wdpal-muncul-kiri,
.wdpal-muncul-kanan,
.wdpal-rotate-in,
.wdpal-flip-x,
.wdpal-flip-y,
.wdpal-zoom-in,
.wdpal-zoom-out {
opacity: 0;
transition-property: transform, opacity;
transition-timing-function: ease;
position: relative;
z-index: 1;
}
.wdpal-fade-in.active,
.wdpal-muncul-atas.active,
.wdpal-muncul-bawah.active,
.wdpal-muncul-kiri.active,
.wdpal-muncul-kanan.active,
.wdpal-rotate-in.active,
.wdpal-flip-x.active,
.wdpal-flip-y.active,
.wdpal-zoom-in.active,
.wdpal-zoom-out.active {
opacity: 1;
}
/* ===========================
DURASI ANIMASI
=========================== */
.wdpal-fade-in,
.wdpal-muncul-atas,
.wdpal-muncul-bawah,
.wdpal-muncul-kiri,
.wdpal-muncul-kanan,
.wdpal-rotate-in,
.wdpal-flip-x,
.wdpal-flip-y,
.wdpal-zoom-in,
.wdpal-zoom-out {
transition-duration: 1.25s; /* Default: Smooth */
}
.very-slow {
transition-duration: 3s;
}
.slow {
transition-duration: 2s;
}
.fast {
transition-duration: 0.75s;
}
.very-fast {
transition-duration: 0.3s;
}
/* ===========================
EFEK FADE IN
=========================== */
.wdpal-fade-in {
transition-delay: 0.2s;
}
/* ===========================
EFEK MUNCUL ATAS
=========================== */
.wdpal-muncul-atas {
transform: translateY(50px);
opacity: 0;
transition-delay: 0.3s;
}
.wdpal-muncul-atas.active {
transform: translateY(0);
opacity: 1;
}
/* ===========================
EFEK MUNCUL BAWAH
=========================== */
.wdpal-muncul-bawah {
transform: translateY(-50px);
opacity: 0;
transition-delay: 0.3s;
}
.wdpal-muncul-bawah.active {
transform: translateY(0);
opacity: 1;
}
/* ===========================
EFEK MUNCUL KIRI
=========================== */
.wdpal-muncul-kiri {
transform: translateX(-50px) scale(0.95);
opacity: 0;
transition-delay: 0.4s;
}
.wdpal-muncul-kiri.active {
transform: translateX(0);
opacity: 1;
}
/* ===========================
EFEK MUNCUL KANAN
=========================== */
.wdpal-muncul-kanan {
transform: translateX(50px) scale(0.95);
opacity: 0;
transition-delay: 0.5s;
}
.wdpal-muncul-kanan.active {
transform: translateX(0);
opacity: 1;
}
/* ===========================
EFEK ROTATE IN
=========================== */
.wdpal-rotate-in {
transform: rotate(-180deg);
opacity: 0;
transition-delay: 0.5s;
}
.wdpal-rotate-in.active {
transform: rotate(0deg);
opacity: 1;
}
/* ===========================
EFEK FLIP X
=========================== */
.wdpal-flip-x {
transform: rotateX(90deg);
transform-style: preserve-3d;
backface-visibility: hidden;
visibility: hidden;
pointer-events: none;
transition-delay: 0.6s;
}
.wdpal-flip-x.active {
transform: rotateX(0deg);
visibility: visible;
pointer-events: auto;
}
/* ===========================
EFEK FLIP Y
=========================== */
.wdpal-flip-y {
transform: rotateY(90deg);
transform-style: preserve-3d;
backface-visibility: hidden;
visibility: hidden;
pointer-events: none;
transition-delay: 0.6s;
}
.wdpal-flip-y.active {
transform: rotateY(0deg);
visibility: visible;
pointer-events: auto;
}
/* ===========================
EFEK ZOOM IN
=========================== */
.wdpal-zoom-in {
transform: scale(0.7);
opacity: 0;
transition-delay: 0.2s;
}
.wdpal-zoom-in.active {
transform: scale(1);
opacity: 1;
}
/* ===========================
EFEK ZOOM OUT
=========================== */
.wdpal-zoom-out {
transform: scale(1.3);
opacity: 0;
transition-delay: 0.2s;
}
.wdpal-zoom-out.active {
transform: scale(1);
opacity: 1;
}
(function () {
// Fungsi utama untuk mengaktifkan animasi
function revealElements(selector) {
const elements = document.querySelectorAll(selector);
const windowHeight = window.innerHeight;
const elementVisible = 150;
elements.forEach(function(element) {
const elementTop = element.getBoundingClientRect().top;
if (elementTop {
entries.forEach((entry) => {
if (entry.isIntersecting) {
entry.target.classList.add("active");
} else {
entry.target.classList.remove("active");
}
});
};
const observer = new IntersectionObserver(observerCallback, observerOptions);
// Panggil fungsi revealElements untuk semua efek animasi
document.addEventListener("DOMContentLoaded", () => {
const selector = ".wdpal-fade-in, .wdpal-muncul-atas, .wdpal-muncul-bawah, .wdpal-muncul-kiri, .wdpal-muncul-kanan, .wdpal-rotate-in, .wdpal-flip-x, .wdpal-flip-y, .wdpal-zoom-in, .wdpal-zoom-out";
// Mengamati elemen dengan Intersection Observer
const elements = document.querySelectorAll(selector);
elements.forEach((element) => {
observer.observe(element);
});
// Panggil fungsi revealElements untuk menambahkan kelas active pada elemen yang sudah terlihat
revealElements(selector);
});
// Tambahkan event listener untuk scroll
window.addEventListener("scroll", () => {
revealElements(".wdpal-fade-in, .wdpal-muncul-atas, .wdpal-muncul-bawah, .wdpal-muncul-kiri, .wdpal-muncul-kanan, .wdpal-rotate-in, .wdpal-flip-x, .wdpal-flip-y, .wdpal-zoom-in, .wdpal-zoom-out");
});
})();