jquery单击文字或图片内容放大并居中显示


Posted in jQuery onJune 23, 2017

我们想要实现的效果是:

点击一张小图,会在页面的居中位置显示一张大图。

使用了animate动画函数,有从小图到大图,从小图位置到居中位置的轨迹。

支持IE7及以上浏览器,火狐、谷歌浏览器。

大图得居中位置,我主要使用了如下代码:

var width=$('.alert').find('img').width();//大图得宽高
var height=$('.alert').find('img').height();
var lwidth=$(window).width();//屏幕中页面可见区域的宽高
var lheight=$(window).height();
var x2=lwidth/2-width/2+$(window).scrollLeft();//在屏幕居中的坐标
var y2=lheight/2-height/2+$(window).scrollTop();

这里面加上了滚动条的宽度和高度,这样可以在有滚动条的情况下也是居中显示的。

主要的代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>单击文字或图片内容放大显示</title>
  <script src="../jquery-1.8.3.min.js"></script>
  <style>
    *{margin:0;padding:0;}
    ul{overflow:hidden;list-style:none;margin:1000px auto;}
    ul li{float:left;height:150px;width:130px;margin:0 10px;}
    .bigpic{position:absolute;display:none;}
    .alert{background:#fff;border:solid #ccc 1px;padding:10px;}
    .alert a.close{position:absolute;top:0;right:0;}
  </style>
</head>
<body>
  <ul>
    <li><img src="mm1.jpg"></li>
    <li><img src="mm2.jpg"></li>
    <li><img src="mm3.jpg"></li>
    <li><img src="mm4.jpg"></li>
  </ul>
  <div class="bigpic" style="display:none;">
    <div class="pic-one"><img src="m1.jpg"></div>
    <div class="pic-two"><img src="m2.jpg"></div>
    <div class="pic-three"><img src="m3.jpg"></div>
    <div class="pic-four"><img src="m4.jpg"></div>
  </div>
  <div class="alert" style="display:none;">
    <a class="close" href="javascript:;" rel="external nofollow" >关闭</a>
  </div>
  <script>
    var x=0;
    var y=0;
    $('ul li').click(function(e){
      var index=$(this).index();
      x= e.pageX|| e.clientX+$(window).scrollLeft();//鼠标点击的坐标
      y= e.pageY|| e.clientY+$(window).scrollTop();
      $('.alert').css({position:'absolute',top:y,left:x,width:'1px',height:'1px',overflow:'hidden'});
      var bigpic=$('.bigpic').find('div').eq(index).find('img').attr('src');//找到相对应的大图片
      $('.alert').find('img').remove();
      $('.alert').append("<img src="+bigpic+">");//添加大图
      $('.alert').show();
      var width=$('.alert').find('img').width();//大图得宽高
      var height=$('.alert').find('img').height();
      var lwidth=$(window).width();//屏幕页面可见区域的宽高
      var lheight=$(window).height();
      var x2=lwidth/2-width/2+$(window).scrollLeft();//在屏幕居中的坐标
      var y2=lheight/2-height/2+$(window).scrollTop();
      $('.alert img').css({width:'100%'});
      $('.alert').animate({left:x2,top:y2,width:width,height:height},300);
    })
    //这出现一个问题,当alert宽度和高度都为15px时或以下,如果不加padding,img是100%,就会造成图片不是从左上角开始的,上面就会有空白,这是因为父元素是块状元素,有自己的行间距,二他的子元素是行内元素,这样就会有空隙,此时解决方法有两个,
    // 给img加上display:block属性,形成块状元素;
    // 或者img还是内联元素,此时使用vertical-align:top可以向上对齐。
    //把父元素的间距设置为0,或者父元素的font-size设置为0yekeyi
    $('.alert a.close').click(function(){
      //console.log(x+'```'+y);
      $('.alert').animate({left:x,top:y,width:'1px',height:'1px'},300);  //全局变量
      $('.alert').fadeOut(100);
    })
  </script>
</body>
</html>

效果可复制代码,自行在页面中查看。

jquery单击文字或图片内容放大并居中显示

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
Jquery中attr与prop的区别详解
May 27 jQuery
jquery单击文字或图片内容放大并居中显示
Jun 23 jQuery
jQuery 实现左右两侧菜单添加、移除功能
Jan 02 jQuery
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
Apr 17 jQuery
jQuery创建及操作xml格式数据示例
May 26 jQuery
jQuery阻止事件冒泡实例分析
Jul 03 jQuery
jQuery实现的页面弹幕效果【测试可用】
Aug 17 jQuery
jQuery使用each遍历循环的方法
Sep 19 jQuery
jquery.param()实现数组或对象的序列化方法
Oct 08 jQuery
JQuery获取元素尺寸、位置及页面滚动事件应用示例
May 14 jQuery
jquery图片预览插件实现方法详解
Jul 18 jQuery
jquery将json转为数据字典的实例代码
Oct 11 jQuery
QRCode.js:基于JQuery的生成二维码JS库的使用
Jun 23 #jQuery
详谈表单格式化插件jquery.serializeJSON
Jun 23 #jQuery
简单谈谈require模块化jquery和angular的问题
Jun 23 #jQuery
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 #jQuery
jQuery实现可拖动进度条实例代码
Jun 21 #jQuery
基于jquery日历价格、库存等设置插件
Jul 05 #jQuery
jquery.validate表单验证插件使用详解
Jun 21 #jQuery
You might like
php常用文件操作函数汇总
2014/11/22 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
PHP最常用的正则表达式
2017/02/13 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
js综合应用实例简单的表格统计
2013/09/03 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
2013/10/18 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
2015/08/19 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
浅谈js原生拖放
2016/11/21 Javascript
详解angular应用容器化部署
2018/08/14 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
Vue.extend 登录注册模态框的实现
2020/12/29 Vue.js
python ip正则式
2009/05/07 Python
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
2017/11/02 Python
Python实现购物车功能的方法分析
2017/11/10 Python
浅谈python可视化包Bokeh
2018/02/07 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
雪山饭庄的创业计划书范文
2014/01/18 职场文书
户外用品商店创业计划书
2014/01/29 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
党员个人批评与自我批评
2014/10/14 职场文书
学习心理学心得体会
2016/01/22 职场文书
volatile保证可见性及重排序方法
2022/08/05 Java/Android