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 相关文章推荐
使用jQuery模板来展现json数据的代码
Oct 22 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
Oct 26 Javascript
JS上传前预览图片实例
Mar 25 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
Jun 16 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
Nov 18 Javascript
利用bootstrapValidator验证UEditor
Sep 14 Javascript
利用jquery实现瀑布流3种案例
Sep 18 Javascript
深入理解bootstrap框架之第二章整体架构
Oct 09 Javascript
解决微信二次分享不显示摘要和图片的问题
Aug 18 Javascript
vue使用Proxy实现双向绑定的方法示例
Mar 20 Javascript
用VsCode编辑TypeScript的实现方法
May 07 Javascript
element跨分页操作选择详解
Jun 29 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
PL-880隐藏功能
2021/03/01 无线电
PHP获取表单textarea数据中的换行问题
2010/09/10 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
js中函数声明与函数表达式
2015/06/03 Javascript
AngularJS入门教程之路由机制ngRoute实例分析
2016/12/13 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
js中url对象化管理分析
2017/12/29 Javascript
浅谈vue 单文件探索
2018/09/05 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
python win32 简单操作方法
2017/05/25 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
基于python实现对文件进行切分行
2020/04/26 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
python实现计算器简易版
2020/12/17 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
C语言编程练习
2012/04/02 面试题
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书
导游词之神仙居景区
2019/11/15 职场文书
python实现进度条的多种实现
2021/04/29 Python
python非标准时间的转换
2021/07/25 Python
spring cloud eureka 服务启动失败的原因分析及解决方法
2022/03/17 Java/Android