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 相关文章推荐
js获取图片长和宽度的代码
Nov 24 Javascript
js 数据类型转换总结笔记
Jan 17 Javascript
Jquery 动态循环输出表格具体方法
Nov 23 Javascript
JQuery中使用on方法绑定hover事件实例
Dec 09 Javascript
jQuery增加、删除及修改select option的方法
Aug 19 Javascript
javascript常用的设计模式
Feb 09 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
May 11 Javascript
javascript中函数的写法实例代码详解
Oct 28 Javascript
微信小程序 行的删除和增加操作实现详解
Sep 29 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
May 13 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
May 15 Javascript
小程序自定义轮播图圆点组件
Jun 25 Javascript
理解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
当海贼王变成JOJO风
2020/03/02 日漫
php获取指定范围内最接近数的方法
2015/06/02 PHP
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
python实现从ftp服务器下载文件
2020/03/03 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
日语专业个人的求职信
2013/12/03 职场文书
简历的自我评价范文
2014/02/04 职场文书
施工员岗位职责
2014/03/16 职场文书
初中家长寄语
2014/04/02 职场文书
工作失职检讨书
2015/01/26 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
小学生家长意见
2015/06/03 职场文书
你会写请假条吗?
2019/06/26 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
PyQt5实现多张图片显示并滚动
2021/06/11 Python
服务器间如何实现文件共享
2022/05/20 Servers