图片中心放大-九宫格

html代码如下: 

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>九宫格中心放大</title>
	<style>
		*{
			margin: 0;
			padding: 0;
		}
		#ul1{
			position: relative;
			width: 600px;
			list-style: none;
			margin: 0 auto;
		}
		#ul1 li{
			width: 180px;
			height: 180px;
			background-color: #ccc;
			border:solid 5px rgba(205,116,196,0.7);
			float: left;
			margin: 5px;
			overflow: hidden;
		}
		#ul1 li img{
			width: 100%;
		}
		h2{
			text-align: center;
			margin: 10px;
			text-shadow: 0px 2px 1px rgba(205,116,196,0.7);
			color: blue;
		}
	</style>
	<script src="move.js"></script>
	<script>
		window.onload=function(){
			var oUl=document.getElementById("ul1");
			var aLi=document.getElementsByTagName("li");
			var MinZindex=2;
			//布局转换,把浮动转换为绝对定位,防止重叠所以使用两次for循环
			for (var i = 0; i < aLi.length; i++) {
				aLi[i].style.left=aLi[i].offsetLeft+'px';
				aLi[i].style.top=aLi[i].offsetTop+'px';
				
			}
			for (var i = 0; i < aLi.length; i++) {
				aLi[i].style.position='absolute';
				aLi[i].style.margin=0;
			}
			for (var i = 0; i < aLi.length; i++) {
				aLi[i].onmouseover=function(){
					this.style.zIndex=MinZindex++;
					startMove(this,{width:320,height:320,marginLeft:-70,marginTop:-70});
					
				}
				aLi[i].onmouseout=function(){
					startMove(this,{width:180,height:180,marginLeft:0,marginTop:0});
				}
			}

		}
	</script>
</head>
<body>
	<h2>领哥做网页</h2>
	<ul id="ul1">
		<li><img src="7.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="x.jpg" alt=""></li>
		<li><img src="8.jpg" alt=""></li>
		<li><img src="6.jpg" alt=""></li>
		<li><img src="1.1.jpg" alt=""></li>
		<li><img src="5.jpg" alt=""></li>
	</ul>
</body>
</html>

move.js代码如下:

function getStyle(obj,attr){
	if (obj.currentStyle) {
		return obj.currentStyle[attr];
	}else{
		return getComputedStyle(obj,false)[attr];
	}
}
//运动函数
function startMove(obj,json,fn){
	clearInterval(obj.timer);
	obj.timer=setInterval(function(){
		var bStop=true;//判断都到达目标位置
		for(var attr in json){
			//1、取当前值
			var iCur=0;
			if (attr=='opacity') {
				iCur=parseInt(parseFloat(getStyle(obj,attr))*100);
			}else{
				iCur=parseInt(getStyle(obj,attr));
			}
			//2、计算速度
			var iSpeed=(json[attr]-iCur)/8;
			iSpeed=iSpeed>0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);

			//3、判断是否到达目标点
			if (iCur!=json[attr]) {
				bStop=false;
			}
			
			if (attr=='opacity') {
				obj.style.filter='alpha(opacity:'+iCur+iSpeed+')';
				obj.style.opacity=(iCur+iSpeed)/100;
			}else{
				obj.style[attr]=iCur+iSpeed+'px';
			}	
		}
		if (bStop) {
			clearInterval(obj.timer);
			if (fn) {
				fn();
			}
		}
	},30);
}

成品展示如下:

猜你喜欢

转载自blog.csdn.net/zhangqling/article/details/84579696