javascript放大镜效果的简单实现

 更新时间:2013年12月09日 10:04:34   作者:  
这篇文章主要是对javascript放大镜效果的简单实现进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助

这个效果并不难,要点是位置和比例设置,

捕获鼠标位置、判断鼠标位置区域、还有onmouseover事件、onmousemove事件、onmouseout事件

设置显示大图的比例,小图上显示的切图比例都要弄准确点,最好是2倍啦,4倍啦。

主要注意宽度,我这里的图片m.jpg是1440X900的....

复制代码 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD Xhtml 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>放大镜效果</title>
<style type="text/css">
*{margin:0;padding:0;}
#smallimg{width:360px;float:left;position:relative;border:1px solid red;}
#smallimg img{ width:360px;}
#bigimg{float:left;width:400px;height:400px;margin-left:40px;border:1px solid #ccc;display:none;}
#showimg{width:100px;height:100px;background:#fff;cursor:move; position:absolute;border:1px solid #666;opacity:0.5;filter:alpha(opacity=50);display:none;}
</style>
</head>
<body>
<div id="smallimg">
 <img src="jq/m.jpg" alt=""/>
 <div id="showimg">&nbsp;</div>
</div>
<div id="bigimg">&nbsp;</div>


<script type="text/javascript">
var $=function(id){return typeof id=="string"?document.getElementById(id):id}
var smallimg = $("smallimg");
var showimg = $("showimg");//滤镜图片
var bigimg = $("bigimg");
var small_url = smallimg.getElementsByTagName("img")[0].getAttribute("src");
var show_half = maxWidth = maxHeight = 0;
smallimg.onmouseover = function(){
 showimg.style.display = "block";
 bigimg.style.display = "inline";
 show_half = showimg.offsetHeight/2;
 maxWidth = smallimg.clientWidth - showimg.offsetWidth;
 maxHeight = smallimg.clientHeight - showimg.offsetHeight;
 //上面两个变量指明showimg允许活动的区域
};
smallimg.onmousemove = function(e){
 var e=window.event?window.event:e;
 var num=bigimg.clientWidth/showimg.clientWidth;
 var Top = e.clientY - smallimg.offsetTop - show_half;
 var Left = e.clientX - smallimg.offsetLeft - show_half;
 //获取当前移动的showimg位置 计算方法是 鼠标坐标 - 最外面容器的坐标 - 盒子的宽(高)的/2
 Top = Top<0?0:Top>maxHeight?maxHeight:Top;
 Left = Left<0?0:Left>maxWidth?maxWidth:Left;
 showimg.style.top = Top + "px";
 showimg.style.left = Left + "px";
 bigimg.style.background = "url("+small_url+") -"+Left*num+"px -"+Top*num+"px no-repeat";
};
smallimg.onmouseout = function(){
 showimg.style.display="none";
 bigimg.style.background ="";
 bigimg.style.display="none"
};
</script>
</body>
</html>

相关文章

  • JS实现给不同元素设置不同的定时器

    JS实现给不同元素设置不同的定时器

    这篇文章主要为大家详细介绍了JS实现给不同元素设置不同的定时器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • JS实现课堂随机点名和顺序点名

    JS实现课堂随机点名和顺序点名

    这篇文章主要介绍了基于JS实现课堂随机点名和顺序点名的相关资料,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-03-03
  • JavaScript实现长图滚动效果

    JavaScript实现长图滚动效果

    这篇文章主要为大家详细介绍了JavaScript实现长图滚动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • Javascript实现字数统计

    Javascript实现字数统计

    现在流行的Twitter等微博客网站,有一个很好的用户体验,就是在文本框中输入文字的时候,会自动统计输入的字符,并显示用户还能输入的字符,在限制了140个字的微博客中,这样的小提示可以很好的增强用户体验。
    2015-07-07
  • JSON.parse 解析字符串出错的解决方法

    JSON.parse 解析字符串出错的解决方法

    程序中很多数据是动态拼接而成的json数据,最近在用json的时候老是现JSON.parse错误
    2010-07-07
  • JS判断用户用的哪个浏览器实例详解

    JS判断用户用的哪个浏览器实例详解

    这篇文章主要介绍了JS判断用户用的哪个浏览器的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • 使用webpack/gulp构建TypeScript项目的方法示例

    使用webpack/gulp构建TypeScript项目的方法示例

    这篇文章主要介绍了使用webpack/gulp构建TypeScript项目的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • JS设计模式之责任链模式应用详解

    JS设计模式之责任链模式应用详解

    JS责任链模式是一种行为型设计模式,它允许多个对象按照顺序处理请求,直到其中一个对象能够处理请求为止,这样的对象链被称为责任链,本文将给大家详细讲讲责任链模式在JS中的应用,需要的朋友可以参考下
    2023-08-08
  • 浅析JavaScript中的Proxy对象

    浅析JavaScript中的Proxy对象

    Proxy是JavaScript的一个内置对象,它允许您拦截并自定义对象的行为。本文将和大家简单聊聊JavaScript中Proxy对象的创建与使用,感兴趣的可以了解一下
    2023-03-03
  • js使用递归解析xml

    js使用递归解析xml

    这篇文章主要介绍了js使用递归解析xml,需要的朋友可以参考下
    2014-12-12

最新评论