Lightbox cho ảnh của blogspot

23.10.23 | 0 nhận xét | lượt xem
Nội Dung Chính [Ẩn] [Hiển thị]
    Bài viết này mình sẽ hướng dẫn mọi người cách tạo lightbox cho ảnh của blogspot. Tất nhiên sẽ có anh em thắc mắc tại sao phải dùng và dưới đây là một số lý do
    • Dành cho bạn nào tắt CSS và JS mặc định của blogspot
    • Không muốn sử dụng JS và CSS bên ngoài
    • Không phải sửa lại cấu trúc HTML các ảnh cũ trên blog
    • Đoạn JS và CSS của mình rất gọn
    • Thoải mái tùy biến CSS theo ý thích

    CSS

    .lightbox-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.8);z-index:999}
    .lightbox-container{display:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1000;width:90%;text-align:center}
    .lightbox-image{max-width:90%;max-height:90%;transition: transform 0.3s ease;}
    .lightbox-close{bottom:-55px;right:50%;border-radius:3px;padding:5px;position:absolute;transform:translateY(-50%);width:20px;height:20px;background-color:rgb(255 255 255);color:#333;text-align:center;line-height:20px;cursor:pointer;0 0 10px rgb(255 255 255 / 50%);}
    .lightbox-prev,.lightbox-next{position:absolute;top:50%;transform:translateY(-50%);width:30px;height:30px;background-color:rgb(255 255 255);color:#333;text-align:center;line-height:30px;cursor:pointer;border-radius:3px;0 0 10px rgb(255 255 255 / 50%);}
    .lightbox-prev{left:-40px}
    .lightbox-next{right:-40px}
    .lightbox-close:hover,.lightbox-prev:hover, .lightbox-next:hover{background-color: rgb(175 175 175)}
    

    JS

    <script>
    //<![CDATA[
    /*
    Lightbox for Blogger
    Author: HuyDC
    */
    document.addEventListener("DOMContentLoaded",function(){var links=document.querySelectorAll(".separator a");var overlay=document.createElement("div");overlay.className="lightbox-overlay";var container=document.createElement("div");container.className="lightbox-container";var lightboxImage=document.createElement("img");lightboxImage.className="lightbox-image";var closeIcon=document.createElement("div");closeIcon.className="lightbox-close";closeIcon.innerHTML="X";var prevButton=document.createElement("div");prevButton.className="lightbox-prev";prevButton.innerHTML="<";var nextButton=document.createElement("div");nextButton.className="lightbox-next";nextButton.innerHTML=">";container.appendChild(lightboxImage);container.appendChild(closeIcon);container.appendChild(prevButton);container.appendChild(nextButton);document.body.appendChild(overlay);document.body.appendChild(container);var imageSources=[];var currentImageIndex=0;for(var i=0;i<links.length;i++){links[i].addEventListener("click",function(e){e.preventDefault();var linkHref=this.getAttribute("href");lightboxImage.src=linkHref;overlay.style.display="block";container.style.display="block";imageSources=Array.from(links).map(function(link){return link.getAttribute("href")});currentImageIndex=imageSources.indexOf(linkHref)})}
    closeIcon.addEventListener("click",function(){closeLightbox()});overlay.addEventListener("click",function(){closeLightbox()});prevButton.addEventListener("click",function(){navigateImage(-1)});nextButton.addEventListener("click",function(){navigateImage(1)});document.addEventListener("keydown",function(e){if(e.key==="Escape"){closeLightbox()}
    if(e.key==="ArrowLeft"){navigateImage(-1)}
    if(e.key==="ArrowRight"){navigateImage(1)}});var startX,startY,endX,endY;container.addEventListener("touchstart",function(e){startX=e.changedTouches[0].pageX;startY=e.changedTouches[0].pageY});container.addEventListener("touchend",function(e){endX=e.changedTouches[0].pageX;endY=e.changedTouches[0].pageY;var deltaX=endX-startX;var deltaY=endY-startY;if(Math.abs(deltaX)>Math.abs(deltaY)){if(deltaX>0){navigateImage(-1)}else{navigateImage(1)}}});function closeLightbox(){overlay.style.display="none";container.style.display="none"}
    function navigateImage(direction){currentImageIndex+=direction;if(currentImageIndex<0){currentImageIndex=imageSources.length-1}
    if(currentImageIndex>=imageSources.length){currentImageIndex=0}
    lightboxImage.src=imageSources[currentImageIndex]}})
    //]]>
    </script>
    Lưu ý: Đoạn js tự động lấy toàn bộ nội dung trong thẻ div có class separator để tạo lightbox cho ảnh, vì thế khi đưa ảnh vào bài viết các bạn chỉ việc chọn kích thước và vị trí ảnh như bình thường, đừng thay đổi gì cả thì code mới hoạt động.
    Bạn đang xem bài viết "Lightbox cho ảnh của blogspot" tại chuyên mục: Blogspot , CSS , Javascript

      Chèn hình ảnh: Chỉ cần dán link hình ảnh - Upload ảnh

      Chèn code: [pre]Code đã mã hóa [/pre]

      Chèn emoji: Nhấn tổ hợp phím “Windows + . (dấu chấm)”

      Chèn link: Click để chèn link