美文网首页
javascript点击图片逐渐放大效果

javascript点击图片逐渐放大效果

作者: 何必自找失落_ | 来源:发表于2016-12-07 14:34 被阅读0次
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>点击图片放大效果</title>
    <link rel="stylesheet" type="text/css" href="css/reset.css">
    <style type="text/css">
        body,html{
            height: 100%;
        }
        #demo{
            width: 360px;
            height: 360px;
            position: relative;
            left: 50%;
            margin-left: -180px;
            top: 50%;
            margin-top: -180px;
            cursor: pointer;
            border: 1px dashed #ccc;
        }
        img,span{
            display: inline-block;
            width: 360px;
            height: 360px;
            position: absolute;
            left: 0px;
            top: 0px;
        }
        span{
            background-color: #fff;
            z-index: 2;
            opacity: 0.3;
            filter: alpha(opacity: 30);
        }
    </style>
</head>
<body>
    <div id="demo">
        <img src="img/big.jpg" id="img">
        <span></span>
    </div>
    <script type="text/javascript">
        window.onload = function (){
            //获得样式的函数
            function css(ele,pro){
                if (ele.currentStyle) {
                    return ele.currentStyle[pro];
                }else{
                    return getComputedStyle(ele,false)[pro];
                }
            }
            var img = document.getElementById("img");
            var demo = document.getElementById("demo");
            // 点击控制器
            var isClick = false;
            demo.onclick = function (){
                if (isClick) {
                    changeStyle(img,{"width":360,"height":360,"left":0,"top":0});
                }else{
                    changeStyle(img,{"width":500,"height":500,"left":-70,"top":-70});
                }
                isClick = !isClick;
            }
            // 改变样式的动画
            function changeStyle(ele,obj){
                clearInterval(ele.timer);
                // 判断动画
                ele.timer = setInterval(function(){
                    for (var key in obj) {
                        //当前属性的值 注意要获得的有的是 xxpx 360px 需要取整
                        // 这里注意一下,当一个属性完成目标 就把它 变成true 所以先边判断目标有没有完成
                        if (obj[key]!=true) {
                            var now = parseInt(css(ele,key));
                            // 速度 = 目标 - 当前
                            var speed = (obj[key] - now)/5;
                            // 因为取整了 所以终有一刻 是和目标相等的
                            speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
                            ele.style[key] = now + speed +"px";
                            if (now == obj[key] ) {
                                obj[key] = true;
                            }
                        }
                    }
                    // 判断目标是否全部完成
                    if (isM(obj)) {
                        clearInterval(ele.timer);
                    }
                },30)
            }
            // 有任何一个不为true 就返回false
            function isM(obj){
                var ism = true;
                for(var key in obj){
                    if (obj[key]!=true) {
                        ism = false;
                    }
                }
                return ism;
            }
        }
    </script>
</body>
</html>

相关文章

网友评论

      本文标题:javascript点击图片逐渐放大效果

      本文链接:https://www.haomeiwen.com/subject/lvwdmttx.html