原生js实现焦点轮播图效果

yizhihongxing

实现焦点轮播图效果的完整攻略包含以下几个步骤:

步骤一:HTML结构代码搭建

我们需要先创建HTML结构代码。-html代码的结构分为两部分。一是包含轮播图内容的ul标签,二是包含焦点图点点的ol标签。代码如下:

<div class="slider">
  <ul class="slides">
    <li><img src="图片1"></li>
    <li><img src="图片2"></li>
    <li><img src="图片3"></li>
    ...
  </ul>
  <ol class="dots">
    <li></li>
    <li></li>
    <li></li>
    ...
  </ol>
</div>

其中,class为slider的div标签是为了整个轮播图的CSS布局设立的。

步骤二:CSS样式代码编写

在两个标签的HTML结构搭建完成之后,我们要为其编写CSS样式。我们需要将图片轮播的区域设置为图片所在li标签的宽度和高度,用CSS实现轮播图的自适应宽度和高度。

.slider {
  position: relative;
  height: 400px; /* 轮播图高度自己设定,为了方便,我们设定为400px */
  overflow: hidden;
  white-space: nowrap; /* li标签横向排列 */
}
.slider .slides {
  position: relative;
  height: 100%;
  width: 10000px;
  left: 0;
  -webkit-transition: left .5s;
  transition: left .5s; /* 添加过渡效果 */
}
.slider .slides li {
  display: inline-block;
  width: 100%;
  height: 100%;
  vertical-align: top;
}

上述代码主要是设置轮播图的CSS样式并将li标签设置为inline-block横向排列。

步骤三:JS代码编写

在第一步和第二步完成之后,我们需要编写Javascript来控制轮播图效果。我们需先把所有图片都放在一个数组中,再控制轮播图每次播放的位置及轮播点的切换。

window.onload = function () {
  var slider = document.querySelector('.slider');
  var slides = document.querySelector('.slides').querySelectorAll('li');
  var dots = document.querySelector('.dots');
  var index = 0;
  // 获取slide li标签的数量
  var len = slides.length;
  // 定时器对象
  var timer = null;

  // 循环向ol中添加li标签作为轮播图点点
  for (var i = 0; i < len; i++) {
    var li = document.createElement('li');
    li.index = i;
    dots.appendChild(li);
  }

  // 焦点图点点样式设置
  dots.style.marginTop = -dots.offsetHeight/2 + 'px';
  dots.children[index].className = 'active';

  // 克隆第一张图片及最后一张图片
  var firstSlid = slides[0].cloneNode(true);
  var lastSlid = slides[len-1].cloneNode(true);
  document.querySelector('.slides').appendChild(firstSlid);
  document.querySelector('.slides').insertBefore(lastSlid,slides[0]);

  // 为每个点点设置鼠标移入事件
  for (var i = 0; i < dots.children.length; i++) {
    dots.children[i].onmouseover = function () {
      clearInterval(timer);
      // 排除当前图片
      if (this.index != index) {
        index = this.index;
        switchSlide(index);
        switchActive(index);
      }
      timer = setInterval(auto,2000);
    }
  }

  // 自动轮播和点点切换
  function auto() {
    index++;
    switchSlide(index);
    switchActive(index);
  }

  // 切换图片位置
  function switchSlide(index) {
    slides[0].style.marginLeft = -slides[0].offsetWidth*index+'px';
    slider.querySelector('.slides').style.transform = 'translateX('+((-index-1)/len*100)+'%)';
  }

  // 切换点点的样式
  function switchActive(index) {
    for (var i = 0; i < dots.children.length; i++) {
      dots.children[i].className = '';
    }
    dots.children[index].className = 'active';
  }

  // 触碰到slider调用stopPlay
  slider.onmouseenter = stopPlay;
  // 移出slider调用startPlay
  slider.onmouseleave = startPlay;

  // 停止播放
  function stopPlay() {
    clearInterval(timer);
  }
  // 开始播放
  function startPlay() {
    timer = setInterval(auto,2000);
  }
  // 设置定时器
  startPlay();
}

代码中我们获取整个slider的HTML元素和通过通过获取其子元素来控制每张幻灯片的位置。在自动播放的过程中,通过设置setTimeout函数来实现每隔一定时间切换轮播图。同时,在鼠标移上去停止播放,离开的时候重新开始播放。

示例一

参考链接:codesandbox

示例二

参考链接:codesandbox

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生js实现焦点轮播图效果 - Python技术站

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

相关文章

  • javascript瀑布流布局实现方法详解

    请听我一一道来。 标题 JavaScript瀑布流布局实现方法详解 瀑布流布局概述 瀑布流布局(Waterfall Layout)也称为瀑布流式布局,是一种常见的网页布局形式,常用来展现图片等等等,具有美观、灵活的特点。随着JavaScript技术的不断发展,如何用JS来实现瀑布流布局呢?下面来详细讲解。 实现方法 瀑布流布局实现方法可以分为2种:基于CSS…

    css 2023年6月10日
    00
  • tinyMCE使用方法与心得详解

    TinyMCE使用方法与心得详解 简介 TinyMCE是一个开源的富文本编辑器,支持多种浏览器和语言的使用。通过TinyMCE,你可以在网站上创建和编辑各种富文本内容,包括但不限于:文字、图片、表格、链接等。 在本篇文章中,我们将详细讲解如何使用TinyMCE,并分享我们的心得体会。 安装 首先你需要获取TinyMCE的源代码并将其上传至你的网站目录中,然后…

    css 2023年6月11日
    00
  • HTML5使用Audio标签实现歌词同步的效果

    下面是详细的攻略说明。 什么是HTML5的Audio标签? HTML5的Audio标签是一种用于在网页上播放音频的标签。它可以加载并播放MP3、WAV等音频格式文件。除了简单的播放控制外,它还支持许多高级特性,例如事件处理、音乐可视化和歌词同步等。 实现歌词同步的原理 在实现歌词同步的过程中,我们需要先将歌词文件加载到网页中,并把每一行的歌词内容和对应的时间…

    css 2023年6月10日
    00
  • CSS样式表高效使用技巧充分利用样式表的强大性

    CSS样式表是Web开发中非常重要的一部分,可以控制网站的外观和布局。以下是一些CSS样式表高效使用技巧,可以充分利用样式表的强大性: 1. 使用类选择器和ID选择器 类选择器和ID选择器是CSS样式表中最常用的选择器。使用类选择器和ID选择器可以减少CSS代码的重复,并提高代码的可读性。以下是一个简单的示例: <div class="con…

    css 2023年5月18日
    00
  • CSS 选择器浅谈

    CSS 选择器浅谈 CSS 选择器是指在样式表中使用的语法,用于选择 HTML 或 XML 文档中的特定元素,并将样式应用于这些元素。在本篇文章中,我们将深入探讨 CSS 选择器的各种类型,以及如何使用它们来选择不同的 HTML 元素。 基础选择器 元素选择器 元素选择器是 CSS 中最简单的选择器之一,也是最常用的。它可以通过元素名称直接选取特定的 HTM…

    css 2023年6月9日
    00
  • 纯CSS绘制三角形箭头效果

    在网页前端开发中,使用纯 CSS 绘制三角形箭头效果是一项非常有用的技能。下面是一个完整的攻略,包含了绘制三角形箭头的过程和两个示例说明。 绘制三角形箭头的过程 1. 创建 HTML 结构 首先,我们需要创建一个 HTML 结构,用于容纳三角形箭头。下面是一个简单的 HTML 结构示例: <div class="arrow">…

    css 2023年5月18日
    00
  • 详解SPA中前端路由基本原理与实现方式

    下面是详解“详解SPA中前端路由基本原理与实现方式”的完整攻略: 什么是SPA SPA即单页应用程序,它是一个不会重新加载整个页面的应用程序,而只会更新页面的局部区域。这样能够提高用户的体验,减少页面加载时间和流量消耗。 前端路由的概念 前端路由是指在单页应用程序中,通过监听浏览器url变化,使得不同的url对于不同的页面呈现。一般来说,前端路由是通过修改h…

    css 2023年6月10日
    00
  • 利用Bootstrap Multiselect实现下拉框多选功能

    下面我将提供一份完整的攻略,讲解如何利用Bootstrap Multiselect实现下拉框多选功能。 步骤一:准备工作 首先,我们需要在网站的HTML页面中引入以下资源: <!– 引入 样式 –> <link rel="stylesheet" href="https://cdn.jsdelivr.net/…

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