鱼C论坛

 找回密码
 立即注册
查看: 2926|回复: 1

[学习笔记] JS.006WEB API总结(04轮播图,,,)

[复制链接]
发表于 2020-7-23 21:56:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小脑斧 于 2020-7-25 17:21 编辑

效果图:
未标题-3.gif

实现效果:
1.鼠标放到数字上,图片播放
2.鼠标点击左右箭头,图片对应滚动
思路:
上一个案列:div平移->图片平移
图片与数字(箭头)一一对应:获取图片宽度*(-)索引值
JS.006:WEB API总结(02)(节点使用)
不足:图片过多时,第一张不能直接到最后一张<待解决>
其余细节见程序
  1.     <script src="jquery-3.2.1/jquery-3.2.1.js"></script>
  2.     <script>
  3.         function myid(id) {
  4.             return document.getElementById(id);
  5.         }
  6.         var box = myid("box");
  7.         var imgs = box.children[0];
  8.         var imgwidth = imgs.offsetWidth;
  9.         var ulObj=imgs.children[0];
  10.         var spanobject = imgs.children[1].children;//获取span
  11.         var focusD = myid("focusD");

  12.         box.onmouseover = function () {
  13.             focusD.style.display = "block";
  14.         };
  15.         box.onmouseout = function () {
  16.             focusD.style.display = "none";
  17.         };
  18.         
  19.         //点击右边按钮
  20.         var index=0;
  21.         myid("right").onclick = function () {
  22.             if(index<ulObj.children.length-1){ //li的长度-1
  23.                 index++;
  24.                 animate(ulObj,-index*imgwidth);
  25.             }

  26.         };
  27.         //点击左边按钮
  28.         myid("left").onclick = function () {
  29.             if(index>0){
  30.                 index--;
  31.                 animate(ulObj,-index*imgwidth);//-index
  32.             }
  33.         };


  34.         for (var i=0; i<spanobject.length; i++){
  35.             spanobject[i].setAttribute("index",i);
  36.             spanobject[i].onmouseover = function () {
  37.                 //先干掉所有的span的背景颜色
  38.                 for(var j=0;j<spanobject.length;j++){
  39.                     spanobject[j].removeAttribute("class");
  40.                 }
  41.                 this.className="current";
  42.                 var index=this.getAttribute("index");
  43.                 animate(ulObj,-index*imgwidth);
  44.             };
  45.         }
  46.         
  47.         function animate(element, target) {
  48.             clearInterval(element.timeId);
  49.             //定时器的id值存储到对象的一个属性中
  50.             element.timeId = setInterval(function () {
  51.                 //获取元素的当前的位置,数字类型
  52.                 var current = element.offsetLeft;
  53.                 //每次移动的距离
  54.                 var step = 10;
  55.                 step = current < target ? step : -step;
  56.                 //当前移动到位置
  57.                 current += step;
  58.                 if (Math.abs(current - target) > Math.abs(step)) {
  59.                     element.style.left = current + "px";
  60.                 } else {
  61.                     //清理定时器
  62.                     clearInterval(element.timeId);
  63.                     //直接到达目标
  64.                     element.style.left = target + "px";
  65.                 }
  66.             }, 20);
  67.         }
  68.     </script>
复制代码
WebstormProjects.zip (108.06 KB, 下载次数: 1)
无缝
  1. <body>
  2. <div class="box" id="screen">
  3.   <ul>
  4.     <li><img src="imagess/01.jpg" alt=""/></li>
  5.     <li><img src="imagess/02.jpg" alt=""/></li>
  6.     <li><img src="imagess/03.jpg" alt=""/></li>
  7.     <li><img src="imagess/04.jpg" alt=""/></li>
  8.     <li><img src="imagess/01.jpg" alt=""/></li>
  9.   </ul>
  10. </div>
  11. <script src="补充.js"></script>
  12. <script>
  13.   var current = 0;//只声明了一次
  14.   function f1() {
  15.     var ulObj = myid("screen").children[0];
  16.     current -= 10;

  17.     if (current < -1200) {
  18.       ulObj.style.left = 0 + "px";
  19.       current = 0;
  20.     } else {
  21.       ulObj.style.left = current + "px";
  22.     }//整体移动
  23.   }
  24.   var timeId=setInterval(f1, 20);

  25.   myid("screen").onmouseover=function () {
  26.     //停止
  27.     clearInterval(timeId);
  28.   };
  29.   myid("screen").onmouseout=function () {
  30.     //继续
  31.     timeId=setInterval(f1, 20);
  32.   };
  33. </script>
  34. </body>
复制代码
完整的轮播图.zip (270.32 KB, 下载次数: 3, 售价: 1 鱼币)


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-26 07:09:01 | 显示全部楼层
好棒呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 19:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表