简体   繁体   English

如何修复:图片库,图片覆盖不打开灯箱

[英]How to fix: image gallery, image with overlay not opening lightbox

I want the images to have a hover effect that shows an overlay with an icon (let's say the zoom icon), but when it shows it doesn't open the lightbox. 我希望图像具有悬停效果,显示带有图标的叠加(比如缩放图标),但是当它显示时它不会打开灯箱。 Any help on what I'm doing wrong would be greatly appreciated. 对我所做错的任何帮助都将不胜感激。

Here's a section of the code I tried to use for the overlay: 这是我尝试用于叠加层的代码的一部分:

<div class="row">
  <div class="column">
    <img src="https://source.unsplash.com/user/mkmueller/likes/600x400" style="width:100%" onclick="openModal();currentSlide(1)" class="hover-shadow cursor">
    <div class="overlay">
    <div class="text">Hello World</div>
  </div>
  </div>
.column {
  float: left;
  width: 25%;
  position: relative;
}

.overlay {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  height: 100%;
  width: 100%;
  opacity: 0;
  transition: .5s ease;
  background-color: #008CBA;
}

.column:hover .overlay {
  opacity: 1;
}

.text {
  color: white;
  font-size: 20px;
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  text-align: center;
}

As you can see in this fiddle: https://jsfiddle.net/Niikp/bgrpketc/ I set the overlay with some text in the first pic, and as I stated previously it prevents the image to open the lightbox. 正如你在这个小提琴中看到的那样: https//jsfiddle.net/Niikp/bgrpketc/我在第一张照片中设置了一些带有文字的叠加层,正如我之前所说,它可以防止图像打开灯箱。

My goal is to achieve a result like this: http://bravo-bravissimo.com/bb19/prova-lightbox/ 我的目标是实现这样的结果: http//bravo-bravissimo.com/bb19/prova-lightbox/

Just add onclick attribute on overlay div 只需在overlay div上添加onclick属性即可

<div class="row">

Hello World 你好,世界

Instead of giving onclick="openModal();currentSlide(1)" function to img give to div column 而不是给onclick="openModal();currentSlide(1)"函数img给div

 function openModal() { document.getElementById("myModal").style.display = "block"; } function closeModal() { document.getElementById("myModal").style.display = "none"; } var slideIndex = 1; showSlides(slideIndex); function plusSlides(n) { showSlides(slideIndex += n); } function currentSlide(n) { showSlides(slideIndex = n); } function showSlides(n) { var i; var slides = document.getElementsByClassName("mySlides"); var dots = document.getElementsByClassName("demo"); var captionText = document.getElementById("caption"); if (n > slides.length) {slideIndex = 1} if (n < 1) {slideIndex = slides.length} for (i = 0; i < slides.length; i++) { slides[i].style.display = "none"; } for (i = 0; i < dots.length; i++) { dots[i].className = dots[i].className.replace(" active", ""); } slides[slideIndex-1].style.display = "block"; dots[slideIndex-1].className += " active"; captionText.innerHTML = dots[slideIndex-1].alt; } 
 body { font-family: Verdana, sans-serif; margin: 0; } * { box-sizing: border-box; } .row > .column { padding: 0 8px; } .row:after { content: ""; display: table; clear: both; } .column { float: left; width: 25%; position: relative; } /* The Modal (background) */ .modal { display: none; position: fixed; z-index: 1; padding-top: 100px; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: black; } /* Modal Content */ .modal-content { position: relative; background-color: #fefefe; margin: auto; padding: 0; width: 90%; max-width: 1200px; } /* The Close Button */ .close { color: white; position: absolute; top: 10px; right: 25px; font-size: 35px; font-weight: bold; } .close:hover, .close:focus { color: #999; text-decoration: none; cursor: pointer; } .mySlides { display: none; } .cursor { cursor: pointer; } /* Next & previous buttons */ .prev, .next { cursor: pointer; position: absolute; top: 50%; width: auto; padding: 16px; margin-top: -50px; color: white; font-weight: bold; font-size: 20px; transition: 0.6s ease; border-radius: 0 3px 3px 0; user-select: none; -webkit-user-select: none; } /* Position the "next button" to the right */ .next { right: 0; border-radius: 3px 0 0 3px; } /* On hover, add a black background color with a little bit see-through */ .prev:hover, .next:hover { background-color: rgba(0, 0, 0, 0.8); } /* Number text (1/3 etc) */ .numbertext { color: #f2f2f2; font-size: 12px; padding: 8px 12px; position: absolute; top: 0; } img { margin-bottom: -4px; } .caption-container { text-align: center; background-color: black; padding: 2px 16px; color: white; } .demo { opacity: 0.6; } .active, .demo:hover { opacity: 1; } img.hover-shadow { transition: 0.3s; } .hover-shadow:hover { box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } .overlay { position: absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; width: 100%; opacity: 0; transition: .5s ease; background-color: #008CBA; } .column:hover .overlay { opacity: 1; } .text { color: white; font-size: 20px; position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); text-align: center; } 
 <h2 style="text-align:center">Lightbox</h2> <div class="row"> <div class="column" onclick="openModal();currentSlide(1)"> <img src="https://source.unsplash.com/user/mkmueller/likes/600x400" style="width:100%" class="hover-shadow cursor"> <div class="overlay"> <div class="text">Hello World</div> </div> </div> <div class="column" onclick="openModal();currentSlide(2)"> <img src="https://source.unsplash.com/user/mkmueller/likes/603x402" style="width:100%" class="hover-shadow cursor"> </div> <div class="column"> <img src="https://source.unsplash.com/user/mkmueller/likes/606x404" style="width:100%" onclick="openModal();currentSlide(3)" class="hover-shadow cursor"> </div> <div class="column" onclick="openModal();currentSlide(4)"> <img src="https://source.unsplash.com/user/mkmueller/likes/609x406" style="width:100%" class="hover-shadow cursor"> </div> </div> <div id="myModal" class="modal"> <span class="close cursor" onclick="closeModal()">&times;</span> <div class="modal-content"> <div class="mySlides"> <div class="numbertext">1 / 4</div> <img src="https://source.unsplash.com/user/mkmueller/likes/600x400" style="width:100%"> </div> <div class="mySlides"> <div class="numbertext">2 / 4</div> <img src="https://source.unsplash.com/user/mkmueller/likes/603x402" style="width:100%"> </div> <div class="mySlides"> <div class="numbertext">3 / 4</div> <img src="https://source.unsplash.com/user/mkmueller/likes/606x404" style="width:100%"> </div> <div class="mySlides"> <div class="numbertext">4 / 4</div> <img src="https://source.unsplash.com/user/mkmueller/likes/609x406" style="width:100%"> </div> <a class="prev" onclick="plusSlides(-1)">&#10094;</a> <a class="next" onclick="plusSlides(1)">&#10095;</a> <div class="caption-container"> <p id="caption"></p> </div> <div class="column"> <img class="demo cursor" src="https://source.unsplash.com/user/mkmueller/likes/600x400" style="width:100%" onclick="currentSlide(1)" alt="Nature and sunrise"> </div> <div class="column"> <img class="demo cursor" src="https://source.unsplash.com/user/mkmueller/likes/603x402" style="width:100%" onclick="currentSlide(2)" alt="Snow"> </div> <div class="column"> <img class="demo cursor" src="https://source.unsplash.com/user/mkmueller/likes/606x404" style="width:100%" onclick="currentSlide(3)" alt="Mountains and fjords"> </div> <div class="column"> <img class="demo cursor" src="https://source.unsplash.com/user/mkmueller/likes/609x406" style="width:100%" onclick="currentSlide(4)" alt="Northern Lights"> </div> </div> </div> 

As you can see the overlay is hiding the img completely and hence blocking the events that can pass to them. 正如您所看到的, overlay完全隐藏了img ,从而阻止了可以传递给它们的事件。 If your intent is to just show the overlay but the overlay itself does not perform any actions, then set pointer-events: none to your overlay css and your click events would be passed down and the modal would be triggered open. 如果您的目的是仅显示叠加层但叠加层本身不执行任何操作,则将pointer-events: none为您的overlay css并且您的点击事件将被传递下来并且modal将被触发打开。

Modified fiddle here -> https://jsfiddle.net/marudhupandiyang/z1prvsne/3/ 修改小提琴 - > https://jsfiddle.net/marudhupandiyang/z1prvsne/3/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM