为了账号安全,请及时绑定邮箱和手机立即绑定

带有图像描述的模态图像

带有图像描述的模态图像

弑天下 2022-05-22 10:37:11
带有图像描述的模态图像我在这里找到了有关制作多个模态图像的代码。但是,当我打开模式时,我似乎找不到添加描述文本的最佳方法。我一直在关注这篇文章的第二个到最后一个答案的代码: 页面上的几个模态图像对 我有很大帮助,但我需要描述文本而不是标题文本。如果有人愿意帮助我解决这个问题,将不胜感激。先感谢您!<body>  <img class="myImg" src="http://onebigphoto.com/uploads/2012/10/midnight-sun-in-lofoten-norway.jpg" alt="Midnight sun in Lofoten, Norway" width="300" height="200">  <div class="text">The Beautiful mountain over the Norway River was a spectacular view to see..</div>  <img class="myImg" src="http://cdn-image.travelandleisure.com/sites/default/files/styles/1600x1000/public/1490029386/fisherman-cabin-hamnoy-lofoten-islands-norway-NORWAY0320.jpg?itok=cpPuUjh1" alt="Fishermen's cabins in Lofoten, Norway" width="300" height="200">  <div class="text">The lovely cabins here in Norway was an amazing stay with beautiful scenery...</div>  <img class="myImg" src="http://fjordtours.blob.core.windows.net/fjordtours-umbraco/1199/gerirangerfjord-per-ottar-walderhaug-fjordnorway.jpg" alt="Gerirangerfjord, Norway" width="300" height="200">  <div class="text">An afternoon on top of the Norway mountains you get an even more breath taking view..</div>  <div id="myModal" class="modal">    <span class="close">&times;</span>    <img class="modal-content" id="img01">    <div class="text"></div>  </div>< script >  var modal = document.getElementById('myModal');// to all images -- note I'm using a class!var images = document.getElementsByClassName('myImg');// the image in the modalvar modalImg = document.getElementById("img01");// and the caption in the modalvar captionText = document.getElementsByClassName("text");// Go through all of the images with our custom classfor (var i = 0; i < images.length; i++) {  var img = images[i];  // and attach our click listener for this image.  img.onclick = function(evt) {    modal.style.display = "block";    modalImg.src = this.src;    captionText.innerHTML = this.alt;  }}
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

您需要在单击后img + text用so 包装,然后按属性选择内部内容并更改 modal 。只需对您的modalImg.src = this.src进行 小修改即可modalImg.innerHTML = this.innerHTML; 类似于下面的代码片段。 我希望下面的代码片段对你有很大帮助。divwrapped div.innerHTMLimg to div

js code




var modal = document.getElementById('myModal');

// to all images -- note I'm using a class!

var images = document.getElementsByClassName('myImg');

// the image in the modal

var modalImg = document.getElementById("img01");

// and the caption in the modal

var captionText = document.getElementsByClassName("text");

// Go through all of the images with our custom class

for (var i = 0; i < images.length; i++) {

  var img = images[i];

  // and attach our click listener for this image.

  img.onclick = function(evt) {

    modal.style.display = "block";

    // modalImg.src = this.src;

    modalImg.innerHTML = this.innerHTML;

    captionText.innerHTML = this.alt;

  }

}

var span = document.getElementsByClassName("close")[0];

span.onclick = function() {

  modal.style.display = "none";

}

*,*:before, *:after{box-sizing: border-box;}

body{

  margin: 0;

  padding: 0;

  font-family: Arial;

}

.myImg{

  border-radius: 5px;

  cursor: pointer;

  transition: 0.3s;

  display: inline-block;

  vertical-align: top;

  width: 300px;

  min-height: 200px;

}

.myImg:hover {

  opacity: 0.7;

}

.myImg img{

  max-width: 100%;

}

.modal {

  display: none;

  /* Hidden by default */

  position: fixed;

  /* Stay in place */

  z-index: 1;

  /* Sit on top */

  padding-top: 50px;

  /* Location of the box */

  left: 0;

  top: 0;

  width: 100%;

  /* Full width */

  height: 100%;

  /* Full height */

  overflow: hidden;

  overflow-y: auto;

  /* Enable scroll if needed */

  background-color: rgb(0, 0, 0);

  /* Fallback color */

  background-color: rgba(0, 0, 0, 0.9);

  /* Black w/ opacity */

}


.modal-content {

  margin: 0 auto 20px auto;

  display: block;

  width: 80%;

  max-width: 700px;

}

.modal-content img{

  width: 100%;

  display: block;

}

.modal-content .text{

  font-size: 16px;

  color: #f1f1f1;

  padding: 10px;

}

.modal-content{

  animation-name: zoom;

  animation-duration: 0.6s;

}


@keyframes zoom {

  from {

    transform: scale(0)

  }

  to {

    transform: scale(1)

  }

}

.close {

  position: absolute;

  top: 15px;

  right: 35px;

  color: #f1f1f1;

  font-size: 40px;

  font-weight: bold;

  transition: 0.3s;

}

.close:hover,

.close:focus {

  color: #bbb;

  text-decoration: none;

  cursor: pointer;

}

@media only screen and (max-width: 700px) {

  .modal-content {

    width: 100%;

  }

}

<div class="myImg">

  <img src="http://onebigphoto.com/uploads/2012/10/midnight-sun-in-lofoten-norway.jpg" alt="Midnight sun in Lofoten, Norway">

  <div class="text">The Beautiful mountain over the Norway River was a spectacular view to see..</div>

</div>

<div class="myImg">

  <img src="http://cdn-image.travelandleisure.com/sites/default/files/styles/1600x1000/public/1490029386/fisherman-cabin-hamnoy-lofoten-islands-norway-NORWAY0320.jpg?itok=cpPuUjh1" alt="Fishermen's cabins in Lofoten, Norway">

  <div class="text">The lovely cabins here in Norway was an amazing stay with beautiful scenery...</div>

</div>

<div class="myImg">

  <img src="http://fjordtours.blob.core.windows.net/fjordtours-umbraco/1199/gerirangerfjord-per-ottar-walderhaug-fjordnorway.jpg" alt="Gerirangerfjord, Norway">

  <div class="text">An afternoon on top of the Norway mountains you get an even more breath taking view..</div>

</div>


<!-- Modal Elements -->

<div id="myModal" class="modal">

  <span class="close">&times;</span>

  <div class="modal-content" id="img01"></div>

</div>


查看完整回答
反对 回复 2022-05-22
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

将图像和文本放在同一个容器中会简单得多。


<div class="image-container">

<img class="myImg" src="http://onebigphoto.com/uploads/2012/10/midnight-sun-in-lofoten-norway.jpg" alt="Midnight sun in Lofoten, Norway" width="300" height="200">

  <div class="text">The Beautiful mountain over the Norway River was a spectacular view to see..</div>

</div>

然后使用 JavaScript 声明一个名为 modalContent 的变量并选择您的容器。


var modalContent = getElementById('image-container');

它只是简化了一切并减少了所需的选择器数量。查看您的代码,我很难理解每个图像是单独显示还是全部显示在模态窗口中。我希望这有帮助。


查看完整回答
反对 回复 2022-05-22
  • 2 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信