点击图片出现轮播弹窗

社会主义新天地 提交于 2020-01-17 04:33:10

功能:从后台给的接口中,拿到图片并渲染到页面中,点击页面图片列表中的某张图片后,出现弹窗,图片放大,并可以轮播

实现方式:

第一步:在页面引入Swiper和JQuery插件

第二步:将图片渲染到页面中

  1. 首先,在body中写一个div标签 , 用来放图片
    <div class="img-all" ></div>

  2. <script> 调用后台接口,拿到图片字符串, 并将图片渲染到页面中,代码如下:

 var imageStr='后台数据,含有多张图片链接的字符串,调取方法这里不详细介绍';
 var imglist = imageStr.split(',');//后台给的图片字符串,一般是用','分割的,需要将字符串转换为数组
 var str='';
  for (var i = 0; i < imglist.length; i++) {
       str += `<img class="img-item"  src="${imglist[i]}"/>` //这里使用了es6拼接字符串的方法 ``

     }
     //将图片标签列表添加到第一步写的div标签中,这里使用了jquery方法
 $('.img-all').html(str)

第三步:向弹窗标签中添加轮播内容

  1. 在body中写一个div标签 , 作为弹窗
    <div class="tan" style="display: none;"></div>

  2. <script>中,向弹窗标签动态添加轮播内容,代码如下:

	//封装成一个方法,每次点击图片后,都需要调用这个方法
   function  tanAdd() {
             var tanStr = '';
             //这里使用的是swiper插件
             tanStr += `<div class="swiper-container">
             	  <div class="swiper-wrapper">`;
             	  
               //将所有图片添加到轮播图中,imglist是包含所有图片的数组
                  for (var i = 0; i< imglist.length; i++) {
            tanStr += `<div class="swiper-slide"><img src="${imglist[i]}" alt=""></div>`
                          }
                          
             tanStr += `</div>
                 //如果需要分页器
                <div class="swiper-pagination"></div>
                  //如果需要左右切换按钮
                   <div class="swiper-button-prev"></div>
                 <div class="swiper-button-next"></div>
          		</div>`;
  						
  	//将拼接好的字符串,添加到弹窗标签中
        $('.tan').html(tanStr);       

第四步:点击图片出现弹窗,图片放大,并可以轮播

  1. 给每张图片绑定点击事件,需要拿到所有的图片标签,并将它们添加到 imgClick数组中
var imgClick=$('.img-all').children(); //获取所有的图片标签,并赋值给imgClick数组
for (var i = 0; i < imgClick.length; i++) {
       let num = i; //被点击图片的下标
        arrImg[i].onclick = function () {
        			//调用在第三步中封装好的方法
                tanAdd(); //每次点击图片都会重新加载弹窗中内容
                       $(".tan").css("display", "block");//打开弹窗
                           document.documentElement.style.overflow = 'hidden';//打开弹窗后,禁止页面滚动
                       document.body.style.overflow = 'hidden'//打开弹窗后,禁止页面滚动
                       //轮播
                        var mySwiper = new Swiper('.swiper-container', {
                        loop: true, // 循环模式选项
                           centeredSlides: true,//居中
                           initialSlide: num, //指定开始页面的下标,点击图片后,显示的第一张图片是被点击的图片
                            // 如果需要分页器
                           pagination: {
                                el: '.swiper-pagination',
                             },
                                  // 如果需要左右切换按钮
                      navigation: {
                            nextEl: '.swiper-button-next',
                           prevEl: '.swiper-button-prev',
                                   },
                                 });

                              }
                          }
  • 注意:css样式省略了,自行补充
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!