刚刚做了一个图片旋转木马效果,分享出来咯

楼主
我是社区第66158位番薯,欢迎点我头像关注我哦~
页面中间是旋转木马的效果,作为一个不是前端的淫,研究了一天才弄出来,感觉这个应该可以用在大屏或者是首页上。
附件里有这个FRM和css
css我就不写了
FRM 我直接放了一个绝对画布,给他了一个初始化事件
  1. setTimeout(
  2. function(){

  3. $("div[widgetname='ABSOLUTE0']").append("<div id=\"box\"><div class=\"slide\"><ul><li><a href=\"#\"><img src=\"http://img.mukewang.com/52da54ed0001ecfa04120172.jpg\" alt=\"啊啊啊\"></a></li><li><a href=\"#\"><img src=\"http://img.mukewang.com/52da54ed0001ecfa04120172.jpg\" alt=\"啊啊啊\"></a></li><li><a href=\"#\"><img src=\"http://img.mukewang.com/52da54ed0001ecfa04120172.jpg\" alt=\"啊啊啊\"></a></li><li><a href=\"#\"><img src=\"http://img.mukewang.com/52da54ed0001ecfa04120172.jpg\" alt=\"啊啊啊\"></a></li><li><a href=\"#\"><img src=\"http://img.mukewang.com/52da54ed0001ecfa04120172.jpg\" alt=\"啊啊啊\"></a></li></ul><div class=\"arraw\"><a href=\"javascript:;\" class=\"next\"></a><a href=\"javascript:;\" class='prev'></a></div></div></div><script>var box = document.querySelector('#box');var slide = document.querySelector('.slide');var arraw = document.querySelector('.arraw');var lis = document.querySelectorAll('li');var json = [  {   width:400,top:20,left:120,opacity:20,z:2,id:1},{  width:600,top:70,left:50,opacity:60,z:3,id:2},{   width:800,top:100,left:150,opacity:100,z:4,id:3},{ width:600,top:70,left:350,opacity:60,z:3,id:4},{   width:400,top:20,left:370,opacity:20,z:2,id:5}];var next = document.querySelector('.next');var prev = document.querySelector('.prev');var timer = null;var flag = true;move();run();function run(){clearInterval(timer);timer = setInterval(function(){if(flag == true){flag = false;move(true);}},500);}function move(x){if(x != undefined){if(x){json.push(json.shift());}else{json.unshift(json.pop());};};for(var i = 0; i<json.length; i++){animate(lis[i],{width: json[i].width,top: json[i].top,left: json[i].left,opacity: json[i].opacity,zIndex: json[i].z},function(){flag = true;})};}function animate(obj, json, callback){clearInterval(obj.timer);obj.timer = setInterval(function(){var stoped = true;for(var k in json){var leader = 0;if(k == 'opacity'){leader = Math.round(getStyle(obj, k)*100) || 100;}else {leader = parseInt(getStyle(obj, k)) || 0;};var step = (json[k]-leader)/10;step = step > 0? Math.ceil(step) : Math.floor(step);leader = leader + step;if(k == 'opacity'){obj.style[k] = leader/100;obj.style['filter'] = 'alpha(opacity='+ leader +')';}else if(k == 'zIndex'){obj.style['zIndex'] = json[k];console.log(666);}else{obj.style[k] = leader + \"px\";}if(leader != json[k]){stoped = false;}};if(stoped){clearInterval(obj.timer);callback && callback();};},50);};function getStyle(obj, attr){if(obj.currentStyle){return obj.currentStyle[attr];}else{return window.getComputedStyle(obj, null)[attr];};};</script>")


  4.                         
  5. },20);
复制代码
密密麻麻的 也看不清,下面是分开的html和js
  1. <div id="box">
  2. <div class="slide">
  3. <ul>
  4. <li><a href="#"><img src="http://img.mukewang.com/52da54ed0001ecfa04120172.jpg" alt="啊啊啊"></a></li>
  5. <li><a href="#"><img src="http://img.mukewang.com/52da54ed0001ecfa04120172.jpg" alt="啊啊啊"></a></li>
  6. <li><a href="#"><img src="http://img.mukewang.com/52da54ed0001ecfa04120172.jpg" alt="啊啊啊"></a></li>
  7. <li><a href="#"><img src="http://img.mukewang.com/52da54ed0001ecfa04120172.jpg" alt="啊啊啊"></a></li>
  8. <li><a href="#"><img src="http://img.mukewang.com/52da54ed0001ecfa04120172.jpg" alt="啊啊啊"></a></li>
  9. </ul>
  10. <div class="arraw">
  11.   <a href="javascript:;" class="next"></a>
  12.   <a href="javascript:;" class='prev'></a>
  13. </div>
  14. </div>
  15. </div>
复制代码
这个是初始化后添加的div
然后下面这个是js
  1. <script>
  2. var box = document.querySelector('#box');
  3. var slide = document.querySelector('.slide');
  4. var arraw = document.querySelector('.arraw');
  5. var lis = document.querySelectorAll('li');
  6. var json = [  
  7.         {   
  8.                 width:400,
  9.                 top:20,
  10.                 left:120,
  11.                 opacity:20,
  12.                 z:2,
  13.                 id:1
  14.         },
  15.         {  
  16.                 width:600,
  17.                 top:70,
  18.                 left:50,
  19.                 opacity:60,
  20.                 z:3,
  21.                 id:2
  22.         },
  23.         
  24.         {   
  25.                 width:800,
  26.                 top:100,
  27.                 left:150,
  28.                 opacity:100,
  29.                 z:4,
  30.                 id:3
  31.         },
  32.         
  33.         {
  34.                 width:600,
  35.                 top:70,
  36.                 left:350,
  37.                 opacity:60,
  38.                 z:3,
  39.                 id:4
  40.         },
  41.         {   
  42.                 width:400,
  43.                 top:20,
  44.                 left:370,
  45.                 opacity:20,
  46.                 z:2,
  47.                 id:5
  48.         }
  49.         
  50. ];
  51. var next = document.querySelector('.next');
  52. var prev = document.querySelector('.prev');
  53. var timer = null;
  54. var flag = true;
  55. move();
  56. run();
  57. function run(){
  58. clearInterval(timer);
  59. timer = setInterval(function(){
  60. if(flag == true){
  61. flag = false;
  62. move(true);
  63. }
  64. },500);
  65. }
  66. function move(x){
  67. if(x != undefined){
  68. if(x){
  69. json.push(json.shift());
  70. }else{
  71.   json.unshift(json.pop());
  72. };
  73. };
  74. for(var i = 0; i<json.length; i++){
  75. animate(lis[i],{
  76.   width: json[i].width,
  77.   top: json[i].top,
  78.   left: json[i].left,
  79.   opacity: json[i].opacity,
  80.   zIndex: json[i].z
  81. },function(){flag = true;})
  82. };
  83. }
  84. function animate(obj, json, callback){
  85.   clearInterval(obj.timer);
  86.   obj.timer = setInterval(function(){
  87.         var stoped = true;
  88.         for(var k in json){
  89.          var leader = 0;
  90.          if(k == 'opacity'){
  91.           leader = Math.round(getStyle(obj, k)*100) || 100;
  92.          }else {
  93.           leader = parseInt(getStyle(obj, k)) || 0;
  94.          };
  95.          var step = (json[k]-leader)/10;
  96.          step = step > 0? Math.ceil(step) : Math.floor(step);
  97.          leader = leader + step;
  98.          if(k == 'opacity'){
  99.           obj.style[k] = leader/100;
  100.           obj.style['filter'] = 'alpha(opacity='+ leader +')';
  101.          }else if(k == 'zIndex'){
  102.           obj.style['zIndex'] = json[k];
  103.                  console.log(666);
  104.          }else{
  105.           obj.style[k] = leader + "px";
  106.          }
  107.          if(leader != json[k]){
  108.           stoped = false;
  109.           }
  110.          };
  111.          if(stoped){
  112.                 clearInterval(obj.timer);
  113.                 callback && callback();
  114.           };
  115.   },50);
  116. };
  117. function getStyle(obj, attr){
  118.   if(obj.currentStyle){
  119.         return obj.currentStyle[attr];
  120.   }else{
  121.         return window.getComputedStyle(obj, null)[attr];
  122.   };
  123. };
  124. </script>
复制代码
按照我上面的代码就可以实现这个旋转木马了,我们公司的前端和美工都被我问烦了。。。。


编辑于 2018-1-8 10:05  
分享扩散:

沙发
发表于 2017-12-27 17:55:28
效果呢
板凳
发表于 2017-12-27 18:02:49

模板里有啊,我就截了个图,应该可以看懂吧····
地板
发表于 2017-12-27 18:20:27
来自手机
5楼
发表于 2018-1-6 17:32:12
强得不行
6楼
发表于 2018-1-6 21:59:02
楼主,你的frm预览没有效果呢?css放在WebReport\css中了,8.0和9.0都试过了
7楼
发表于 2018-1-7 10:23:18
cherishdqy 发表于 2018-1-6 21:59
楼主,你的frm预览没有效果呢?css放在WebReport\css中了,8.0和9.0都试过了

有效果我 我刚刚下载 然后放在9.0中
css直接放在webreport下面了
8楼
发表于 2018-1-7 14:31:04
1176846029 发表于 2018-1-7 10:23
有效果我 我刚刚下载 然后放在9.0中
css直接放在webreport下面了

放在webreport下也没效果呀

9楼
发表于 2018-1-7 18:05:47
来自手机
cherishdqy 发表于 2018-1-7 14:31
放在webreport下也没效果呀

看你的样子是没有引用样式啊
10楼
发表于 2018-1-8 12:41:48
厉害,我换了自己本地的图片,好玩!给你个赞
11楼
发表于 2018-1-8 13:32:05
亲测,可行。 谢谢楼主 6666~
12楼
发表于 2018-1-11 11:39:54
13楼
发表于 2018-1-17 16:36:26
为啥我的按你的来,放入css,还是没反应,只是普通的而已
14楼
发表于 2018-1-17 16:37:04
没有效果
15楼
发表于 2018-2-27 09:20:28
楼主强的不行,简直无敌
16楼
发表于 2018-5-11 22:49:01
不错  学习了    谢谢楼主
17楼
发表于 2019-11-27 16:10:09
666666.可用
18楼
发表于 2021-5-30 21:12:38
貌似很牛逼的样子
19楼
发表于 2022-9-26 15:10:22
66666
20楼
发表于 2022-9-29 09:15:15
66666
21楼
发表于 2022-9-29 09:16:57
老哥,附件在哪里下载呀?没瞅见。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

31回帖数 8关注人数 19605浏览人数
最后回复于:2023-8-21 17:18

返回顶部 返回列表