js实现DOM走马灯特效的方法

yizhihongxing

来分享一下实现JS DOM走马灯特效的方法攻略。

1. 前置技能

在实现JS DOM走马灯特效之前,你需要具备以下技能:

  • HTML基础知识
  • CSS基础知识
  • JavaScript基础知识
  • 掌握DOM操作基础方法

2. 实现过程

步骤一:HTML骨架搭建

首先,我们需要在HTML中创建容器来承载图片,为了实现走马灯效果,我们需要在容器中创建两个相同的图片列表,并使用CSS使它们横向排列,并隐藏超出容器范围的部分。代码示例如下:

<div class="slider-container">
  <ul class="slider-list1">
    <li><img src="img/1.jpg" alt=""></li>
    <li><img src="img/2.jpg" alt=""></li>
    <li><img src="img/3.jpg" alt=""></li>
    <li><img src="img/4.jpg" alt=""></li>
    <li><img src="img/5.jpg" alt=""></li>
  </ul>
  <ul class="slider-list2">
    <li><img src="img/1.jpg" alt=""></li>
    <li><img src="img/2.jpg" alt=""></li>
    <li><img src="img/3.jpg" alt=""></li>
    <li><img src="img/4.jpg" alt=""></li>
    <li><img src="img/5.jpg" alt=""></li>
  </ul>
</div>
.slider-container {
  width: 600px;
  height: 400px;
  overflow: hidden; /* 超出容器范围的不显示 */
}

.slider-list1,
.slider-list2 {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex; /* 列表横向排列 */
  width: 1000%; /* 让两个列表总宽度是容器的10倍 */
}

.slider-list1 > li,
.slider-list2 > li {
  flex: 1;
  margin: 0;
  padding: 0;
  transition: all 1s ease; /* 使用过渡效果控制图片左右滑动 */
}

.slider-list2 {
  transform: translateX(-600px); /* 将第二个列表向左移动一个容器宽度的距离 */
}

步骤二:实现走马灯自动播放

接着,我们需要实现走马灯自动播放的效果,具体实现方式是通过定时器每隔一段时间自动切换到下一张图片,并使用CSS3的过渡效果使图片平滑移动。代码示例如下:

var sliderList1 = document.querySelector('.slider-list1')
var sliderList2 = document.querySelector('.slider-list2')

setInterval(function() {
  sliderList1.style.transform = 'translateX(-600px)'
  sliderList2.style.transform = 'translateX(-1200px)'
  setTimeout(function() {
    sliderList1.appendChild(sliderList1.querySelector('li'))
    sliderList1.style.transform = 'none'
    sliderList2.appendChild(sliderList2.querySelector('li'))
    sliderList2.style.transform = 'translateX(-600px)'
  }, 1000)
}, 3000)

步骤三:实现手动控制图片切换

最后,我们需要实现手动控制图片的切换效果,具体实现方式是监听容器的鼠标事件,在鼠标移入时停止自动播放,在鼠标移出时恢复自动播放,同时实现鼠标左右滑动图片的切换效果。代码示例如下:

var sliderContainer = document.querySelector('.slider-container')
var timer = null

sliderContainer.addEventListener('mouseenter', function() {
  clearInterval(timer)
})

sliderContainer.addEventListener('mouseleave', function() {
  timer = setInterval(function() {
    sliderList1.style.transform = 'translateX(-600px)'
    sliderList2.style.transform = 'translateX(-1200px)'
    setTimeout(function() {
      sliderList1.appendChild(sliderList1.querySelector('li'))
      sliderList1.style.transform = 'none'
      sliderList2.appendChild(sliderList2.querySelector('li'))
      sliderList2.style.transform = 'translateX(-600px)'
    }, 1000)
  }, 3000)
})

var startX = 0
var moveX = 0
var moveFlag = false

sliderContainer.addEventListener('mousedown', function(e) {
  startX = e.clientX
  moveFlag = true
})

sliderContainer.addEventListener('mousemove', function(e) {
  if (moveFlag) {
    moveX = e.clientX - startX
    sliderList1.style.transform = 'translateX(' + (-600 + moveX) + 'px)'
    sliderList2.style.transform = 'translateX(' + (-1200 + moveX) + 'px)'    
  }
})

sliderContainer.addEventListener('mouseup', function(e) {
  moveFlag = false
  if (moveX < 0) {
    sliderList1.appendChild(sliderList1.querySelector('li'))
    sliderList1.style.transform = 'none'
    sliderList2.appendChild(sliderList2.querySelector('li'))
    sliderList2.style.transform = 'translateX(-600px)'
  } else if (moveX > 0) {
    sliderList1.prepend(sliderList1.querySelector('li:last-child'))
    sliderList1.style.transform = 'none'
    sliderList2.prepend(sliderList2.querySelector('li:last-child'))
    sliderList2.style.transform = 'translateX(-600px)'
  }
})

3. 示例说明

下面是两个实现JS DOM走马灯特效的示例:

示例一

示例二

以上就是实现JS DOM走马灯特效的方法攻略,希望对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现DOM走马灯特效的方法 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript的八种数据类型

    JavaScript的八种数据类型 JavaScript 的数据类型共分为 8 种,分别为: 原始类型:number、string、boolean、null、undefined、Symbol 引用类型:Object 原始类型 原始类型的值是简单的数据段,可以直接存储在变量中。 1. number 数字类型 尽管 JavaScript 中只有一种数字类型,但是…

    JavaScript 2023年5月18日
    00
  • JS实现汉字与Unicode码相互转换的方法详解

    JS实现汉字与Unicode码相互转换的方法详解 在JavaScript中,可以使用charCodeAt()方法将汉字转换为Unicode编码,也可以使用fromCharCode()方法将Unicode编码转换为汉字。下面详细介绍这两个方法的使用方法。 将汉字转换为Unicode编码 function stringToUnicode(str) { var u…

    JavaScript 2023年5月19日
    00
  • js实现0ms延时定时器的几种方式

    下面是详细的讲解“js实现0ms延时定时器的几种方式”的完整攻略。 什么是“0ms延时定时器” “0ms延时定时器”是指在JavaScript定时器中设置的延时时间为0ms,并且能够保证事件队列中下一个任务的执行完全在当前任务结束后立即执行。这种延时定时器对于实时性要求较高的操作非常有用,例如画布绘制、游戏开发等。 几种实现方式 以下是几种实现“0ms延时定…

    JavaScript 2023年6月11日
    00
  • 微信小程序使用navigator实现页面跳转功能

    下面我将为你详细讲解“微信小程序使用navigator实现页面跳转功能”的完整攻略。 1. navigator简介 navigator是微信小程序中的一个组件,用于实现页面跳转功能。可以将navigator理解为H5中的超链接,通过点击跳转到不同的页面。 2. navigator的使用步骤 步骤一:在 app.json 中配置页面路径 在 app.json …

    JavaScript 2023年6月11日
    00
  • JS操作JSON方法总结(推荐)

    JS操作JSON方法总结(推荐) 什么是JSON JSON全称是JavaScript Object Notation,即JavaScript对象表示法。在Web应用程序中,使用JSON格式来交换数据是一种常见方式。JSON是一种轻量级的数据交换格式,容易被阅读和编写,并且易于机器解析和生成。JSON是一种文本格式,可以通过JavaScript或其他语言解析。…

    JavaScript 2023年5月27日
    00
  • js统计页面的来访次数实现代码

    要实现 js 统计页面来访次数,需要用到以下步骤: 创建一个用来记录访问次数的变量 首先,我们需要创建一个变量来储存网页的访问次数。这个计数器可以使用本地存储(localStorage)来保存,保证每次刷新页面访问次数不会被重置。 // 初始化访问次数为0 var pageViewCount = 0; // 在本地存储中查找是否有访问次数 if (local…

    JavaScript 2023年6月11日
    00
  • Dwr3.0纯注解(纯Java Code配置)配置与应用浅析二之前端调用后端

    Dwr是一个轻量级的远程调用框架,它可以帮助开发者在前端页面中方便地调用后端Java方法。在Dwr 3.0版本中,提供了完全基于注解的纯Java代码配置方式,这种方式相对于传统的XML配置方式更加简单、易用。 配置DwrServlet 首先,我们需要在web.xml文件中配置DwrServlet: <servlet> <servlet-na…

    JavaScript 2023年5月28日
    00
  • Bootstrap Table的使用总结

    Bootstrap Table的使用总结 Bootstrap Table是一个基于Bootstrap的jQuery插件,它可以将一个普通的HTML表格转化成一个功能丰富的高级表格,支持分页、排序、搜索、多选等功能。在前端开发中,Bootstrap Table常常被用来展示比较复杂的数据集,它简单易用,功能强大,可以大大提升用户体验。 安装 要使用Bootst…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部