JS点击缩略图整屏居中放大图片效果


Posted in Javascript onJuly 04, 2017

需要实现的效果图:

JS点击缩略图整屏居中放大图片效果

今天开发的时候,遇到要点击缩略图之后居中显示图片的大图查看(大致效果如上图所示)~想了好几种实现方式,最开始的时候,是想通过animate来点击图片进行显示,可是后来当我想要让放大的图片进行居中显示和点击别的地方隐藏已显示的大图的时候,才发现实现起来有难度。

1 第一张点击图片将图片放大

下面将这种方式也贴出来,供自己参考(万一有需要的小伙伴正好需要这样的功能呢):

<div>
 <img class="dialog" src="xxx.jpg">
 <div id="dialog_large_image"></div>
</div>
<script type="text/javascript">
 $(function () {
  $("img.dialog").click(function() {
   var large_image = '<img src= ' + $(this).attr("src") + '></img>';
   $('#dialog_large_image').html($(large_image).animate({ height: '50%', width: '50%' }, 500));
  });
 });
</script>

上述代码实现的效果如下图所示:

JS点击缩略图整屏居中放大图片效果

这个是最基本的渐变的效果实现。

- 2 第二种点击图片全屏居中显示(推荐这种实现方式)

HTML的样式部分:

JS点击缩略图整屏居中放大图片效果

代码部分用到了字符串的拼接(可以以后做参考用):

重要的是第二行var html = ...

for (var i in result_array) {
  var html = '';
  var html = '<div id="dialog_pic"><div class="dialog-body"><img src="' + result_array[i]['photo_url'] + '?imageView2/1/w/128/h/128"></div></div> <div class="waterfall_stream_pic"><div class="item">';
  if (result_array[i]['photo_url']) {
  html += '<img class="zoom" src="' + result_array[i]['photo_url'] + '?imageView2/1/w/128/h/128">';
  }
  html += '<div><span>' + result_array[i]['final_score'] + '</span><span>(' + result_array[i]['baby_gender'] + '宝' + ')</span><p>' + parseInt(result_array[i]['age_in_month']/12) + '周岁'+ result_array[i]['age_in_month']%12 + '个月</p>';
  html += '</div></div></div>';
  $container_pics.append(html);
 }
 }

CSS 样式部分(点击缩略图显示的一些代码,很重要~注意z-index: 100;这个属性值的作用)

#dialog_pic {
 position: fixed;
 top: 0;
 bottom: 0;
 left: 0;
 right: 0;
 background: rgba(0,0,0,0.65);
 z-index: 100;
 display: none;
 .dialog-body {
 width: 100%;
 max-width: 250px;
 max-height: 300px;
 margin: 0 auto;
 padding: 10px;
 border-radius: 5px;
 background: white;
 overflow: auto;
 margin-top: 283px;
 img {
  width: 100%;
 }
 }
}

这里必须使用on事件来获取元素的点击事件,onclick不产生作用(为什么不产生作用,请看上一篇文章的关于on 和onclick 的说明)

JS点击缩略图整屏居中放大图片效果 
JS点击缩略图整屏居中放大图片效果

JS点击缩略图整屏居中放大图片效果

// pic zoom
 $(function() {
 //获取缩略图的点击事件,然后将大图片展示出来(样式里默认显示为```none```)
 $('.result_pics').on('click', 'img.zoom', function() { 
  var $dialog = $('#dialog_pic'); //这里的dialog_pic是整个大图的显示区域(请注意,这里之只有采用变量赋值的方式是为了

下面的代码看起来很简洁,方便自己,方便他人)

$dialog.show();
  // outerHeight声明了整个窗口的高度
  // 此处的代码通过上面的图片,我已经标注出来了相应的区域部分。整个页面减去大图片显示区域从上到图片的最底边所产生的距离,然后除2就可以实现图片的放大居中了。
  var marginTop = ($dialog.outerHeight() - $('.dialog-body', $dialog).outerHeight()) / 2;
  $('.dialog-body', $dialog).css({
  marginTop: marginTop
  });
 });
 // 点击显示的大图,触发事件,当触发当前页面内里任何处位置,就会隐藏显示的大图
 $('.result_pics').on('click', '#dialog_pic', function() {  
  $(this).hide();
 });
 });

至此,点击缩略图显示大图的功能到这里基本实现。但是这里有一个bug就是放大的图片有失真,不清晰(注:明天排查下是什么原因导致的~)

解决上面存留的bug:(bug出现了2个,一个是点击放大的图片失真,另一个是原图放大之后图片会旋转)

1.点击放大的图片失真(这个是我一开始没放原图<img src="' + result_array[i]['photo_url'] ">即后面不带参数)

var html = '<div id="dialog_pic"><div class="dialog-body"><img src="' + result_array[i]['photo_url'] + '?imageMogr/auto-orient"></div></div> <div class="waterfall_stream_pic"><div class="item">';

2.解决旋转的方案(这个参数一般就是为了解决客户端IOS/Android图片横竖屏的问题,当然放在网页端应用也是OK的):

imageMogr/auto-orient

至此,点击缩略图显示大图的功能实现,已全部OK ~

JS点击缩略图整屏居中放大图片效果

以上所述是小编给大家介绍的JS点击缩略图整屏居中放大图片效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript实现防止网页被嵌入Frame框架的代码分享
Dec 29 Javascript
jQuery制作简洁的图片轮播效果
Apr 03 Javascript
jquery判断当前浏览器的实现代码
Nov 07 Javascript
实例解析jQuery中proxy()函数的用法
May 24 Javascript
怎样判断jQuery当前元素是隐藏还是显示
Nov 23 Javascript
Vue.js简易安装和快速入门(第二课)
Oct 17 Javascript
10个在JavaScript开发中常遇到的BUG
Dec 18 Javascript
Vue.js实现可配置的登录表单代码详解
Mar 29 Javascript
vue中组件的过渡动画及实现代码
Nov 21 Javascript
JavaScript变速动画函数封装添加任意多个属性
Apr 03 Javascript
Vue 禁用浏览器的前进后退操作
Sep 04 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 Vue.js
理解Angular的providers给Http添加默认headers
Jul 04 #Javascript
详解在Angular项目中添加插件ng-bootstrap
Jul 04 #Javascript
详解在 Angular 项目中添加 clean-blog 模板
Jul 04 #Javascript
Node.js使用gm拼装sprite图片
Jul 04 #Javascript
JavaScript中document.referrer的用法详解
Jul 04 #Javascript
基于hover的用法实例(推荐)
Jul 04 #Javascript
js学习总结_基于数据类型检测的四种方式(必看)
Jul 04 #Javascript
You might like
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
2019/10/12 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
JQuery1.6 使用方法三
2011/11/23 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
Web打印解决方案之证件套打的实现思路
2016/08/29 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
Vue 重置组件到初始状态的方法示例
2018/10/10 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
初步解析Python中的yield函数的用法
2015/04/03 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
个人简历自我评价
2014/02/02 职场文书
成品仓管员岗位职责
2015/04/01 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
Golang 空map和未初始化map的注意事项说明
2021/04/29 Golang
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python