当前位置:首页 > 日记 > 正文

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

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

需要实现的效果图:

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

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

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

<div> <img class="dialog" src="xxx.webp"> <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>

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

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

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

HTML的样式部分:

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

重要的是第二行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 的说明)

 
// 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点击缩略图整屏居中放大图片效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

相关文章

怎么把新浪微博账号注销

怎么把新浪微博账号注销

账号,注销,新浪微博,电脑软件,就在最近,新浪微博悄悄的推出了注销账号的通道。但是注销账号通道很隐蔽,一些用户不清楚怎么操作,那么下面小编就为大家带来了微博账号的注销教程,希望对你有所帮助。微博app账号注销的方法:1、如果想要将自己的微…

性能优化之代码优化页面加载速度

性能优化之代码优化页面加载速度

页面加载,代码优化,性能优化,速度,电脑软件,页面代码的优化对于页面加载速度也有不小的影响,最广为人知的:HTML头部的JavaScript和写在HTML标签中的Style会阻塞页面的渲染,因此CSS放在页面头部并使用Link方式引入,JavaScript的引入放在页面尾。…

PHP实现链式操作的三种方法详解

PHP实现链式操作的三种方法详解

方法,操作,链式,三种,详解,本文实例讲述了PHP实现链式操作的三种方法。分享给大家供大家参考,具体如下:在php中有很多字符串函数,例如要先过滤字符串收尾的空格,再求出其长度,一般的写法是:strlen(trim($str))如果要实现类似js中的链式操作,比如像…

斜箭头符号图案大全

斜箭头符号图案大全

箭头,图案,符号,大全,电脑软件,斜箭头符号在很多地方都会被用到,比如图表中、游戏名字以及个性QQ资料,箭头符号一般作指方向目标之用。但是斜箭头怎么打呢?还是按照惯例先给大家列出斜箭头符号大全,方便不是经常使用或不需要了解教程的同学直接…

ps怎么设计动态波浪显示的文字动画

ps怎么设计动态波浪显示的文字动画

动态,波浪,文字,显示,动画,ps中想要设计一个不断扭曲晃动的文字,该怎么设计呢?下面我们就来看看详细的教程。软件名称:Adobe Photoshop CS5 V12.0 官方简体中文破解版软件大小:981.4MB更新时间:2014-04-281、首先启动Photoshop cs5,执行文件-打开…

js禁止Backspace键使浏览器后退的

js禁止Backspace键使浏览器后退的

方法,浏览器,电脑软件,js,Backspace,在项目中遇到按下Backspace键让浏览器后退的问题,上网搜了几种解决方案都不太理想。于是集众人之智,采众家之长,归纳如下:1、在公用js中定义阻止Backspace的方法function banBackSpace(e){ var ev = e || wi…

JavaScript 值类型和引用类型的初

JavaScript 值类型和引用类型的初

值类型,推荐,引用类型,电脑软件,JavaScript,值类型:也称为原始数据或原始值(primitive value)。这类值存储在栈(stack)中,栈是内存中一种特殊的数据结构,也称为线性表,栈按照后进先出的原则存储数据,先进入的数据被压入栈底,最后插入(push)的数据放在栈…

Laravel5.5新特性之友好报错以及展

Laravel5.5新特性之友好报错以及展

新特性,报错,详解,友好,电脑软件,前言期待已久的laravel5.5 很快将为大家呈现,本文将给大家详细介绍关于Laravel5.5新特性之友好报错及展示的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍:Laravel5.5 获取源代码如今Larave…

ES6正则表达式扩展笔记

ES6正则表达式扩展笔记

正则表达式,扩展,笔记,电脑软件, 前面的话  正则表达式是javascript操作字符串的一个重要组成部分,但在以往的版本中并未有太多改变。然而,在ES6中,随着字符串操作的变更, ES6也对正则表达式进行了一些更新。本文将详细介绍ES6正则表达式扩展…

正则表达式实现匹配连续数字的方法

正则表达式实现匹配连续数字的方法

数字,连续,正则表达式,方法,电脑软件,实现的要求如下:纯数字 5-7位之间 前三位相同 从第四位开始连续 如下面的例子:11123 #正确22234 #正确33345 #正确333456 #正确2223456 #正确0001234 #正确00012345 #错误:此行长度超…

在Excel表格中如何给数字添加单位

在Excel表格中如何给数字添加单位

单位,数字,表格,电脑软件,Excel,  在Excel表格中,我们一般只会输入数字,那么成绩分数单位该如何设置呢?以下是小编为您带来的关于在Excel表格中给数字添加单位,希望对您有所帮助。在Excel表格中给数字添加单位1、点击&ldquo;开始&rdquo;选项…

U盘装系统出现ntldr is missing

U盘装系统出现ntldr is missing

装系统,电脑软件,ntldr,missing,小编在使用U盘安装系统时,安装完系统后,重启电脑,系统却出现NTLDR is missing press any key to restart的错误提示,导致无法正常进入系统。这是怎么回事呢?今天小编就和大家说说解决U盘装系统出现ntldr is missi…