js之图片变大变小效果

1、当鼠标移到图片上,图片变大;当鼠标移出图片,图片变小,效果如图:

    124635_Npbv_1444783.png

    124645_C4kK_1444783.png


2、原理不难,就是鼠标over时,设置一个定时器,让图片逐渐变大,鼠标out时同理,看下最初的简略代码你就会明白:

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
div {
    width: 200px;           /* 宽度 */
    height: 100px;          /* 高度 */
    border: 1px solid red;  /* 边框 */
    margin: 100px auto;     /* 外边距 */
    overflow: hidden;       /* 溢出隐藏 */
}
img {
    width: 200px;           /* 宽度 */
    height: 100px;          /* 高度 */
    cursor: pointer;        /* 鼠标变手 */
}
</style>
</head>
<body>
    <div>
	<img src="1.jpg" id="img" />
    </div>
</body>

<script type="text/javascript">
    // js代码
</script>
</html>


    js代码:

window.onload = function(){
    var img = document.getElementById('img');         // 获取img标签

    var width = img.width;                            // 初始化img宽度
    var height = img.height;                          // 初始化img高度
    var marginLeft = 0;                               // 初始化img左外边距
    var marginTop = 0;                                // 初始化img上外边距
    var overTimer = null;                             // 初始化定时器,用于鼠标接触时
    var outTimer = null;                              // 初始化定时器,用于鼠标离开时

    img.onmouseover = function(){                     // 鼠标接触img
        clearInterval(outTimer);                      // 清除鼠标离开的定时器
	    overTimer = setInterval(function(){           // 设置鼠标接触触发的定时器,时距15毫秒
	        width = width + 2;                        // 宽度+2
	        height = height + 1;                      // 高度+1
	        marginLeft = marginLeft - 1;              // 左外边距-1
	        marginTop = marginTop - 0.5;              // 上外边距-0.5

	        img.style.width = width + 'px';           // 设置img宽度
	        img.style.height = height + 'px';         // 设置img高度
	        img.style.marginLeft = marginLeft + 'px'; // 设置img左外边距
	        img.style.marginTop = marginTop + 'px';   // 设置img上外边距
	        if (width >= 270) {                       // 如果img宽度大于某值
	            clearInterval(overTimer);             // 清除定时器
	        };
	    }, 15);
    };

    img.onmouseout = function(){                      // 鼠标离开img
        clearInterval(overTimer);                     // 清除鼠标接触的定时器
        outTimer = setInterval(function(){            // 设置鼠标离开触发的定时器,时距15毫秒
        width = width - 2;                            // 宽度-2
	    height = height - 1;                          // 高度-1
	    marginLeft = marginLeft + 1;                  // 左外边距+1
	    marginTop = marginTop + 0.5;                  // 上外边距+0.5

	    img.style.width = width + 'px';               // 设置img宽度
	    img.style.height = height + 'px';             // 设置img高度
	    img.style.marginLeft = marginLeft + 'px';     // 设置img左外边距
	    img.style.marginTop = marginTop + 'px';       // 设置img上外边距
	    if (width <= 200) {                           // 如果img宽度小于某值
	        clearInterval(outTimer);                  // 清除定时器
	    };
	}, 15);
    };
};



转载于:https://my.oschina.net/cobish/blog/304284

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值