JavaScript鼠标经过图片的放大镜效果

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图片缩放</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
#minBox{
border:1px solid #ccc;
width: 350px;
height: 350px;
position: relative;
top: 50px;
left: 50px;
}
#minBox img{
position: absolute;
}
#smBox{
display: none;
position: absolute;
width:150px;
height: 150px;
background-color: yellow;
opacity: 0.3;
}
#maxBox {
display: none;
position: absolute;
overflow: hidden;
left:500px;
top:50px;
width:500px;
height: 500px;
border:1px solid #d9d9d9;
}
#maxBox img {
position: absolute;
}
</style>
</head>
<body>
<div id="minBox">
<img src="img/min.jpg">
<div id="smBox"></div>
</div>
<div id="maxBox">
<img src="img/max.jpg">
</div> <script type="text/javascript">
//获取节点 var minBox =document.getElementById("minBox");
var smBox = document.getElementById("smBox");
var maxBox = document.getElementById("maxBox");
var maxImg = maxBox.children[0]; //小块鼠标移动事件事件
minBox.onmousemove = function(){
var e = e || window.event;
smBox.style.display = "block";
maxBox.style.display = "block";
//计算小块的位置
//定义
var sLeft = e.clientX - smBox.offsetWidth/2 -minBox.getBoundingClientRect().left;
var sTop = e.clientY - smBox.offsetWidth/2 - minBox.getBoundingClientRect().top;
//判断左右边界,小块距离左边的距离小于0,则意味超界,设置它的left为0;
//右边边界判断,小块的最大宽度不能>(minBox的视口宽度- 小块本身宽度),
if(sLeft<0){
sLeft= 0;
}else if(sLeft >minBox.clientWidth- smBox.offsetWidth){
sLeft = minBox.clientWidth - smBox.offsetWidth;
}
//上下边界同理
if(sTop<0){
sTop = 0;
}else if(sTop > minBox.clientHeight - smBox.offsetHeight){
sTop = minBox.clientHeight - smBox.offsetHeight;
} //鼠标移动、小块跟着移动
smBox.style.left = sLeft + "px";
smBox.style.top = sTop + "px" ; //计算小块在minBox移动的比例,大图同比例在maxBox移动;
//定义设置moveX、moveY 暂存比例
var moveX = sLeft/(minBox.clientWidth - smBox.offsetWidth); var moveY = sTop/(minBox.clientHeight - smBox.offsetHeight);
console.log(moveY); //大图maxImg移动 maxImg.style.left = - moveX*(maxImg.clientWidth - maxBox.offsetWidth) +"px";
maxImg.style.top = - moveY* (maxImg.clientHeight - maxBox.offsetHeight) +"px";
}
//移出滑块的时候
minBox.onmouseleave = function() {
smBox.style.display = "none";
maxBox.style.display = "none";
}
</script>
</body>
</html>
JavaScript鼠标经过图片的放大镜效果的更多相关文章
- [转]jquery 鼠标放在图片上显示图片的放大镜效果jqzoom_ev-2.3
本文转自:http://blog.csdn.net/weizengxun/article/details/6768183 鼠标放在图片上显示图片的放大镜效果使用jqzoom实现,本例版本2.3 效果图 ...
- JavaScript仿淘宝实现放大镜效果的实例
我们都知道放大镜效果一般都是用于一些商城中的,列如每当我们打开淘宝,天猫等pc端时,看到心仪的物品时,点击图片时,便呈现出放大镜的效果.在没有去理解分析它的原理时,感觉非常的神奇,当真正地去接触,也是 ...
- 基于html5鼠标悬停图片动画展示效果
分享一款基于html5鼠标悬停图片动画展示效果.里面包含两款不同效果的html5图片展示效果.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class=" ...
- 特殊例子--JavaScript代码实现图片循环滚动效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- CSS鼠标悬停图片加边框效果,页面布局发生错位的解决办法
CSS鼠标悬停图片加边框效果,页面布局发生错位的解决办法 .recomend-list{ width:1200px; a{ @extend %fl; margin-right: 30px; width ...
- 基于Jquery的商城商品图片的放大镜效果(非组件)
在开发商城的时候,往往会用到图片的放大功能,这里把自己在近期项目中使用的放大镜特效做一下总结(非插件). 放大镜效果 常用的js组件jquery.imagezoom,jquery.jqzoom,jqu ...
- CSS鼠标悬停图片加边框效果,不位移的方法
<!DOCTYPE HTML> <html lang="en-US"> <head> <title>css实现鼠标悬停时图片加边框效 ...
- JavaScript图形实例:图形放大镜效果
1. 基本四瓣花型图案 根据四瓣花卉线的参数方程: t= r*(1+sin(12*θ)/5)*(0.5+sin(4*θ)/2); x=t*cos(θ)); y=t*sin(θ)); 编写如下的HTML ...
- js鼠标滑动图片显示隐藏效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- 第二天--html
<!DOCTYPE html><!--设置文档类型为标准的html5模型--><html> <head> <meta char ...
- iOS10 远程推送代码 以及服务器端代码(.net)
// // AppDelegate.m // MyPushDemo // // Created by justapple on 16/12/25. // Copyright © 2016年 dengq ...
- SVN安装及使用
1.SVN的安装 1.1 安装软件 以下图1中两个图标,分别是SVN服务器端和客户端安装软件 图1 1.2 服务器安装步骤 先点击图1第一个图标,安装SVN的服务器,默认安装即可,安装成功的界面如下图 ...
- git bash操作
1. GIT说明 1> git是分布式,或者说是去中心化的.表现为: 开发者的可以在本地使用git并完美的控制自己的版本,而无需与服务端交互: 开发者可以将本地库在某个服务端备份,这种情况类似S ...
- SQL删除重复数据只保留一条
用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...
- MFC 创建多层目录
创建多层目录 BOOL CTestToolCtr::CreateFolder(CString strNewFolder) { /************************************ ...
- 前端实现图片懒加载(lazyload)的两种方式
在实际的项目开发中,我们通常会遇见这样的场景:一个页面有很多图片,而首屏出现的图片大概就一两张,那么我们还要一次性把所有图片都加载出来吗?显然这是愚蠢的,不仅影响页面渲染速度,还浪费带宽.这也就是们通 ...
- string与int互换
1:将string转化为int 1.) int i = Integer.parseInt(String s); 2.) int i = Integer.valueOf(my_str).intValue ...
- react native 多选按钮
在做项目的时候有一个需求,是可以选择多个条件的,特地在Github上找了一些案例,发现没有什么合适的,于是自己根据这些案例,改装一下,封装了一个合适自己的.先看我封装的代码. import React ...
- webrtc中APM(AudioProcessing module)的使用
一,实例化和配置 AudioProcessing* apm = AudioProcessing::Create(0); //这里的0指的是channelID,只是一个标注那个通道的表示 apm-> ...