zoukankan      html  css  js  c++  java
  • 3D跑马灯效果

      睡了13个小时,发烧终于退了,持续2周的感冒看起来终于好了点,这一周一直在看perspective的一些资料,写一个3D跑马灯的效果。

      

      个人感觉主要就是理解视角的概念,也就是perspective和perspective-origin这2个 属性,其他都比较简单。

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>3D跑马灯</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="format-detection" content="telephone=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>
    /*css reset*/
    html{font-family:"Helvetica Neue",Helvetica,STHeiTi,sans-serif;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;}
    body{-webkit-overflow-scrolling:touch;margin:0;}
    ul{margin:0;padding:0;list-style:none;outline:none;}
    dl,dd{margin:0;}
    a{display:inline-block;margin:0;padding:0;text-decoration:none;background:transparent;outline:none;color:#000;}
    a:link,a:visited,a:hover,a:active{text-decoration:none;color:currentColor;}
    a,dt,dd{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;}
    img{border:0;}
    p{margin:0;}
    input,button,select,textarea{margin:0;padding:0;border:0;outline:0;background-color:transparent;}
    
    /*css*/
    body {
        height: 100vh;
        text-align: center;
    }
    .stage {
        position: relative;
        display: inline-block;
        margin: 0 auto;
        padding: 40px 0;
        max-width: 750px;
        perspective: 600px;
    }
    .stage .container {
        position: absolute;
        width: 100px;
        height: 100px;
        transform-style: preserve-3d;
    }
    
    .stage .container .list {
        position: absolute;
        width: 100px;
        height: 100px;
        font-size: 14px;
        text-align: center;
        line-height: 100px;
        /*backface-visibility:hidden;*/
        background-color: #22bfe0;
    }
    </style>
    </head>
    <body>
    <div class="stage">
        <ul id="container" class="container">
        </ul>
    </div>
    <script>
        var doc = document,
            fragment = doc.createDocumentFragment(),
            $ = function(node) {
                return doc.querySelector(node);
            };
    
        var listArr = [0, 1, 2, 3, 4, 5, 6, 7],
            length = listArr.length,
            averRotate = 360 / length,
            averTransZ = 60 / Math.tan((averRotate / 2 / 180) * Math.PI);
    
        listArr.forEach(function(i) {
            var node = doc.createElement('li');
            node.setAttribute('id', 'list' + i);
            node.setAttribute('class', 'list');
            node.innerHTML = i;
            fragment.appendChild(node);
        });
        $('.container').appendChild(fragment);
    
        listArr.forEach(function(i) {
            $('#list' + i).style.transform = 'rotateY(' + i * averRotate + 'deg) translateZ(' + (averTransZ + 20) +'px)';
        });
    
        var index = 0;
        setInterval(function() {
            $('#container').style.transform = 'rotateY(' + ++index + 'deg)';
        }, 1000 / 60)
    </script>
    </body>
    </html>
  • 相关阅读:
    MPTCP iperf 发包方式
    Java 中的覆盖@Override注解 写与不写的一点点理解
    servlet 方法有哪些
    java 获取HTTP 头部信息
    七种访问方式(get post及上传文件)
    Enumeration接口的用法
    HTTP头部详解及使用Java套接字处理HTTP请求
    以debug模式启动tomcat服务器
    第一个servlet 使用out输出html文档
    基于Servlet3.0的文件上传
  • 原文地址:https://www.cnblogs.com/youyouluo/p/7076844.html
Copyright © 2011-2022 走看看