多图片睁开压缩实例

应用活动框架举行多图片睁开压缩的实例展现

在展现时未插进去图片用ul li 来替代

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>多图片的睁开压缩</title>
    <style type="text/css">
    body {margin:0;}
    #ul1 {margin:0;padding: 0;width: 330px;margin:100px auto 0;position: relative;}
    li {width: 100px;height: 100px;background: red;float: left;list-style:none;margin:10px 0 0 10px;}
    </style>
    <script type="text/javascript" src="move.js"></script>
    <script type="text/javascript">
    /*元素居中放大:除了要转变元素的宽高之外,还要转变元素定位(left top)
    因为在页面规划时点是依据元素的左上角即(left,top)来盘算的
    假如图片放大一倍则位移为放大宽高的一半
    经由过程顺序将浮动的图片转化为定位 不需要经由过程css一个个举行设定
    */ 

    window.onload = function() {
        //在转换规划的,相对用户眼睛的位置的坚持稳定
        //offsetLeft[Top]当前元素到定位负极的间隔 到当前元素的offsetParent的间隔
        /*
        offsetLeft[Top]也存在兼容性问题:
        IE7:
        假如父级有定位
         假如本身有定位,那末就是到定位父级的间隔
         假如本身没有定位,那末offsetLeft是到body的间隔
        假如父级没有定位
         offsetParent->body
         offsetLeft->html
         */
        var oUl = document.getElementById('ul1');
        var aLi = document.getElementsByTagName('li');
        var arr = [];
        var zIndex = 1;//进步层级

        for (var i = 0; i < aLi.length; i++) {
            
            arr.push({
                left:aLi[i].offsetLeft,
                top:aLi[i].offsetTop
            })//防备移入后再次移入时 值会再次转变
        }

        for (var i = 0; i < aLi.length; i++) {
            //在应用js设置css款式的时刻:在同一个代码块中,有些css款式的设置的权限要高于其他款式
            // aLi[i].style.left = aLi[i].offsetLeft+'px';
            // aLi[i].style.top = aLi[i].offsetTop+'px';
            aLi[i].index = i;
            
            aLi[i].style.left = arr[i].left+'px';
            aLi[i].style.top = arr[i].top+'px';

            aLi[i].style.position = 'absolute';//会被优先剖析 先定位后获值 
            //因为left值和margin值不会掩盖 会累加盘算 故需要将margin值清零
            aLi[i].style.margin = '0px';


            aLi[i].onmouseover = function(){

                this.style.zIndex = zIndex++;

                startMove(this,
                    {
                        height:200,
                        width:200,
                        left:arr[this.index].left-50,
                        top:arr[this.index].top-50
                    });
            }

            aLi[i].onmouseout = function(){//移除回到本来的状况
                startMove(this,
                    {
                        height:100,
                        width:100,
                        left:arr[this.index].left,
                        top:arr[this.index].top
                    });
            }
        }
    }
    </script>
</head>
<body>
    <ul id="ul1">
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</body>
</html>

引入的活动框架代码

function startMove(obj, json, fn) {
    clearInterval(obj.iTimer);
    var iCur = 0;
    var iSpeed = 0;
        
    obj.iTimer = setInterval(function() {
        
        var iBtn = true;
                    
        for ( var attr in json ) {
                            
            var iTarget = json[attr];
            
            if (attr == 'opacity') {
                iCur = Math.round(css( obj, 'opacity' ) * 100);
            } else {
                iCur = parseInt(css(obj, attr));
            }
            
            iSpeed = ( iTarget - iCur ) / 8;
            iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
            
            if (iCur != iTarget) {
                iBtn = false;
                if (attr == 'opacity') {
                    obj.style.opacity = (iCur + iSpeed) / 100;
                    obj.style.filter = 'alpha(opacity='+ (iCur + iSpeed) +')';
                } else {
                    obj.style[attr] = iCur + iSpeed + 'px';
                }
            }
            
        }
        
        if (iBtn) {
            clearInterval(obj.iTimer);
            fn && fn.call(obj);
        }
        
    }, 30);
}

function css(obj, attr) {
    if (obj.currentStyle) {
        return obj.currentStyle[attr];
    } else {
        return getComputedStyle(obj, false)[attr];
    }
}
    原文作者:做一块西瓜太郎
    原文地址: https://segmentfault.com/a/1190000007015288
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞