这今天我们学习鼠标的各种事件,我给大家分享一下鼠标放大镜的效果。

希望有兴趣的朋友可以一块交流。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>放大镜效果</title>
<style media="screen">
*{
margin: 0;
padding: 0;
}
#wrap {
width: 400px;
height: 400px;
border: 1px solid black ;
position: absolute;
}
#image {
width: 100%;
height: 100%;
position: absolute;

}
#slider {
width: 150px;
height: 150px;
border: 1px solid gray ;
position: absolute;
/*top: 0;*/
background: rgba(255, 235, 0, 0.3);
display: none;
}
#wrap_max {
width: 700px;
height: 700px;
border: 1px solid gray ;
position: absolute;
left: 400px;
display: none;
overflow: hidden;

}
#image_max {
width: 1000px;
height: 1000px;
/*display: block;*/
}
</style>
</head>
<body>
<div id="wrap">
<img id="image"src="01.jpg" alt="" />  // 放置图片 
<div id="slider">

</div>
</div>
<div id="wrap_max">
<img id="image_max" src="01.jpg" alt="" />  //放置和上面一样的图片
</div>
</body>
<script type="text/javascript">
var wrap = document.getElementById('wrap');
var image = document.getElementById('image');
var slider = document.getElementById('slider');
var wrapMax = document.getElementById('wrap_max');
var imageMax = document.getElementById('image_max');

wrap.onmousemove = function(event){
event = event || window.event;
slider.style.display = 'block'; //当鼠标移入wrap时,slider显示。
wrapMax.style.display = 'inline-block';
var disX = event.clientX - slider.offsetWidth / 2 ; // slider .offsetWidth/ 2 是让鼠标在slider的底部在中间显示
var disY = event.clientY - slider.offsetHeight / 2; // slider .offsetHeight/2 是让鼠标在slider的高在中间显示
var disMaxX = wrap.offsetWidth - slider.offsetWidth ; // slider在wrap移动的最大横向距离
var disMaxY = wrap.offsetHeight - slider.offsetHeight ; // slider 在wrap中移动的最大纵向距离
if (disX < 0) {
disX = 0
}else if (disX > disMaxX) {
disX = disMaxX ;
}
if (disY < 0) {
disY = 0
}else if (disY > disMaxY) {
disY = disMaxY ;
}
slider.style.left = disX +'px';
slider.style.top = disY + 'px';
var sealeX = disX / disMaxX ; // slider在wrap x轴 的移动 比例
var sealeY = disY / disMaxY ; // slider 在 wrap y轴的移动 比例
wrapMax.scrollLeft = (imageMax.offsetWidth - wrapMax.offsetWidth) * sealeX ; //wrapMax 在imageMax x 轴中的移动值
wrapMax.scrollTop = (imageMax.offsetHeight - wrapMax.offsetHeight) *sealeY ;

wrap.onmouseleave = function(){
slider.style.display = 'none';
wrapMax.style.display = 'none';
}
}

</script>
</html>

转载于:https://www.cnblogs.com/Sabo-dudu/p/5765962.html

JS 做的鼠标放大镜(初级)相关推荐

  1. 用js做一个鼠标惯性动画

    用js做一个简单的鼠标惯性动画 <style type="text/css">#div1{width: 50px;height: 50px;background: re ...

  2. 如何用原生jS做购物车

    如何用原生jS做购物车 今天给大家分享如何用原生js做购物车,我们都逛过淘宝.京东这样购物网站,像这种购物网站,购物车是肯定少不了的 ,我们在天猫上购物,一开始一个页面有很多种商品,然后你在这里面看中 ...

  3. js+css+html实现放大镜效果

    js+css+html实现放大镜效果 1 案例描述 2 编写HTML代码 3 编写CSS代码 4 编写JavaScript代码 5 总代码 1 案例描述 在很多网页中,我们都能看到一个类似于放大镜的效 ...

  4. 详情页html特效,js实现详情页放大镜效果

    本文实例为大家分享了js实现详情页放大镜的具体代码,供大家参考,具体内容如下 1.html 2.css *{ margin:0;padding:0; } #small{ width:400px; he ...

  5. 用Three.js做一个简单的3D场景

    Three.js是什么 Three.js 是一款运行在浏览器中的 3D 引擎,我们可以用它来创造我们所需要的一系列3D动画场景,简而言之就是建在网页上的3D模型.利用Three.js可以制作出很多酷炫 ...

  6. 使用js做简易轮播图,可自动

    [作者注]:第一次使用js做简易轮播图 首先在body里div个容器 div class="box"> <p id="p" ></p&g ...

  7. JS制作跟随鼠标移动的图片

    JS制作跟随鼠标移动的图片 有趣的小案例池子: JS实现定时器 JS实现关闭图片窗口 JS实现输入检验 获取焦点后隐藏提示内容的输入框 JS实现获取鼠标在画布中的位置 聊天信息框显示消息 JS点击切换 ...

  8. react.js做小程序_如何使用React.js构建现代的聊天应用程序

    react.js做小程序 In this tutorial, I will guide you to build your own group chat application using React ...

  9. 用 JS 做一个数独游戏(二)

    用 JS 做一个数独游戏(二) 在 上一篇博客 中,我们通过 Node 运行了我们的 JavaScript 代码,在控制台中打印出来生成好的数独终盘.为了让我们的数独游戏能有良好的体验,这篇博客将会为 ...

最新文章

  1. log4j linux如果日志目录不存在,Java日志库学习笔记
  2. 2020,你还相信微服务?
  3. python self的含义
  4. nRF5_SDK_12.3.0 编译micro-ecc摘要
  5. 可持久化3--可持久化01Trie
  6. linux内核 lts长期演进,Linux Kernel 4.19 和 5.4 生命周期延长至 6 年
  7. 数值分析-泰勒公式及泰勒级数
  8. Android代码里面设置字体颜色的三种方法
  9. 论文实录 | 毕业设计如何做需求分析?
  10. python写几个好玩的程序_Python写的Msn机器人,几好玩的
  11. 微信小程序 实现提示弹窗
  12. k8s部署nacos2.0.3出现tried: server is DOWNnow, detailed error message: Optional[Distro protocol XXXX
  13. 解决Sublime Text菜单栏和标签栏不见问题
  14. 美光证实:DDR5 内存供应不足与 PMIC 和 VRM 短缺有关,2022 年改善的可能性很小
  15. 《算法设计与分析》第十三周作业
  16. 固定资产拆分比例怎么计算_固定资产折旧的计算方法
  17. 神通数据库安装及使用手册
  18. 【SQL】获取第二高薪水
  19. 博客奖品之 2012龙年薪途活动
  20. WTD实验(lv9-day15)

热门文章

  1. 通用数据级别权限的框架设计与实现(3)-数据列表的权限过滤
  2. branch prediction
  3. PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
  4. Windows系统中文件解说
  5. Linux 的 60s USE 性能诊断方法论
  6. 计算体系结构的演进规律
  7. DPDK — 架构解析
  8. 模组使用之天线阻抗匹配、匹配过程、天线选型注意、RF走线Layout建议
  9. Keil中找不到芯片,往Keil中添加不存在的芯片,Keil安装pack文件
  10. Altium Designer关闭板观察器,放大镜