原生js图片放大效果

本文参照了作者https://blog.csdn.net/ppfxdj/article/details/92065269修改

效果如下

原生js图片放大效果_第1张图片

点击遮罩层可以关闭图片,或者点击这个按钮,由于时间关系,样式没调过来这个按钮稍微定位一下就可以

废话不多说直接上代码,可兼容小屏幕电脑或手机

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>图片放大</title>
		<meta name="keywords" content="" />
		<meta name="description" content="" />  
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<style>
			ul,li{margin:0;padding:0;list-style: none}
			#box{
				width:600px;
				height:400px;
				margin:20px auto;
			}
			ul li{
				float: left;
				width:200px;
				height:200px;
			}
			img{
				width:100%;
				height:100%;
			}
			.mark{
				width:100%;
				height:100%; 
				background:#000;
				opacity: 0.8;
				position: fixed;
				top: 0;
				left: 0;
			}
			 /*修改pic的宽高,可调整图片大小*/
			.pic{
				width:80%;
				height:500px; 
				position: fixed;
				left: 10%;
				top: 20%;
			}
			span{
				position: fixed;
				width:20px;
				height:20px;
				left:450px;
				top:50px; 
				background: #fff;
				text-align: center;
			}
		</style>
	</head>
	<div id='box'>
		<ul>
			<!--插入图片-->
			<li><img src="../static/vue-photo-preview/demo/2.jpg" alt=""></li>
			<li><img src="../static/vue-photo-preview/demo/3.jpg" alt=""></li>
			<li><img src="../static/vue-photo-preview/demo/2.jpg" alt=""></li>
			<li><img src="../static/vue-photo-preview/demo/3.jpg" alt=""></li>
			<li><img src="../static/vue-photo-preview/demo/2.jpg" alt=""></li>
			<li><img src="../static/vue-photo-preview/demo/3.jpg" alt=""></li>
		</ul>
		<!-- <div class='mark'></div>
		<img src="../static/vue-photo-preview/demo/3.jpg"  class='pic'>
		<span>X</span> -->
	</div>
	<script>
		var lis=document.getElementsByTagName('li');
		var box=document.getElementById('box');
			//遍历所有的li,单击的是哪个li里的图片src 。
			//	创建div  className='mark' 追加到box
			//	创建img  src          className  追加到box
			//	创建span  innerHTML=X  追加到box
			for(var i=0;i<lis.length;i++){
	
				     lis[i].onclick=function(){
				     	//console.log(this)
				     	var  newDiv=document.createElement('div');				//定义好创建的元素
				     		 newDiv.className='mark';							//创建div的时候class类名为mark
				     		 box.appendChild(newDiv);							//#box下创建div
				     	var  newImg=document.createElement('img');
				     		 newImg.className='pic';
				     		 newImg.src=this.getElementsByTagName('img')[0].src;	//创建img的时候src路径为当前点击的图片
				     		// newImg.src=this.childNodes[0].src;
				     		 box.appendChild(newImg);
				     	var newSpan=document.createElement("span");
				     		newSpan.innerHTML='X';
				     		box.appendChild(newSpan);
	
				     		newSpan.onclick=function(){					//span创建了关闭事件,点击删除以下元素
				     			box.removeChild(newDiv);
				     			box.removeChild(newSpan);
				     			box.removeChild(newImg);
				     		}
							newDiv.onclick = function(){				//div也创建了关闭事件,点击删除以下元素
								box.removeChild(newDiv);
								box.removeChild(newSpan);
								box.removeChild(newImg);
							}
	
				     }
	
			}
	
	
	</script>
	</body>
</html>

以上代码实现了简单的点击图片能够放大的效果,没有其它的效果,如有逻辑不清晰,或者有更好的实现方法可以加我扣1344160559一起探讨。

你可能感兴趣的:(原生js图片放大效果)