首页 > 代码库 > [JavaScript案例]360度全景照片

[JavaScript案例]360度全景照片

案例: 360度全景照片 鼠标在页面上滑动时图片表现的物体会随着移动方向进行旋转,从而呈现360度物体旋转效果

思路: 将所有的图片都放入指定容器内,通过切换相应的照片隐藏与显示来实现旋转效果

代码:

<!DOCTYPE html><html lang="zh-CN">    <head>        <meta charset="UTF-8">        <meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">        <title>Document</title>        <script type="text/javascript" src="360.js"></script>    </head>    <body>        <div class="container" id="page750">            <img src="img/1.png">        </div>    </body></html>
html,body{    margin: 0;    padding: 0;}.container{    display: flex;}img{    display: block;    margin: auto;}
window.onload = function(){    var container = document.getElementById("page750");    /*        一次性将所有的图片标签加入     */    var imgCount = 40;    var lastStartX = 0;    var iSpeed = 0;    var timer;    var _disX;    for(var i = 2; i <= imgCount; i++){        (function(i){            var img = new Image();            var imgNode = document.createElement("img");            img.onload = function(){                imgNode.src = this.src;                imgNode.style.display = "none";                container.appendChild(imgNode);            };            img.src = "img/"+i+".png";}        )(i);    }    var imgNodes = container.getElementsByTagName("img");    var lastImgNode = container.getElementsByTagName("img")[0];    var startX = 0;    function mouseDownHandler(event){        console.log("mouse down");        clearInterval(timer);        startX = event.clientX;        document.addEventListener("mousemove", mouseMoveHandler);        document.addEventListener("mouseup", mouseUpHandler);        return false;    }    function mouseMoveHandler(event){        console.log("mouse move");        disX = event.clientX - startX;        move();        iSpeed = _disX - lastStartX;        lastStartX = _disX;        document.title = _disX;        return false;    }    function mouseUpHandler(event){        console.log("mouse up");        document.removeEventListener("mousemove", mouseMoveHandler);        document.removeEventListener("mouseup", mouseUpHandler);        document.title = iSpeed;        timer = setInterval(function(){            if(iSpeed>0){                iSpeed--;            }else{                iSpeed++;            }            if(iSpeed==0){                clearInterval(timer);            }            disX += iSpeed;            move();        }, 20);    }    function move(){        _disX = parseInt(disX/20);        if(_disX>0){            _disX = disX%imgCount;        }else{            _disX = disX - Math.floor(disX/imgCount)*imgCount;        }        if(lastImgNode != imgNodes[_disX]){            lastImgNode.style.display = "none";            imgNodes[_disX].style.display = "block";            lastImgNode = imgNodes[_disX];        }    }    document.addEventListener("mousedown", mouseDownHandler);};

 

[JavaScript案例]360度全景照片