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日程管理控件glDatePicker用法详解
Mar 29 jQuery
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
Aug 17 jQuery
简单实现jQuery轮播效果
Aug 18 jQuery
jQuery中ajax获取数据赋值给页面的实例
Dec 31 jQuery
jQuery实现新闻播报滚动及淡入淡出效果示例
Mar 23 jQuery
jQuery阻止事件冒泡实例分析
Jul 03 jQuery
JS拖动选择table里的单元格完整实例【基于jQuery】
May 28 jQuery
jQuery实现input[type=file]多图预览上传删除等功能
Aug 02 jQuery
jQuery表单选择器用法详解
Aug 22 jQuery
jQuery实现图片切换效果
Oct 19 jQuery
JQuery绑定事件四种实现方法解析
Dec 02 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
第八节 访问方式 [8]
2006/10/09 PHP
php 中英文语言转换类
2011/09/07 PHP
PHP number_format() 函数定义和用法
2012/06/01 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
做网页的一些技巧
2007/02/01 Javascript
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
javascript实现可改变滚动方向的无缝滚动实例
2013/06/17 Javascript
jQuery创建DOM元素实例解析
2015/01/19 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
2017/02/10 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
Python实现识别手写数字 简易图片存储管理系统
2018/01/29 Python
Python Logging 日志记录入门学习
2018/06/02 Python
Python3.6简单的操作Mysql数据库的三个实例
2018/10/17 Python
Django框架模板注入操作示例【变量传递到模板】
2018/12/19 Python
python多线程扫描端口(线程池)
2019/09/04 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
大堂副理的岗位职责范文
2014/02/17 职场文书
优秀党员获奖感言
2014/02/18 职场文书
工作年限证明模板
2014/11/01 职场文书
2014年政教处工作总结
2014/12/20 职场文书
罚站检讨书
2015/01/29 职场文书
实习护士自荐信
2015/03/25 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL