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使用JSONP实现跨域获取数据的三种方法详解
May 04 jQuery
jQuery开源组件BootstrapValidator使用详解
Jun 29 jQuery
jQuery初级教程之网站品牌列表效果
Aug 02 jQuery
jQuery中.attr()和.data()的区别分析
Sep 03 jQuery
使用JQuery实现图片轮播效果的实例(推荐)
Oct 24 jQuery
jQuery+CSS实现的table表格行列转置功能示例
Jan 08 jQuery
jQuery 防止相同的事件快速重复触发方法
Feb 08 jQuery
详解jquery和vue对比
Apr 16 jQuery
jquery实现动态改变css样式的方法分析
May 27 jQuery
jQuery操作cookie的示例代码
Jun 05 jQuery
html5以及jQuery实现本地图片上传前的预览代码实例讲解
Mar 01 jQuery
详解jQuery的核心函数和事件处理
Feb 18 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去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
php 文件上传实例代码
2012/04/19 PHP
PHP文章按日期(月日)SQL归档语句
2012/11/29 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
php 读取文件夹下所有图片、文件的实例
2018/10/17 PHP
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
JavaScript实现将UPC转换成ISBN的方法
2015/05/26 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
python的socket编程入门
2018/01/29 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
浅谈django 重载str 方法
2020/05/19 Python
浅谈Python3中print函数的换行
2020/08/05 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
2014升学宴答谢词
2014/01/26 职场文书
优秀经理获奖感言
2014/03/04 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
基层党员四风问题自我剖析材料
2014/09/29 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python