3D Flip

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style id="css">
    *{
        margin: 0;
        padding: 0;
    }
    li{
        list-style-type: none;
    }
    .wrap{
        width: 500px;
        height: 300px;
        margin: 50px auto;
        box-shadow: 0 0 120px #333;
        position: relative;
    }
    /*..................li style.................*/
    .piclist{
        width: 100%;
        height: 300px;    /*caution*/
        -webkit-perspective:800px;    /*景深*/
        overflow: hidden;
    }
    .piclist li{
        height: 300px;
        position: relative;
        float: left;

        -webkit-transform-style:preserve-3d;
        -webkit-transform-origin:center center -150px; /*注意-150px*/
    }
    .piclist li a{
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
    }
    .piclist li a:nth-of-type(1){
        background: url(a.jpg) no-repeat;
    }
    .piclist li a:nth-of-type(2){
        background: url(b.jpg) no-repeat;

        top: -300px;
        -webkit-transform-origin:bottom;
        -webkit-transform:rotateX(90deg);
        /*-webkit-transform-origin:top;
        -webkit-transform:rotateX(-90deg);*/
    }
    .piclist li a:nth-of-type(3){
        background: url(c.jpg) no-repeat;

        -webkit-transform:translateZ(-300px) rotateX(180deg);    /*翻转过来*/
    }
    .piclist li a:nth-of-type(4){
        background: url(d.jpg) no-repeat;

        top: 300px;
        -webkit-transform-origin:top;
        -webkit-transform:rotateX(-90deg);
        /*-webkit-transform-origin:bottom;
        -webkit-transform:rotateX(90deg);*/
    }
    .piclist li span{
        background-color: #333;
        position: absolute;
        top: 0;
        width: 300px; /*注意这里大小和a的大小是不一样的喔*/
        height: 300px;
    }
    .piclist li span:nth-of-type(1){
        left: 0;    /*靠左*/

        -webkit-transform-origin:left;
        -webkit-transform:rotateY(90deg);
    }
    .piclist li span:nth-of-type(2){
        right: 0;    /*靠右*/

        -webkit-transform-origin:right;
        -webkit-transform:rotateY(-90deg);
    }
    /*......................btn sytle............*/
    .btnlist{
        position: absolute;
        right: 0;
        bottom: -50px;
    }
    .btnlist li{
        float: left;
        width: 30px;
        height: 30px;
        text-align: center;
        background-color: gray;
        margin-right: 10px;
        border-radius: 50%;
        font: italic 16px/30px "Arial";
        cursor: pointer;
        color: #fff;
        -webkit-user-select:none;
    }
    .btnlist .active{
        background-color: orange;
    }
    </style>
</head>
<body>
    <div class="wrap">
        <ul class="piclist" id="piclist">
            <!-- <li>
                <a href="javascript:;"></a>
                <a href="javascript:;"></a>
                <a href="javascript:;"></a>
                <a href="javascript:;"></a>
                <span></span>
                <span></span>
            </li> -->
        </ul>
        <ol class="btnlist" id="btnlist">
            <li class="active">1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
        </ol>
    </div>
    <script>
    var oPic=document.getElementById("piclist");
    var aPicList=oPic.getElementsByTagName("li");
    var oBtn=document.getElementById("btnlist");
    var aBtnLi=oBtn.getElementsByTagName("li");
    var oCss=document.getElementById("css");
    var sCss="";

    var oneW=100;    //调整此li宽度或间隔时间来调整效果
    var iNum=parseInt(oPic.clientWidth/oneW);
    var iZindex=0;
    var sPic="";
    var arrZ=[];
    for(var i=0;i<iNum;i++){
        i>iNum/2?iZindex--:iZindex++;
        arrZ.push(iZindex);
        sPic+=‘<li><a href="javascript:;"></a><a href="javascript:;"></a><a href="javascript:;"></a><a href="javascript:;"></a><span></span><span></span></li>‘;
        sCss+=".piclist li:nth-of-type("+(i+1)+"){z-index:"+iZindex+";}";    //z-index:iZindex(X)凡是(只有)变量都是"+var+",此地外层用双引号
        sCss+=".piclist li:nth-of-type("+(i+1)+") a{background-position:-"+oneW*i+"px 0;}";
    }
    oPic.innerHTML=sPic;
    oCss.innerHTML+=sCss;
    //或者这样加z-index
    // for(var i=0;i<iNum;i++){
    //     aPicList[i].style.zIndex=arrZ[i];  //一定要在oPic.innerHTML=sPic;后设置z-index
    // }

    for(var i=0;i<aPicList.length;i++){
        aPicList[i].style.width=oneW+"px";
    }
    var iNow=0;
    for(var i=0;i<aBtnLi.length;i++){
        (function(index){
            aBtnLi[index].onclick=function(){
                for(var i=0;i<aPicList.length;i++){
                    aPicList[i].style.WebkitTransition=".5s "+i*100+"ms";
                    aPicList[i].style.WebkitTransform="rotateX(-"+(index*90)+"deg)";    //index*90
                }

                //console.log(index);
                aBtnLi[iNow].className="";
                aBtnLi[index].className="active";    //注意这里aBtnLi[index]
                iNow=index;
            };
        })(i);
    }
    </script>
</body>
</html>
时间: 2024-11-20 09:07:36

3D Flip的相关文章

[转]Flash、Flex、AS3.0框架及类库资源收集之十全大补

原文地址:http://www.d5power.com/portal.php?mod=view&aid=27 APIs.Libs.Components1.as3ebaylibhttp://code.google.com/p/as3ebaylib/2.as3youtubelibhttp://code.google.com/p/as3youtubelib/3.as3flickrlibhttp://code.google.com/p/as3flickrlib/4.Yahoo ASTRA Flash C

jQuery演示10种不同的切换图片列表动画效果

经常用到的图片插件演示jQuery十种不同的切换图片列表动画效果 在线演示 下载地址 实例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 <!DOCTYPE html> <html lang="en" class="no-

抄袭几个好看的模态弹窗(可用为弹窗登录)

先写上一段js代码: 1 var overlay = document.querySelector( '.md-overlay' ); 2 3 [].slice.call( document.querySelectorAll( '.md-trigger' ) ).forEach( function( el, i ) { 4 5 var modal = document.querySelector( '#' + el.getAttribute( 'data-modal' ) ), 6 close

模拟 安卓 Toast 提示, CSS3 19种特效随意挑

JS: /** * 显示提示框 * @param {Object} id */ function showModel(content){ $(".md-content").html(content) ; $("#modalCustom").addClass("md-show"); t = setTimeout('hideModel("modalCustom")', 3000); } /** * 隐藏提示框 * @param {

android 细节之 旋转动画

Flip Animation for Android: 最近项目中用到了一个小动画,让物体实现一定的3D旋转效果,现记录如下: public class FlipAnimation extends Animation { private Camera mCamera; private View mFromView; private View mToView; private float mCenterX; private float mCenterY; private boolean mForw

flip动画前后转3D功能

CATransition *animation = [CATransition animation]; animation.duration = 1.5; [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; animation.type = @"oglFlip"; animation.subtype = kCATransit

基于HTML5快速搭建3D机房设备面板

以真实设备为模型,搭建出设备面板,并实时获取设备运行参数,显示在设备面板上,这相比于纯数值的设备监控系统显得更加生动直观.今天我们就在HT for Web的3D技术上完成设备面板的搭建. 我们今天模拟的设备是机房设备,先来目睹下最终效果:http://www.hightopo.com/demo/blog_3d_20150810/server.html 我来解释下这个模型,一个带有透明玻璃门的机柜,机柜里装有5台设备,门可以开合,设备可以插拔,那么我么该如何搭建这样的设备呢?方法不难,我们一步一步

使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)

上文<使用 VS2017 和 js 进行桌面程序开发 - electron 之 Hello Word>介绍了如何使用 VS2017 开发 electron 桌面程序,今天来点有看头的,但是没什么技术含量,囧~~ 现在什么都讲究追赶潮流,觉得 QQ 登录窗口做的效果不错,既然刚学习 electron ,那么就用 electron 模仿一下.其实主要用到的就是 CSS3 的效果:边框圆角.阴影,3D变换.对,就这么简单.先上效果: 下面是关键代码: app.js 'use strict'; con

jquery图片3D旋绕效果 rotate3Di的操作

这是一个图片效果,很简单实用,只需要一个"rotate3Di.js"的插件就行, 关于rotate的用法有如下几种: $(选择器).rotate3Di(30); //把图片3D旋转30度 $(选择器).rotate3Di(180, 1000);//经过1s把图片3D顺时针旋转180度 $(选择器).rotate3Di('-=180', 1000);//每过1s把图片3D逆时针旋转180度 $(选择器).rotate3Di('flip', 1000);//经过1s把图片逆时针旋转180度