文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JS如何实现时间轴自动播放

2023-06-20 21:19

关注

这篇文章主要为大家展示了“JS如何实现时间轴自动播放”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS如何实现时间轴自动播放”这篇文章吧。

最近实现了一个这样的效果,点击播放按钮,时间轴开始播放,点击暂停,停止在当前位置,当再次点击播放的时候,从当前位置开始继续播放,也可以点击相应的年份,切换过去,这时候播放自动暂停,当再次点击播放的时候,从当前位置出发。

JS如何实现时间轴自动播放

<!DOCTYPE html><html> <head>  <meta charset="utf-8" />  <title></title>  <link rel="stylesheet" type="text/css" href="fonts/iconfont.css" />  <style scoped>   ul,   li,   html,   body {    margin: 0;    padding: 0;   }    #timeline {    list-style: none;    text-align: center;    background: url('img/xuanduan.png') 9px top repeat-y;   }    #timeline li {    background-image: url('img/tuoyuan1.png');    background-repeat: no-repeat;    background-position: 0 15px;    background-size: 20px 20px;    padding-left: 30px;    height: 50px;    line-height: 50px;    color: #444;    width: 70px;   }    #timeline li p {    width: 70px;    cursor: pointer;    margin: 0;   }    .biaoqian {    background: url('img/biaoqian.png') 2px 13px no-repeat;    ;    background-size: 60px 24px;    color: #fff;   }    #timeline .selecteded {    background: url('img/tuoyuan2.png') 0 15px no-repeat;    background-size: 20px 20px;   }    .scroll-shell {    width: 100px;    height: 96%;    margin-top: 1.5%;    margin-left: 20px;    float: left;    overflow: hidden;   }    .scroll {    width: 118px;    height: 103%;    overflow: auto;    overflow-x: hidden;   }  </style> </head> <body>  <div class="scroll-shell">   <ul  id="timeline" ref="timeline" @click="timeline($event)" class="scroll">    </ul>   <i class="iconfont icon-bofang" id="bofangzanting" ></i>  </div>  <script>   let years = [2016, 2017, 2018, 2019, 2020, 2021, 2022]   let index = 0   let timer=null   //创建时间轴对应的li   years.map(k => {    let createLi = document.createElement('li')    let createP = document.createElement('p')    createP.innerHTML = k    createLi.appendChild(createP)    timeline.appendChild(createLi)   })   //默认选中第一个   var lis = document.querySelectorAll('#timeline li')   lis[0].classList.add('selecteded')   var ps = document.querySelectorAll('#timeline li p')   ps[0].classList.add('biaoqian')    //点击事件,点击其中一个切换到相应的效果   var ulElement = document.querySelector('#timeline')   ulElement.onclick = function(e) {    var lis = document.querySelectorAll('#timeline li')    var ps = document.querySelectorAll('#timeline li p')    let event = e || window.event    let target = event.target || event.srcElement    if (target.tagName == 'P') {       classChange(ps, lis, target)     for (let i = 0; i < lis.length; i++) {      console.log(lis[i].getAttribute('class'))      if (lis[i].getAttribute('class') == 'selecteded') {       //记住此时被点击的索引,方便点击播放按钮时继续播放       index = i       console.log(index)       break;      }      }    }   }      //公共部分,清除掉所有的样式,再给点击的添加相应的类名   function classChange(ps, lis, target) {    ps.forEach(k => {     k.classList.remove('biaoqian')    })    target.classList.add('biaoqian')    lis.forEach(v => {     v.classList.remove('selecteded')    })    target.parentNode.classList.add('selecteded')   }    //播放和暂停按钮   let bofangzanting = document.getElementById('bofangzanting')   if (bofangzanting) {    bofangzanting.onclick = () => {     if (bofangzanting.className.indexOf('bofang') != -1) {      console.log('点击播放')      console.log(timer)      bofangzanting.classList.remove('icon-bofang')      bofangzanting.classList.add('icon-zanting')      if (timer == undefined) {       autoPlay()      }     } else {      console.log('点击暂停')      bofangzanting.classList.remove('icon-zanting')      bofangzanting.classList.add('icon-bofang')      if (timer) {       timer = clearInterval(timer)      } else {       return      }     }    }   }    //自动播放   function autoPlay() {    var lis = document.querySelectorAll('#timeline li')    var ps = document.querySelectorAll('#timeline li p')    timer = setInterval(() => {     console.log('自动播放啦!')     if (index < ps.length - 1) {       //执行下一个      classChange(ps, lis, ps[index + 1])      index++     } else {       //跳转到开始      index = 0                      classChange(ps, lis, ps[index])     }     console.log(index)    }, 1000)   }  </script> </body></html>

以上是“JS如何实现时间轴自动播放”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯