JavaScript实现PC端横向轮播图

下面是JavaScript实现PC端横向轮播图的完整攻略:

准备工作

要实现PC端横向轮播图,需要先准备好以下几点:

  1. HTML结构,即容器元素及其子元素,通常是一个div包裹符合数量的图片(img标签)。
  2. CSS样式,如容器元素宽高、溢出隐藏、子元素浮动、统一宽高等。
  3. JS代码,用来实现轮播图的滑动效果,具体实现方式后面会讲到。

实现步骤

  1. 确认容器元素的宽度和容纳的图片个数,然后设置子元素的宽度为容器宽度的1/n(n为容纳的图片个数),并将子元素浮动,实现横向排列。
.container {
  width: 800px;
  height: 400px;
  overflow: hidden;
}
.slide {
  float: left;
  width: 200px;/* 假设容纳3张图片 */
  height: 400px;
}
  1. JS代码实现轮播图的滑动效果:
  2. 获取相关元素(容器元素、子元素、切换按钮等)。
const container = document.querySelector('.container');
const slider = document.querySelector('.slider');
const slides = document.querySelectorAll('.slider .slide');
const prevBtn = document.querySelector('.prev');
const nextBtn = document.querySelector('.next');
  • 根据轮播图性质,需要在最后一个子元素后面复制一个子元素,实现轮播效果。
slider.appendChild(slides[0].cloneNode(true));
  • 当前显示的图片序号为0,设置一个定时器,在一定时间间隔(如3秒)后自动滑动到下一张图片(即序号+1)。
const interval = 3000; // 时间间隔3秒
let currentSlide = 0; // 当前显示的图片序号

setInterval(() => {
  currentSlide++;
  slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
}, interval);
  • 上一张和下一张图片按钮绑定事件,点击后分别切换到对应图片。
prevBtn.addEventListener('click', () => {
  currentSlide--;
  if (currentSlide < 0) {
    currentSlide = slides.length - 2;
    /* 当前为前面复制出来的最后一张图片 */
    slider.style.transition = 'none';
    slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
    setTimeout(() => {
      slider.style.transition = 'all 0.3s ease-in-out';
    }, 1);
  }
  slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
});

nextBtn.addEventListener('click', () => {
  currentSlide++;
  if (currentSlide > slides.length - 1) {
    currentSlide = 1;
    /* 当前为前面复制出来的第一张图片 */
    slider.style.transition = 'none';
    slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
    setTimeout(() => {
      slider.style.transition = 'all 0.3s ease-in-out';
    }, 1);
  }
  slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
});

示例说明

下面是两个简易的示例说明:

示例1

<div class="container">
  <div class="slider">
    <div class="slide"><img src="1.jpg" alt=""></div>
    <div class="slide"><img src="2.jpg" alt=""></div>
    <div class="slide"><img src="3.jpg" alt=""></div>
    <div class="slide"><img src="4.jpg" alt=""></div>
    <div class="slide"><img src="5.jpg" alt=""></div>
  </div>
</div>
<button class="prev">上一张</button>
<button class="next">下一张</button>
.container {
  width: 800px;
  height: 400px;
  overflow: hidden;
}
.slide {
  float: left;
  width: 200px;
  height: 400px;
}
const container = document.querySelector('.container');
const slider = document.querySelector('.slider');
const slides = document.querySelectorAll('.slider .slide');
const prevBtn = document.querySelector('.prev');
const nextBtn = document.querySelector('.next');

slider.appendChild(slides[0].cloneNode(true));

const interval = 3000;
let currentSlide = 0;

setInterval(() => {
  currentSlide++;
  slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
}, interval);

prevBtn.addEventListener('click', () => {
  currentSlide--;
  if (currentSlide < 0) {
    currentSlide = slides.length - 2;
    slider.style.transition = 'none';
    slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
    setTimeout(() => {
      slider.style.transition = 'all 0.3s ease-in-out';
    }, 1);
  }
  slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
});

nextBtn.addEventListener('click', () => {
  currentSlide++;
  if (currentSlide > slides.length - 1) {
    currentSlide = 1;
    slider.style.transition = 'none';
    slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
    setTimeout(() => {
      slider.style.transition = 'all 0.3s ease-in-out';
    }, 1);
  }
  slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
});

示例2

<div class="container">
  <div class="slider">
    <div class="slide"><img src="1.jpg" alt=""></div>
    <div class="slide"><img src="2.jpg" alt=""></div>
    <div class="slide"><img src="3.jpg" alt=""></div>
    <div class="slide"><img src="4.jpg" alt=""></div>
    <div class="slide"><img src="5.jpg" alt=""></div>
  </div>
</div>
<button class="prev">上一张</button>
<button class="next">下一张</button>
.container {
  width: 500px;
  height: 300px;
  overflow: hidden;
}
.slide {
  float: left;
  width: 200px;
  height: 300px;
}
const container = document.querySelector('.container');
const slider = document.querySelector('.slider');
const slides = document.querySelectorAll('.slider .slide');
const prevBtn = document.querySelector('.prev');
const nextBtn = document.querySelector('.next');

slider.appendChild(slides[0].cloneNode(true));

const interval = 2000;
let currentSlide = 0;

setInterval(() => {
  currentSlide++;
  slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
}, interval);

prevBtn.addEventListener('click', () => {
  currentSlide--;
  if (currentSlide < 0) {
    currentSlide = slides.length - 2;
    slider.style.transition = 'none';
    slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
    setTimeout(() => {
      slider.style.transition = 'all 0.3s ease-in-out';
    }, 1);
  }
  slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
});

nextBtn.addEventListener('click', () => {
  currentSlide++;
  if (currentSlide > slides.length - 1) {
    currentSlide = 1;
    slider.style.transition = 'none';
    slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
    setTimeout(() => {
      slider.style.transition = 'all 0.3s ease-in-out';
    }, 1);
  }
  slider.style.transform = `translateX(${-currentSlide * slides[0].offsetWidth}px)`;
});

以上就是实现PC端横向轮播图的完整攻略,需要注意的就是CSS样式和JS代码的实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现PC端横向轮播图 - Python技术站

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

相关文章

  • JavaScript实现的多种鼠标拖放效果

    下面我就为你详细讲解一下JavaScript实现多种鼠标拖放效果的攻略: 简介 鼠标拖放是前端开发中常用的功能,它给用户带来了便利,同时也提高了用户体验。JavaScript是前端开发中最常用的语言之一,所以我们可以通过JavaScript来实现鼠标拖放效果。 方法 实现鼠标拖放效果可以使用HTML5的Drag和Drop API,也可以使用原生JavaScr…

    JavaScript 2023年6月10日
    00
  • 用Python制作mini翻译器的实现示例

    让我来给您详细讲解一下如何用Python制作mini翻译器的实现示例以及相关的攻略。 1. 确定翻译API 在制作mini翻译器之前,我们需要确定一个翻译API来获取翻译结果。目前市面上已经有很多翻译API可供选择,比如百度、Google、有道等,这里我们以百度翻译API为例。 在使用百度翻译API之前,需要先在百度翻译开放平台进行注册和创建应用,获取到相应…

    JavaScript 2023年6月11日
    00
  • JavaScript操纵窗口的方法小结

    以下是关于“JavaScript操纵窗口的方法小结”的完整攻略: JavaScript操纵窗口的方法小结 在前端开发中,我们经常需要通过JavaScript操纵窗口,实现弹出新窗口、关闭窗口、调整窗口大小等操作。下面我们就来介绍一些常用的JavaScript操纵窗口的方法: 弹出新窗口 我们可以通过window.open()方法来实现弹出新窗口的功能。该方法…

    JavaScript 2023年6月11日
    00
  • Javascript验证用户输入URL地址是否为空及格式是否正确

    关于JavaScript验证用户输入URL地址是否为空及格式是否正确的攻略,可以按照以下步骤实现: 步骤一:获取用户输入的URL地址 获取用户输入的URL地址。可以使用document.getElementById()或document.querySelector()等方法获取用户输入的URL地址。 const urlInput = document.get…

    JavaScript 2023年6月10日
    00
  • vue、react等单页面项目部署到服务器的方法及vue和react的区别

    一、将单页面应用(SPA)部署到服务器的方法 将SPA打包生成静态文件使用webpack等打包工具将SPA打包生成静态文件,一般会生成一个dist文件夹,里面包含了SPA的所有静态资源文件。 部署到服务器将生成的静态文件复制到服务器上的部署目录,如/var/www/html,然后通过nginx等Web服务器进行访问即可。 示例:假设我们已经将一个Vue单页面…

    JavaScript 2023年6月11日
    00
  • JavaScript的jQuery库中ready方法的学习教程

    下面是关于”JavaScript的jQuery库中ready方法的学习教程”的完整攻略: 一、jQuery库中的ready方法 ready() 方法用于在文档完成加载后执行指定的函数。该方法为 jQuery 库提供,并且对于处理 JS 和 HTML 的交互非常重要。 当 HTML 文档被加载,并解析完毕后,可执行像 jQuery.ready() 函数这样的代…

    JavaScript 2023年5月27日
    00
  • js 执行上下文和作用域的相关总结

    JS执行上下文和作用域相关总结 在JavaScript中,代码执行的上下文和作用域是非常重要的概念。正确理解和应用它们可以帮助我们更好地编写和调试JavaScript代码。下面是一个总结: 执行上下文 执行上下文是JavaScript代码执行的环境,其中包括当前执行的代码、变量和对象等,JS 中有三种不同类型的执行上下文:全局上下文,函数上下文,eval上下…

    JavaScript 2023年6月10日
    00
  • 解读邮箱正则表达式:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

    首先,这个正则表达式用于验证邮箱的格式是否正确。下面我会逐个解读每一个符号的含义。 ^ 表示匹配字符串的开头。 \w+ 表示匹配字母、数字、下划线至少一次,这部分表示邮箱用户名部分。 ([-+.]\w+)* 表示匹配特殊字符 -、+、. 后面跟一个或多个字母、数字、下划线,0次或多次。这部分表示邮箱用户名中的特殊字符部分,可以没有。 @ 表示匹配到 at 符…

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