首页 > 其他分享 >JQ 放大镜

JQ 放大镜

时间:2023-06-26 19:34:10浏览次数:38  
标签:放大镜 mask JQ height width zoomMiddleDiv var left


zoom.css

*{
	padding: 0;
	margin: 0;
}
li{
	list-style-type: none;
}
.zoom{
	margin: 50px;
	position: relative;
}
.zoomMiddle{
	border: 1px solid #ccc;
	width: 300px;
	height: 300px;
	margin-bottom: 3px;
	position: relative;
}
.zoomMiddle img{
	width: 300px;
	height: 300px;
}
.mask{
	width: 100px;
	height: 100px;
	background: #abcdef;
	opacity:0.4;
	position: absolute;
	left: 0;
	top: 0;
	display: none;
}
.zoomSmall{
	-overflow: hidden;
	width: 302px;
	height: 54px;
}
.zoomSmall span{
	float: left;
	height: 52px;
	line-height: 52px;
	width: 10px;
	text-align: center;
	border: 1px solid #ccc;
	cursor: pointer;
}
.zoomSmall span.disable{
	cursor: default;
	background: #ccc;
}
.wrapSmallImg{
	float: left;
	height: 54px;
	width: 232px;
	/*background: #f00;*/
	position: relative;
	overflow: hidden;
}
.wrapSmallImg ul{
	width: 348px;
	/*background: #f00;*/
	position: absolute;
	left: 0;
	top: 0;
}
.wrapSmallImg ul li{
	float: left;
	width: 50px;
	height: 50px;
	border: 2px solid #ccc;
	margin: 0 2px;
	_display: inline;
	cursor: pointer;
}
.wrapSmallImg ul li.current{
	border: 2px solid orange;
}
.wrapSmallImg ul li img{
	width: 50px;
	height: 50px;
}
.zoomLarge{
	width: 350px;
	height: 350px;
	border: 1px solid #ccc;
	position: absolute;
	top: 0;
	left: 320px;
	overflow: hidden;
	display:none;
}
.zoomLarge img{
	width: 600px;
	height:600px;
	position: absolute;
	left: 0;
	top: 0;
}

 

zoom.html

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>放大镜</title>
<link rel="stylesheet" href="zoom.css">
</head>
<body>
<input type="text" name="" id="">
<div class="zoom">
	<div class="zoomMiddle">
		<img src="1.jpg" alt="">
		<div class="mask"></div>
	</div>
	<div class="zoomSmall">
		<span class="left disable"><</span>
		<div class="wrapSmallImg">
			<ul>
				<li class="current"><img src="1.jpg" alt=""></li>
				<li><img src="2.jpg" alt=""></li>
				<li><img src="3.jpg" alt=""></li>
				<li><img src="4.jpg" alt=""></li>
				<li><img src="5.jpg" alt=""></li>
				<li><img src="6.jpg" alt=""></li>
			</ul>
		</div>
		<span class="right">></span>
	</div>
	<div class="zoomLarge"><img src="1.jpg" alt=""></div>
</div>
<script src="jquery.js"></script>
<script src="zoom.js"></script>
</body>
</html>

 

zoom.js

$(function(){
	var smallImgLi = $('.wrapSmallImg ul li');
	var smallImgLiLength = smallImgLi.size();
	var smallImgLiWidth = smallImgLi.outerWidth(true);
	var smallImgUl = $('.wrapSmallImg ul');
	var leftBtn = $('span.left');
	var rightBtn = $('span.right');
	var now = 0;
	var zoomMiddleDiv = $('.zoomMiddle');

	smallImgLi.mouseover(function(){
		$(this).addClass('current').siblings().removeClass('current');
		var thisSrc = $(this).children('img').attr('src');
		$('.zoomMiddle img').attr('src',thisSrc);
		$('.zoomLarge img').attr('src',thisSrc);
	});

	rightBtn.click(function(){
		//当now=2的时候,我们不希望再让他滚动了
		leftBtn.removeClass('disable');
		if(now>=smallImgLiLength-4){
			$(this).addClass('disable');
			now = smallImgLiLength-4;

		}else{
			now++;
			smallImgUl.animate({'left':-now*smallImgLiWidth},300);
		}
	});

	leftBtn.click(function(){
		if(now==0){
			now=0;
		}else{
			now--;
			smallImgUl.animate({'left':'+='+smallImgLiWidth},300);
		}		
	});

	zoomMiddleDiv.mousemove(function(e){
		$('.mask').show();
		$('.zoomLarge').show();
		zoomMiddleDivOffset = zoomMiddleDiv.offset();
		var x = e.pageX - zoomMiddleDivOffset.left - $('.mask').width()/2;
		var y = e.pageY - zoomMiddleDivOffset.top - $('.mask').height()/2;

		if(x<=0){
			x=0;
		}else if(x>=zoomMiddleDiv.width()-$('.mask').width()){
			x = zoomMiddleDiv.width()-$('.mask').width();
		}

		if(y<=0){
			y=0;
		}else if(y>=zoomMiddleDiv.height()-$('.mask').height()){
			y = zoomMiddleDiv.height()-$('.mask').height();
		}

		var percentageX = x/(zoomMiddleDiv.width()-$('.mask').width());
		var percentageY = y/(zoomMiddleDiv.height()-$('.mask').height());

		$('.zoomLarge img').css({
			left:-percentageX*(600-$('.zoomLarge').width()),
			top:-percentageY*(600-$('.zoomLarge').height())
		});


		$('input').val(percentageX+','+percentageY)

		$('.mask').css({
			'left':x+'px',
			'top':y+'px'
		});
	});

	zoomMiddleDiv.mouseout(function(){
		$('.mask').hide();
		$('.zoomLarge').hide();
	});
});

 

效果图:

JQ 放大镜_css


标签:放大镜,mask,JQ,height,width,zoomMiddleDiv,var,left
From: https://blog.51cto.com/u_16171388/6557097

相关文章

  • JQ 表格内容过滤
    <html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title></title><linkrel="stylesheet"type="text/css"href="css/style.css"/><sc......
  • JQ 可见性过滤选择器
    <html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title></title><!--引入jQuery--><scriptsrc="js/jquery-1.10.1.min.js"type="text/javascript&q......
  • JQ 隔行变色
    <html><head><title></title><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><scripttype="text/javascript">window.onload=function(){//页面所有元素加载完毕 varitem=do......
  • jQuery源码浅谈系列---$.attr()
    attr()   1、attr(name)     取得第一个匹配元素的属性值。如果元素没有相应的属性,则返回undefined。  2、attr(properties)     将一个"名/值"形式的对象设置为所有匹配元素的属性。    注:要设置class属性,必须用'className'作为属性名。     举例:......
  • jquery.pngFix
    jquery.pngFix.js应该还出现在部分系统和一些网站上,简单介绍一下吧。 ----------------解决IE6下不支持png图片透明效果 整理了一下网上的一些插件的缺点: 有png作为背景且背景宽高和标签宽高不一致的时候会发生拉伸。配套版本的支持情况1.3.2-------1.5起不兼容。   扩展......
  • JQuery中的each()方法和$.each()函数的使用
    1、元素(对象).each()方法的使用JQuery提供了each()方法用于遍历匹配的元素信息。以每一个匹配的元素作为上下文来执行一个函数。每次执行传递进来的函数时,函数中的this关键字都指向一个不同的DOM元素(每次都是一个不同的匹配元素)。而且,在每次执行函数时,都会给函数传递一个表......
  • 【雕爷学编程】Arduino动手做(119)---JQ6500语音模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • jQuery简介加安装类型
    #jQuery##jquery简介jquery是什么?作用?跟js有什么关系(1)jQuery是一套JavaScript的库,它简化了使用Javascript进行网页特效开发的一些复杂性,提供了对常见任务的自动化和复杂任务的简化,JQuery实际上就是对现有的JavaScript的一种扩展,它非常轻量级,压缩后大概32KB,它兼容于各种浏......
  • jquery根据json自动生成表格
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>导入文件</title><linkrel="stylesheet"href="/js/bootstrap.min.css"><scriptsrc="/js/jquery.min.js&q......
  • 利用jQuery制作简易的table上下无缝轮播
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=......