zoukankan      html  css  js  c++  java
  • 利用css3和js实现旋转木马图片小demo

    先看效果图:

    上源码

    html代码

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <link rel="stylesheet" href="./index.css">
    </head>
    
    <body>
        <div class="box">
            <img src="./img/1.png" alt="">
            <img src="./img/2.png" alt="">
            <img src="./img/3.png" alt="">
            <img src="./img/4.png" alt="">
            <img src="./img/5.png" alt="">
            <img src="./img/6.png" alt="">
            <img src="./img/1.png" alt="">
            <img src="./img/2.png" alt="">
            <img src="./img/3.png" alt="">
            <img src="./img/4.png" alt="">
            <img src="./img/5.png" alt="">
            <img src="./img/6.png" alt="">
        </div>
        <script src="./jquery-3.3.1.js"></script>
        <script src="./index.js"></script>
    </body>
    
    </html>

    css代码

    *{
        margin:0;
        padding:0;
    }
    html,body{
        width:100%;
        height:100%;
        background-image:radial-gradient(circle at center center,rgba(244,23,234,0.2),rgba(0,0,0));
        background-color:#000;
        overflow: hidden;
        perspective: 1000px;
    }
    .box{
        position: relative;
        width:120px;
        height:180px;
        margin:200px auto;
        transform-style:preserve-3d; 
    }
    .box img{
        position: absolute;
        width:100%;
        height:100%;
        -webkit-box-reflect: below 10px -webkit-linear-gradient(top,rgba(0,0,0,0) 40%,rgba(0,0,0,0.5) 100%);   /*倒影*/
    }

    js(jquery)代码

    window.onload = function () {
        var img = $('img');
        var len = img.length;
        var deg = 360 / len;
        for (var i = 0; i < len; i++) {
            $('img').eq(i).css({
                'transform': 'rotateY(' + i * deg + 'deg) translateZ(300px)',
                'transition': 'transform 0.5s linear ' + (len - 1 - i) * 0.1 + 's'
            }) //实现 刚开始的发牌效果。
        };
        bindEvent();
    }
    function bindEvent() {
        var box = $('.box');
        var body = $('body');
        var lastX, lastY, nowX, nowY, disX, disY;
        var roX = 0, roY = 0;
        var timer;
        body.on('mousedown', function (e) {
            clearInterval(timer);
            lastX = e.clientX;
            lastY = e.clientY;
            body.on('mousemove', function (e) {
                nowX = e.clientX;
                nowY = e.clientY;
    
                disX = nowX - lastX;
                disY = nowY - lastY;
    
                roX -= disY * 0.2;
                roY += disX * 0.2;
    
                roX = roX % 360;
                roY = roY % 360;
    
                box.css({
                    'transform': 'rotateX(' + roX + 'deg) rotateY(' + roY + 'deg)',
                });
    
                lastX = nowX;
                lastY = nowY;
            })
            return false;
        }).on('mouseup', function () {
    
            body.off('mousemove');
            // 以下是缓冲
            timer = setInterval(function () {
                disX *= 0.95;
                disY *= 0.95;
                roX -= disY * 0.5;
                roY += disX * 0.5;
    
                roX = roX % 360;
                roY = roY % 360;
    
                box.css({
                    'transform': 'rotateX(' + roX + 'deg) rotateY(' + roY + 'deg)',
                });
    
                if (Math.abs(disX) < 0.01 && Math.abs(disY) < 0.01) {
                    clearInterval(timer);
                }
    
            }, 20);
        });
    }
  • 相关阅读:
    Linux下常用的ctrl命令
    网络编程函数笔记(二)
    javascript中函数构造器和原型研究
    javascript对象定义需开辟内存空间才能访问
    读取iframe里面的js全局变量
    网络编程函数笔记(一)
    Inside.MySQL_InnoDB.Storage.Engine 学习笔记
    jquery对象原理笔记(一)
    javascript(一)正则表达式
    c++学习笔记(模板)(一)
  • 原文地址:https://www.cnblogs.com/yanggeng/p/11339543.html
Copyright © 2011-2022 走看看