原生JS实现简单的淘宝放大镜效果

大家经常去淘宝买东西会发现,淘宝上的放大镜效果挺有意思的,这里简单的实现了下,代码中的图片地址 亲们可以自行更换;

<!DOCTYPE html>
<html>
<head>
	<title>放大镜</title>
	<meta charset="utf-8" />
	<style type="text/css">
		*{
			margin: 0;
			padding: 0;
		}
		body{
			height: 2000px;
		}
		#wrapleft{
			width: 300px;
			height: 400px;
			background: skyblue;
			box-shadow: 2px 2px 2px 2px gray;
			position: absolute;
			left: 100px;
			top: 100px;
		}
		.smallg{
			width: 70px;
			height: 99px;
			float: left;
			margin-left: 5px;
		}
		.smallg img{
			width: 70px;
			height: 99px;
		}
		.smallg:hover{
			box-shadow: 2px 2px 2px 2px gray;
		}
		#bigg{
			width: 300px;
			height: 300px;
			position: relative;
		}
		#bigg img{
			width: 300px;
			height: 300px;
		}
		#MoverGlass{
			width: 100px;
			height: 100px;
			position: absolute;
			background-color: rgba(0,0,0,0.5);
			left: 0;
			top: 0;
			display: none;
		}
		#wrapright{
			width: 400px;
			height: 400px;
			position: absolute;
			display: none;
			background-color: yellowgreen;
			left: 420px;
			top: 100px;
			overflow: hidden;
		}
		#Myeye{
			width: 1200px;
			height: 1200px;
			position: absolute;
			left: 0;
			top: 0;
			display: block;
		}
	</style>
</head>
<body>
	<div id="wrapleft">
		<div id="bigg">
			<img src="https://img.alicdn.com/imgextra/i1/5/TB2JKUbpVXXXXacXXXXXXXXXXXX_!!5-0-yamato.jpg_210x1000q90.jpg">
			<div id="MoverGlass">
			</div>
		</div>
		<div class="smallg"><img src="https://img.alicdn.com/imgextra/i1/5/TB2JKUbpVXXXXacXXXXXXXXXXXX_!!5-0-yamato.jpg_210x1000q90.jpg"></div>
		<div class="smallg"><img src="https://gd1.alicdn.com/imgextra/i1/2621336145/TB2Vc3ogFXXXXX9XXXXXXXXXXXX_!!2621336145.jpg"></div>
		<div class="smallg"><img src="https://img.alicdn.com/imgextra/i1/2621336145/TB22k_8gFXXXXXeXpXXXXXXXXXX_!!2621336145.jpg"></div>
		<div class="smallg"><img src="https://img.alicdn.com/imgextra/i2/2621336145/TB2YSDHlpXXXXarXXXXXXXXXXXX_!!2621336145.jpg"></div>
	</div>
	<div id="wrapright">
		<img src="ihttps://img.alicdn.com/imgextra/i1/5/TB2JKUbpVXXXXacXXXXXXXXXXXX_!!5-0-yamato.jpg_210x1000q90.jpg" id="Myeye">
	</div>
</body>
</html>
<script type="text/javascript">
	var smallg=document.getElementsByClassName(‘smallg‘);
	var MoverGlass=document.getElementById(‘MoverGlass‘);
	var bigg=document.getElementById("bigg");
	var biggimg=bigg.getElementsByTagName(‘img‘)[0];
	var wrapleft=document.getElementById("wrapleft");
	var wrapright=document.getElementById("wrapright");
	var Myeye=document.getElementById("Myeye");//小图切换
	for(var i=0;i<smallg.length;i++){
		smallg[i].index=i;
		smallg[i].onmouseover=function (){
			src=this.getElementsByTagName("img")[0].src;
			biggimg.src=src;
			Myeye.src=src;
		}
	}//遮罩层和显示层的显示与否
	bigg.onmouseover=function(){
		MoverGlass.style.display="block";
		wrapright.style.display="block";
	}
	bigg.onmouseout=function(){
		MoverGlass.style.display="none";
		wrapright.style.display="none";
	}//遮罩层运动
	bigg.onmousemove=function(evt){
		var evt=event||evt;
		var scrollTop=document.documentElement.scrollTop||window.pageYOffset||document.body.scrollTop;
		var scrollLeft=document.documentElement.scrollLeft||window.pageXOffset||document.body.scrollLeft;
		var x=evt.clientX+scrollLeft-wrapleft.offsetLeft-MoverGlass.offsetWidth/2;
		var y=evt.clientY+scrollTop-wrapleft.offsetTop-MoverGlass.offsetHeight/2;

		if(x<=0){
			x=0;
		}
		if(x>=bigg.offsetWidth-MoverGlass.offsetWidth){
			x=bigg.offsetWidth-MoverGlass.offsetWidth;
		}
		if(y<=0){
			y=0;
		}
		if(y>=bigg.offsetHeight-MoverGlass.offsetHeight){
			y=bigg.offsetHeight-MoverGlass.offsetHeight;
		}
		MoverGlass.style.left=x+"px";
		MoverGlass.style.top=y+"px";//计算显示层坐标
		var b=MoverGlass.offsetLeft/MoverGlass.offsetWidth*wrapright.offsetWidth;
		var a=MoverGlass.offsetTop/MoverGlass.offsetHeight*wrapright.offsetHeight;
		Myeye.style.left=-b+"px";
		Myeye.style.top=-a+"px";
	}
</script>

  

时间: 2024-12-05 12:22:59

原生JS实现简单的淘宝放大镜效果的相关文章

淘宝放大镜效果

淘宝放大镜效果,其实就是一张小图片,还有一张大图片.鼠标移动,按比例显示大图的一部分,在大图的父元素上设置overflow:hidden,就OK了.这里面需要注意换算好大小图的比例. 代码地址:https://github.com/peng666/blogs/tree/gh-pages/floats 在线测试地址:http://peng666.github.io/blogs/floats/

原生js淘宝放大镜效果(第二版)

随便写写 <!DOCTYPE html> <html> <head> <title>放大镜</title> <meta charset="utf-8" /> <style type="text/css"> *{ margin: 0; padding: 0; } body{ height: 2000px; } #wrapleft{ width: 300px; height: 400px

关于获取坐标的一些记录 ——分析淘宝放大镜效果的原理

这是距离相关的 el.offsetTop 表示的是元素el到body的最顶部的距离 : 就是body有多高 就是多高的距离,不会因为缩放窗口而改变. el.offsetWidth 是el元素的看起来的宽度 ,padding也会被算上 el.clientWidth 是获取元素的宽度 这里就额外提一下. 以下是鼠标坐标的: e.movementY 是鼠标点相对于上一次的坐标的移动距离 一般都不准确 e.pageY 是鼠标点相对于body的距离 随着鼠标移动一直变化 以下是网上查到的一些资料 网页可见

淘宝API学习之道:简单介绍淘宝API功能接口作用

前一阵子按照上级指示,根据淘宝API开发符合自已应用的系统,比如批量上传,批量修改名称,价格等功能什么的,在此就将我的开发历程写一写,为自己前段时间的工作做个总结. 淘宝开发平台(http://www.taobao.com/theme/tao_source/#prev),向第三方开发者提供API接口和相关开发环境的平台,使开发者可以开发属于自已的系统应用于淘宝店铺和阿里上,同时,运用SAAS模式,开发者开发的系统也可以在该平台上进行销售. 为进行开发做的准备,得在开发同盟网站注册帐号(http:

【原生javascript】margin-top实现淘宝首页图片滚动

<!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" xml:lang="en"> <head> <meta h

原生JS实现简单富文本编辑器2

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

Web API (scroll系列)、(仿淘宝侧边栏效果实现)、(mouseenter与mouseover的区别)、(动画的原理)、(缓动动画)

一 .三大系列中的scroll系列 : (1)scrollLeft |  scrollTop  :水平   |   垂直方向滚动出去的距离  : (2)scrollWidth |  scrollHeight   :内容的真是宽度  |  高度   : (3)滚动整个页面的时候  :   window . pageYOffset   : 二 .仿淘宝侧边栏效果实现 : 1.  找到关心的元素对象  : (1)banner区域  元素对象  : (2)侧边栏的元素对象   : (3)主体部分元素对象

JQ实战天猫淘宝放大镜

这个特效平时生活中很常见,话不多说先上效果图. 首先布局,遮罩层是这个效果中的重点精华,也就是下面代码中的shade. <style> * { margin:0px; padding:0px;} #box { width:400px; height:400px; border:5px solid #CCC; margin:100px auto; position:relative;} #box .simg {width:400px; height:400px; position:relativ

js原生之淘宝放大镜特效

<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> html,body{ margin:0; padding:0; } #maglifier{ width:1030px; height:520px;