<!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鼠标经过图片的放大镜效果的更多相关文章

  1. [转]jquery 鼠标放在图片上显示图片的放大镜效果jqzoom_ev-2.3

    本文转自:http://blog.csdn.net/weizengxun/article/details/6768183 鼠标放在图片上显示图片的放大镜效果使用jqzoom实现,本例版本2.3 效果图 ...

  2. JavaScript仿淘宝实现放大镜效果的实例

    我们都知道放大镜效果一般都是用于一些商城中的,列如每当我们打开淘宝,天猫等pc端时,看到心仪的物品时,点击图片时,便呈现出放大镜的效果.在没有去理解分析它的原理时,感觉非常的神奇,当真正地去接触,也是 ...

  3. 基于html5鼠标悬停图片动画展示效果

    分享一款基于html5鼠标悬停图片动画展示效果.里面包含两款不同效果的html5图片展示效果.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class=" ...

  4. 特殊例子--JavaScript代码实现图片循环滚动效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. CSS鼠标悬停图片加边框效果,页面布局发生错位的解决办法

    CSS鼠标悬停图片加边框效果,页面布局发生错位的解决办法 .recomend-list{ width:1200px; a{ @extend %fl; margin-right: 30px; width ...

  6. 基于Jquery的商城商品图片的放大镜效果(非组件)

    在开发商城的时候,往往会用到图片的放大功能,这里把自己在近期项目中使用的放大镜特效做一下总结(非插件). 放大镜效果 常用的js组件jquery.imagezoom,jquery.jqzoom,jqu ...

  7. CSS鼠标悬停图片加边框效果,不位移的方法

    <!DOCTYPE HTML> <html lang="en-US"> <head> <title>css实现鼠标悬停时图片加边框效 ...

  8. JavaScript图形实例:图形放大镜效果

    1. 基本四瓣花型图案 根据四瓣花卉线的参数方程: t= r*(1+sin(12*θ)/5)*(0.5+sin(4*θ)/2); x=t*cos(θ)); y=t*sin(θ)); 编写如下的HTML ...

  9. js鼠标滑动图片显示隐藏效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. [Android Pro] Android开发实践:自定义ViewGroup的onLayout()分析

    reference to : http://www.linuxidc.com/Linux/2014-12/110165.htm 前一篇文章主要讲了自定义View为什么要重载onMeasure()方法( ...

  2. Django-Admin后台管理

    Rhel6.5 Django1.10 Python3.5 应用环境:Python+Virtualenv(Python Virtualenv运行Django环境配置) Django-Admin后台管理 ...

  3. 基于EasyUI Treegrid的权限管理资源列表

    1. 前言 最近在开发系统权限管理相关的功能,主要包含用户管理,资源管理,角色管理,组类别管理等小的模块.之前的Web开发中也用过jQueryEasyUI插件,感觉这款插件简单易用,上手很快.以前用到 ...

  4. jsf组件对应表

    组件 标签 说明 UIForm form 表示 HTML表单元素 UIInput InputText 单行文本输入控件   inputTextarea 多行文本输入控件   InputSecret 密 ...

  5. The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties

    出现这个错误提示可以用 DbFunctions.TruncateTime 将Linq中entity的DateTime转化一下再使用,如下所示: var anyCalls = _db.CallLogs. ...

  6. 1.Android 视图及View绘制分析笔记之setContentView

    自从1983年第一台图形用户界面的个人电脑问世以来,几乎所有的PC操作系统都支持可视化操作,Android也不例外.对于所有Android Developer来说,我们接触最多的控件就是View.通常 ...

  7. 【Hibernate框架】关联映射(多对多关联映射)

    按着我们的总结行进计划,接下来,就是有关于多对多映射的总结了. 我们来举个例子啊,很长时间以来,房价暴涨不落,但是还有很多人拥有很多套房产,假如说,一个富豪拥有九套房产,家里人么准去住哪一套,我们就以 ...

  8. Spring的JDBC模板

    Spring对持久层技术支持 JDBC : org.springframework.jdbc.core.JdbcTemplate Hibernate3.0 : org.springframework. ...

  9. Mysql数据库的使用总结之Innodb简介

     最近在对开发的软件的服务器部分制作安装包,但服务器部分需要有mysql数据库的支持.因此,采用免安装版的mysql策略:将mysql数据库需要的文件在安装程序中进行设置和打包即可.但也遇到了很多问题 ...

  10. 使用SHFB(Sandcastle Help File Builder)建立MSDN风格的代码文档

    使用SHFB(Sandcastle Help File Builder)建立MSDN风格的代码文档 下载地址:http://sandcastle.codeplex.com/ 下载地址2:http:// ...