HTML代码如下:

<div class="box"><div class="pic1">                   <!-- 小图盒子 --><img src="./img/456.jpg" alt=""><div class="info hide"></div>           <!-- 透明滑块 --></div><div id="pic2" class="hide">                <!-- 大图盒子 --><img src="./img/456.jpg" alt=""></div></div>

CSS代码如下:

.box{width: 400px ;height: 400px;position: relative;
}
.pic1 img{width: 100%;position: absolute;                 /* 相对于父级绝对定位 */
}
.info{width: 50%;height: 50%;position: absolute;                    /* 相对于父级绝对定位 */opacity: .2;                           /* 滑块透明度 */background-color: #9ACD32;}#pic2{width: 500px;height: 500px;left: 100%;                           /* 让出小盒子的宽度 */position: absolute;overflow: hidden;
}
.hide{visibility: hidden;        /* 隐藏滑块和大盒子 */
}
#pic2 img{width: 800px;position: absolute;                        /* 相对于父级绝对定位 */}

JS代码如下:

/* 获取各div的值 */
var pic1 = document.querySelector('.pic1');
var info = document.querySelector('.info');
var pic2 = document.getElementById('pic2');/* 设置点击事件 */
function toggleClass(){info.classList.toggle('hide');      pic2.classList.toggle('hide');
}
pic1.onmouseenter = toggleClass;
pic1.onmouseleave = toggleClass;
/* 设置鼠标移入移出时滑块和大图盒子的出现和隐藏 */pic1.onmousemove = function(e){/* 计算滑块的位置 *//* clientX指鼠标的位置,offsetLeft指box与屏幕边框的距离,offsetWidth指滑块的宽度 */var x = e.clientX - pic1.offsetLeft - info.offsetWidth/2;var y = e.clientY - pic1.offsetTop - info.offsetHeight/2;/* 控制滑块的移动位置 */if(x<=0){x = 0;}else if(x > info.offsetWidth){x = info.offsetWidth;}if(y<=0){y = 0;}else if(y > info.offsetHeight){y = info.offsetHeight;}info.style.left = x + "px";info.style.top = y + "px";/* 设置大图片与小图片的比例 *//* 滑块的偏移量 */var infomove = info.offsetWidth;    /* 因为前面设置滑块宽度为小图盒子的一半 *//* 大图的偏移量 */var pic2move = pic2.children[0].offsetWidth - pic2.offsetWidth;  /* 大图宽度-大图片盒子宽度 */var bili = pic2move/infomove;            /* 大图与滑块移动方向相反,所以要加负号 */var imgX = -x * bili; var imgY = -y * bili;pic2.children[0].style.left = imgX + 'px'; /* pic2中第一个孩子元素即指img */pic2.children[0].style.top = imgY + 'px';}

如有问题欢迎讨论,请私信谢谢。

js实现图片放大特效相关推荐

  1. 用JS写出JS事件中京东图片放大特效

    图片放大特效 准备两张相同的图片,小图和大图. 小图显示在商品的展示区域. 大图用于鼠标在小图上移动时,按比例的显示大图中的对应区域. 编写HTML页面,展示小图.隐藏鼠标的遮罩及大图. 当鼠标在小图 ...

  2. js第8章事件案例:获取触发事件的元素,阻止事件冒泡和默认行为的实现、缓动的小球、图片放大特效、按Enter键切换

    目录 1.获取触发事件的元素,阻止事件冒泡和默认行为的实现. (1)获取触发事件的元素 (2)阻止事件冒泡 (3)阻止事件默认行为 2.缓动的小球,实现的原理是通过定时器连续地修改当前DOM元素的某个 ...

  3. 鼠标悬浮图片放大特效

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  4. VUE 图片放大特效

    源码: <!DOCTYPE html> <html><head><meta charset="utf-8" /><title& ...

  5. html如何控制图片自动放缩,如何用js控制图片放大缩小

    js控制图片放大缩小的效果,可以通过JavaScript的width和height属性来实现.其属性可以实现按比例放大和缩小图像尺寸的功能. 在前面的文章中,也为大家介绍了JS获取图片当前宽高和JS获 ...

  6. 91 案例——图片放大特效

    文章目录 1.HTML页面 2.显示与隐藏"遮罩"和"局部放大图" 3.遮罩的移动 4.限定遮罩的移动范围 5.按照比例移动大图 在网站中,经常可以看到商品详情 ...

  7. 仿苹果菜单的图片放大特效实现

    我想用过mac的人都应该见过它的菜单特效,就是鼠标移到适当的位置的时候,菜单图片会有一个放大的效果,今天我就模仿这个效果来做一个有关图片的特效,最终的实现效果如下: 它的HTML结构如下: <d ...

  8. 手机端点击图片放大特效-PhotoSwipe插件

    PhotoSwipe插件官方网站 http://www.photoswipe.com/ PhotoSwipe插件能实现手机端点击图片全屏放大 再双击图片放大等功能 但有一点不太好的是图片放大后再单击不 ...

  9. js hover图片放大不遮挡_CSS3+JS 实现放大镜

    注意: 看懂本文需要: 懂中文 :) 学习过 JavaScript 和 css 代码较长,框框可左右滑动哦 您的观看和点赞是对本公众号最大力的支持 ~~ 原文链接: https://blog.csdn ...

最新文章

  1. 3310复刻版 java_终于等到你:诺基亚3310复刻版开箱简评
  2. python起步输入-Python 起飞系列————起步(一)
  3. 返回对象2(调用了拷贝构造函数)
  4. java 复制剪贴板_java_swing复制粘贴、剪贴板
  5. Dubbo的发展历史
  6. mpvue微信小程序http请求-fly.js
  7. dnf用虚拟机会被制裁吗_DNF: 神豪奶妈扬言, 战斗力没有超过他的, 都不配被加buff!...
  8. signals系列之一——基本用法
  9. extundelete应用实战
  10. vue开发一个实用美观的轮播图组件
  11. 05、应用程序数据操作(下)
  12. 图像处理之opencv---mat、cvmat、IplImage之间的转换
  13. vb6源码 ymodem_VB爱好者乐园(VBGood)
  14. php自定义表单程序,自定义流程gooflow2.0+自定义表单
  15. 多层json字符串转map_java json字符串转map集合递归嵌套
  16. 计算机制造与设计,比钻石还要硬,科学家利用计算机:设计制造出“五角”超硬钻石...
  17. 计算机无法安装VC2015,VC++2015安装失败怎么办 VS2015安装失败解决方法
  18. 单位换算:存储容量单位bit(比特)、Byte(字节)、KB、GB、TB;速率单位b/s,Kb/s,Mb/s,Gb/s,Tb/s
  19. 重磅资源!PyTorch的福音,用PyTorch 1.0进行教学的免费深度学习课程,来自idiap和瑞士洛桑联邦理工学院...
  20. 【排序算法】冒泡排序|选择排序|插入排序|希尔排序

热门文章

  1. Explaindio Video Creator Platinum(简称EVC) 3.042 Windows中文白金版MG动画2D和3D动画解说动画手绘白板动画视频制作软件
  2. 解析大数据基准测试——TPC-H or TPC-DS
  3. jquery中使用moment.js格式化时间
  4. HAPPY 1024 DAY
  5. 硬件系列(四)-------------Android标签打印机连接与打印位置调动方法总结
  6. 微软文字转语音,就用这三个免费的方法~
  7. php SHA1withRSA算法签名
  8. 【Unity】物理碰撞实验
  9. certutil程序生成MD5
  10. 白云学院计算机专业好不好,2021年广东白云学院专业排行榜,哪个专业就业比较好...