3D旋转相册的实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name = "JiangLiang" Date = "2017/11/23">
    <title>回忆无痕</title>
</head>
    <style>
        *{
            margin:0;
            padding:0;
        }
        body{
            background-color: #000;
            overflow: hidden;
        }
        #show{
            perspective:1000px;/* 景深 */
        }
        #warp{
            position:relative;
            width:230px;
            height:330px;
            margin:250px auto;
            transform-style: preserve-3d;/* 3d效果 */
            transform: rotateX(-15deg);/* 按照X轴旋转 */
        }
        #warp img{
            position:absolute;
            top:0px;
            -webkit-box-reflect:below 5px -webkit-linear-gradient(top,rgba(0,0,0,0) 50%,rgba(0,0,0,0.8) 100%);
        }
        audio{
            display:none;
        }
    </style>
<body>
    <div id = "show">
        <div id = "warp">
            <img src="./images/jiangliang (1).jpg" alt="" width="100%" height="100%">
            <img src="./images/jiangliang (2).jpg" alt="" width="100%" height="100%">
            <img src="./images/jiangliang (3).jpg" alt="" width="100%" height="100%">
            <img src="./images/jiangliang (4).jpg" alt="" width="100%" height="100%">
            <img src="./images/jiangliang (5).jpg" alt="" width="100%" height="100%">
            <img src="./images/jiangliang (6).jpg" alt="" width="100%" height="100%">
            <img src="./images/jiangliang (7).jpg" alt="" width="100%" height="100%">

        </div>
    </div>
    <audio src="./mp3/Westlife - Beautiful In White.mp3" controls="controls" autoplay = "auto" loop = "loop"></audio>
</body>
<script>
    var oimg = document.getElementsByTagName("img");
    var nowX , nowY , lastX , lastY , minusX , minusY , roX = -5 , roY = 0 ;
    var oWarp = document.getElementById("warp");
    var timer = null;

(function(i){
    var Ilenth = oimg.length;
    var deg = 360/Ilenth;
    for(;i < Ilenth; i++){
        oimg[i].style.transform = "rotateY("+deg*i+"deg) translateZ(400px)";
    }
})(0);

document.onmousedown = function (e){/*鼠标按下时事件*/
    var e = e || window.event ;/*event对象*/

    lastX = e.clientX;
    lastY = e.clientY;

    this.onmousemove = function(e){/*鼠标移动时事件*/
        var e = e || window.event ;
        nowX = e.clientX;
        nowY = e.clientY;

        minusX = nowX - lastX;
        minusY = nowY - lastY;

        roY += minusX *0.2;
        roX += minusY *0.1;

        oWarp.style.transform = "rotateX("+roX+"deg) rotateY("+roY+"deg)";

        lastX = nowX;
        lastY = nowY;

        this.onmouseout = function(){/*鼠标离开时事件*/
            this.onmousemove  =  null;
            timer = setInterval(function(){
                minusX *=0.9;
                minusY *=0.9;

             roY += minusX *0.2;
            roX += minusY *0.1;

            oWarp.style.transform = "rotateX("+roX+"deg) rotateY("+roY+"deg)";

            if(Math.abs(minusX) < 0.1 || Math.abs(minusY) < 0.1){

                clearInterval(timer);/*停止当时定时器*/
            }
            }, 1000/60);

        }
    }
}

</script>
</html>

预览图:

时间: 2024-08-30 10:35:32

3D旋转相册的实现的相关文章

css3+jquery制作3d旋转相册&lt;转&gt;

css3+jquery制作3d旋转相册 首先来看一下今天的炫酷效果: 首先分析一下这张图片: 1.每张图片都有倒影 2.这11张图片呈圆形均匀排列 3.可旋转,上下移动(当然这是效果做出来以后,图片是分析不出来的) 那下面就开始吧. 一.准备 新建三个文件夹分别命名为css,js,img分别存放demo.css,jquery.js.demo.js,11张示例图片.新建demo.html将demo.css,jquery.js,demo.js引入. 二.图片倒影制作 1 <div id="wr

3D旋转相册(适合新手)

<!DOCTYPE HTML> <html onselectstart="return false"> <head> <meta charset="utf-8"> <title>3D拖拽相册</title> <style> html,body{ width: 100%; height: 100%; overflow: hidden; cursor: url("img/sb.

css3制作3d旋转相册

此处只是记录,解析可见原文:http://www.cnblogs.com/skyblue-li/p/6092799.html <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> &l

CSS3实现3D旋转相册

静态效果图: 代码如下: <!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> *{margin: 0;padding: 0;} ul{ width: 200px; height: 200px; list-style: none; margin: 100

解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果

解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果 一.前言 最初还是在抖音上看到可以使用简单地代码实现炫酷的网页效果的,但是想要找到可以运行的代码还是比较困难的,最近突然想起就在网上汇总了一些这样的代码. 二.3D效果代码 2.1.旋转相册 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>旋转相

3D旋转菜单

今天来个3D旋转菜单,是纯css3实现的,主要用到transform,transition,backface-visibility. 主要是transform这个变换,它是今天猪脚. transform里有transform-style 属性规定如何在 3D 空间中呈现被嵌套的元素. transform-origin 属性允许您改变被转换元素的位置. backface-visibility 属性定义当元素不面向屏幕时是否可见. 代码: <!DOCTYPE html> <html lang

CSS3——3D旋转图(跑马灯效果图)

CSS3新增了很多新的属性,可以用很少的代码实现炫酷的动画效果,但由于兼容性各浏览器的能力存在不足,有特别需求的网站就呵呵啦.H5C3已是大势所趋了,之前看过一个新闻,Chrome将在年底全面转向H5,抛弃了Flash.. 本案例主要使用了CSS3中的变换transform和动画animation属性,实现了跑马灯效果,详细的解释在代码中的注释中. 做好布局之后的效果图 添加了animation样式,实现自动旋转,并且鼠标移入,停止动画.(鼠标移入,绕Z轴旋转90度) 代码: 1 <!DOCTY

【小松教你手游开发】【系统模块开发】做一个3d旋转菜单

在unity做一个3d旋转菜单,像乱斗西游2的这种: 暂时有两种方法可以实现: 一.当做是2d界面,通过定义几个固定点的坐标.大小.透明度,还有每个点的panel depth大小,把数据存储下来,在手机滑动的过程中计算滑动划过的距离和这个panel大小的比值,乘以两个点之间的距离,获得坐标点移动的距离,通过改变x轴改变位置,同理改变大小和透明度. 这个方法我自己做2d游戏的时候实现过,做起来比较简单,没有什么可拓展性可言,并且会有很多限制,比如拖动过程中很难转变方向.要自己实现运动中的弹性(这里

CSS3——3D翻转相册

transform属性和transition过渡属性,结合jQuery代码实现翻转功能. 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>3d翻转相册</title> 6 <script src="jquery-3.0.0.min.js"></sc