初学制作3D旋转木马

---恢复内容开始---

1.1.  旋转木马轮播图思路

@数组操作方法复习

arr.push("要添加的元素")    在数组的最后添加值 并返回新数组的长度

arr.pop()      删除最后一个值   并将其返回

arr.unshift("要添加的元素")  在数组的开头添加值 并返回新数组的长度

arr.shift()      删除第一个值   并将其返回

@旋转木马

获取元素

鼠标经过wrap显示arrow

给每个li赋json值

点击左右箭头 调整数组

//点左键 配置单 删掉最后一个 加在开始

//点右键 配置单 删掉第一个 加在最后

将赋json值的方法抽取

点击箭头的时候执行

页面加载完先执行一次

设置节流阀

第一步设置css样式:代码如下

 1 @charset "UTF-8";
 2 /*初始化  reset*/
 3 blockquote,body,button,dd,dl,dt,fieldset,form,h1,h2,h3,h4,h5,h6,hr,input,legend,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0}
 4 body,button,input,select,textarea{font:12px/1.5 "Microsoft YaHei", "微软雅黑", SimSun, "宋体", sans-serif;color: #666;}
 5 ol,ul{list-style:none}
 6 a{text-decoration:none}
 7 fieldset,img{border:0;vertical-align:top;}
 8 a,input,button,select,textarea{outline:none;}
 9 a,button{cursor:pointer;}
10
11 .wrap{
12     width:1200px;
13     margin:100px auto;
14 }
15 .slide {
16     height:500px;
17     position: relative;
18 }
19 .slide li{
20     position: absolute;
21     left:200px;
22     top:0;
23 }
24 .slide li img{
25     width:100%;
26 }
27 .arrow{
28     opacity: 0;
29 }
30 .prev,.next{
31     width:76px;
32     height:112px;
33     position: absolute;
34     top:50%;
35     margin-top:-56px;
36     background: url(../images/prev.png) no-repeat;
37     z-index: 99;
38 }
39 .next{
40     right:0;
41     background-image: url(../images/next.png);
42 }

第二步:调用js缓动运动函数代码

function animate(obj, json, fn) {
    clearInterval(obj.timer);
    obj.timer = setInterval(function () {
        var flag = true;
        for (var k in json) {
            //json 属性名:属性值 k:json[k]
            if (k == "opacity") {
                var leader = parseInt(getStyle(obj, k) * 100);
                var target = json[k] * 100;
                var step = (target - leader) / 10;
                step = step > 0 ? Math.ceil(step) : Math.floor(step);
                leader = leader + step;
                obj.style[k] = leader / 100;
            } else if (k == "zIndex") {
                obj.style[k] = json[k];
            } else {
                var leader = parseInt(getStyle(obj, k)) || 0;
                var target = json[k];
                var step = (target - leader) / 10;
                step = step > 0 ? Math.ceil(step) : Math.floor(step);
                leader = leader + step;
                obj.style[k] = leader + "px";
            }

            if (leader != target) {
                flag = false;
            }
        }
        if (flag) {
            clearInterval(obj.timer);
            if (fn) {
                fn();
            }
        }
    }, 10)
}

function getStyle(obj, attr) {
    if (obj && obj.currentStyle) {
        return obj.currentStyle[attr];//IE678
    } else {
        return window.getComputedStyle(obj, null)[attr];
    }
}

第三步:主体架构实现

  1 <!DOCTYPE html>
  2 <html>
  3 <head lang="en">
  4     <meta charset="UTF-8">
  5     <title>旋转木马轮播图</title>
  6     <link rel="stylesheet" href="css/css.css"/>
  7     <script type="text/javascript" src="js/animate.js"></script>
  8     <!--<script type="text/javascript" src="js/my.js"></script>-->
  9 </head>
 10 <body>
 11 <div class="wrap" id="wrap">
 12     <div class="slide" id="slide">
 13         <ul>
 14             <li class="one"><a href="#"><img src="images/bingbing.jpg" alt=""/></a></li>
 15             <li class="two"><a href="#"><img src="images/lingengxin.jpg" alt=""/></a></li>
 16             <li class="three"><a href="#"><img src="images/yuanyuan.png" alt=""/></a></li>
 17             <li class="four"><a href="#"><img src="images/slidepic4.jpg" alt=""/></a></li>
 18             <li class="five"><a href="#"><img src="images/slidepic5.jpg" alt=""/></a></li>
 19         </ul>
 20         <div class="arrow" id="arrow">
 21             <a href="javascript:;" class="prev" id="arrLeft"></a>
 22             <a href="javascript:;" class="next" id="arrRight"></a>
 23         </div>
 24     </div>
 25 </div>
 26 <script>
 27     window.onload = function () { // 当整个页面元素都渲染或是加载 完毕 的时候触发
 28         //1. 获得要操作的对象
 29         var wrap = document.getElementById("wrap");
 30         var slideBox = document.getElementById("slide");
 31         var ul = slideBox.children[0];
 32         var lis = ul.children;
 33         var arrow = document.getElementById("arrow");
 34         var left = document.getElementById("arrLeft");
 35         var right = document.getElementById("arrRight");
 36
 37         var config = [
 38             {
 39                 "width": 400,
 40                 "top": 20,
 41                 "left": 50,
 42                 "opacity": 0.2,
 43                 "zIndex": 2
 44             },//0
 45             {
 46                 "width": 600,
 47                 "top": 70,
 48                 "left": 0,
 49                 "opacity": 0.8,
 50                 "zIndex": 3
 51             },//1
 52             {
 53                 "width": 800,
 54                 "top": 120,
 55                 "left": 200,
 56                 "opacity": 1,
 57                 "zIndex": 4
 58             },//2
 59             {
 60                 "width": 600,
 61                 "top": 70,
 62                 "left": 600,
 63                 "opacity": 0.8,
 64                 "zIndex": 3
 65             },//3
 66             {
 67                 "width": 400,
 68                 "top": 20,
 69                 "left": 750,
 70                 "opacity": 0.2,
 71                 "zIndex": 2
 72             }//4
 73         ]; //其实就是一个配置单 规定了每张图片的大小位置层级透明度
 74
 75         //2. 当鼠标移入的时候,显示左右按钮
 76         wrap.onmouseover = function(){
 77             animate(arrow,{"opacity":1});
 78         };
 79         wrap.onmouseout = function(){
 80             animate(arrow,{"opacity":0});
 81         };
 82
 83         //其实就是一个配置单 规定了每张图片的大小位置层级透明度
 84         assige(); //先调用一下,让原来的每个li走到指定的位置
 85
 86         function assige(){
 87             for(var i=0;i<lis.length;i++){
 88                 animate(lis[i],config[i],function(){
 89                     flag = true; //在这里变成true,也就是说前面的li都扫完完毕 了,都走到了配置文件中的指定位置
 90                 });
 91             }
 92         }
 93
 94         var flag = true; //就表示当前的所有的li都走到了指定的位置
 95         // 3. 点击右侧按钮的时候
 96         right.onclick = function(){
 97             if(flag){
 98                 flag = false;
 99                 config.push(config.shift()); //将数组中的第一项删除,添加到数组的最后
100                 assige(); // 根据新生成的数组配置文件重新渲染每个li
101             }
102         }
103
104         left.onclick = function(){
105             if(flag){
106                 flag = false;
107                 config.unshift(config.pop()); // 删除数组中的最后一项,添加到数组的最前面
108                 assige(); //根据新生成的配置文件数组,重新让li走到指定的位置
109             }
110         };
111
112         // 4. 添加节流阀(flag标识,让每个li渲染完毕之后才进行下一次操作,一直保持淡入淡出较慢的速度显示)
113     }
114 </script>
115 </body>
116 </html>

以上结束(所用到的图片如下,第一次写)

实现效果如下:

---恢复内容结束---

时间: 2024-10-14 10:18:58

初学制作3D旋转木马的相关文章

jQuery炫酷3d旋转木马特效插件

这是一款使用TweenMax.js制作的jQuery超酷3D旋转木马特效.该旋转木马特效可以感应鼠标的位置而使旋转木马做出相应的变化,效果非常炫酷. 在线演示:http://www.htmleaf.com/Demo/201502231410.html 下载地址:http://www.htmleaf.com/jQuery/Slideshow-Scroller/201502231409.html

张瀚荣:如何用UE4制作3D动作游戏

转自:http://www.gamelook.com.cn/2015/06/218267 GameLook报道/ 6月5日,2015年第三期GameLook开放日?虚幻引擎专场活动在上海正式举行,此次活动由Epic Games与GameLook联合主办. 动作游戏凭借爽快的打击感和强烈的操作感一直受到玩家的喜爱,但一些高品质的3D动作游戏设计其实颇有难度,国内市场上常见的大多是横版2D游戏.本次活动上,Megafun的创始人张瀚荣来分享了利用UE4引擎制作3D横版动作游戏的心得. 张瀚荣从策划的

HTML5 CSS3 专题 :诱人的实例 3D旋转木马效果相册

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/32964301 首先说明一下创意的出处:http://www.zhangxinxu.com/study/201209/pictures-3d-slide-view.html(张鑫旭的博客 ),对前台感兴趣的可以没事去看看他的博客,很给力~ 这篇博客的目的是因为上篇HTML5 CSS3专题 诱人的实例 CSS3打造百度贴吧的3D翻牌效果中有个关于CSS 3D效果的比较重要的知识点没

Unity 进度条3D制作(3D版)

昨天我们一起学习了2D进度跳的制作,那么趁着我们脑海中还残存昨日的记忆,今天继续学习另一种方法: 实现思路:当鼠标悬浮Start按钮->实例化物体并显示进度->100/100->进入游戏场景:   鼠标离开按钮进度还原为 0/100    直接点击Start按钮也可完成. 1,首先我们导入NGUI资源包,在当前工程的场景下创建UI. 2,在Herarchy下添加平行光,在Panel下添Button. 此处Background没有选择背景图片,即背景色为默认值,此处label设置字体显示S

Unity3D制作3D虚拟漫游场景(二)

传送门: Unity3D制作3D虚拟漫游场景(一) -------------------------------------------------------------------------- 昨天已经完成了场景的基本搭建,今天先简单的实现城市漫游功能,具体细节之后再进行添加 1.导入人物 在Assets文件夹下,新建一个文件夹,用于存放预制体,命名为Prefabs 打开昨天导入进去的SimplePeople资源包,打开其中的示例场景,然后我们可以进去挑选人物啦~ 博主在这里选了一个画风

那些视频制作软件可以制作3D字幕

如今3D似乎已经成为广大年轻人追崇的对象,电影.电视都是3D的了.对于爱摄影和喜欢DIY视频的年轻人,制作匹配的3D字幕是个不小的挑战.3D字幕制作软件哪个好? 查看更多内容可直接前往:http://www.huishenghuiying.com.cn/pou-xi-3d-na-ge-hao.html 会声会影是市场上功能比较齐全且操作方便的视频编辑软件,经过多年的开发和技术完善,制作3D字幕是完成能够实现了.下面就详细看看会声会影是如何将文件标记为3D这一简易的操作过程. 会声会影提供4个选项

ZAM 3D 制作3D动画字幕 用于Xaml导出

原地址-> http://www.cnblogs.com/yk250/p/5662788.html 介绍:对经常使用Blend做动画的人来说,ZAM 3D 也很好上手,专业制作3D素材的XAML导出动画和布局. 效果图如下:用ZAM 3D制作 然后导出XAML.详细步骤,以后放出. 生成的布局XAML如下: 1 <Grid> 2 <Viewbox Stretch="None"> 3 <Viewport3D x:Name="ZAM3DView

unity3d学习笔记(十九)--ngui制作3d人物头顶的头像和血条

原地址:http://blog.csdn.net/lzhq1982/article/details/18793479 本系列文章由Aimar_Johnny编写,欢迎转载,转载请标明出处,谢谢. http://blog.csdn.net/lzhq1982/article/details/18793479 先上张图,自己做的一个demo. 这里的人物头像和血条是在3d世界生成的,所以有真正的纵深感和遮挡关系,废话不多说,看我是怎么实现的. 第一步,先在UI Root里制作头像和血条. 这个制作步骤基

HTML5 CSS3:诱人的3D旋转木马效果相册实例

HTML5 CSS3:诱人的3D旋转木马效果相册实例 利用HTML5和CSS3实现的3D旋转木马效果相册 下载地址:http://www.devstore.cn/code/info/341.html 运行截图: 相关下载: HTML5 Canvas火焰闪烁动画 火焰跟随鼠标 HTML5仿Apple Watch时钟动画 版权声明:本文为博主原创文章,未经博主允许不得转载.