原生js轮播特效

原生JS轮播特效是一种常见的网页设计效果,下面是一些实现的步骤和示例:

步骤

  1. 创建HTML布局
    要实现轮播特效,需要一个包含轮播图片的容器和一组控制轮播的选择器。这个容器可以是一个div或ul元素。

  2. 设置CSS样式
    设置容器和选择器的CSS样式,包括宽度,高度,颜色,字体大小和间距等。

  3. 编写JavaScript代码
    3.1 获取容器和选择器元素的引用
    3.2 给选择器元素绑定事件,当选择器被点击时,切换到相应的图片
    3.3 定义一个计时器,控制图片的自动轮播。设置时间间隔和动画效果,使用setInterval()或setTimeout()函数。

示例1:基本的轮播特效

下面是一个简单的“原生JS轮播特效”的示例,步骤如下:

  1. 创建一个HTML布局如下:
<div class="slideshow">
  <ul>
    <li><img src="img1.jpg" alt="image1"></li>
    <li><img src="img2.jpg" alt="image2"></li>
    <li><img src="img3.jpg" alt="image3"></li>
  </ul>
  <div class="selector">
    <span data-index="0"></span>
    <span data-index="1"></span>
    <span data-index="2"></span>
  </div>
</div>
  1. 设置CSS样式
.slideshow {
  position: relative;
  width: 600px;
  height: 400px;
}
.slideshow ul {
  list-style: none;
  position: relative;
  width: 100%;
  height: 100%;
}
.slideshow ul li {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  transition: opacity 0.5s linear;
}
.slideshow ul li.active {
  opacity: 1;
}
.slideshow .selector {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
}
.slideshow .selector span {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background-color: #fff;
  margin: 0 5px;
  cursor: pointer;
}
.slideshow .selector span.active {
  background-color: #f00;
}
  1. 编写JavaScript代码
var slideshow = document.querySelector('.slideshow');
var slider = slideshow.querySelector('ul');
var sliderItems = slider.querySelectorAll('li');
var selector = slideshow.querySelector('.selector');
var selectors = selector.querySelectorAll('span');
var currentSliderIndex = 0;
var timer;

selectors.forEach(function(s, i) {
  s.addEventListener('click', function() {
    clearInterval(timer);
    if (currentSliderIndex == i) {
      return;
    }
    selectors[currentSliderIndex].classList.remove('active');
    sliderItems[currentSliderIndex].classList.remove('active');
    currentSliderIndex = i;
    selectors[currentSliderIndex].classList.add('active');
    sliderItems[currentSliderIndex].classList.add('active');
    timer = setInterval(nextSlide, 3000);
  });
});

function nextSlide() {
  selectors[currentSliderIndex].classList.remove('active');
  sliderItems[currentSliderIndex].classList.remove('active');
  currentSliderIndex++;
  if (currentSliderIndex == sliderItems.length) {
    currentSliderIndex = 0;
  }
  selectors[currentSliderIndex].classList.add('active');
  sliderItems[currentSliderIndex].classList.add('active');
}

timer = setInterval(nextSlide, 3000);

Demo: 基本的轮播特效

示例2:带缩略图的轮播特效

下面是一个带缩略图的轮播特效的示例,步骤如下:

  1. 创建一个HTML布局如下:
<div class="slideshow2">
  <ul class="slider2">
    <li>
      <img src="img1.jpg" alt="image1">
      <div class="slider-caption">
        <h2>Title 1</h2>
        <p>Slider Description 1</p>
      </div>
    </li>
    <li>
      <img src="img2.jpg" alt="image2">
      <div class="slider-caption">
        <h2>Title 2</h2>
        <p>Slider Description 2</p>
      </div>
    </li>
    <li>
      <img src="img3.jpg" alt="image3">
      <div class="slider-caption">
        <h2>Title 3</h2>
        <p>Slider Description 3</p>
      </div>
    </li>
  </ul>
  <div class="selector2">
    <span data-index="0">
      <img src="img1.jpg" alt="image1">
    </span>
    <span data-index="1">
      <img src="img2.jpg" alt="image2">
    </span>
    <span data-index="2">
      <img src="img3.jpg" alt="image3">
      </span>
  </div>
</div>
  1. 设置CSS样式
.slideshow2 {
  position: relative;
  width: 600px;
  height: 400px;
}
.slideshow2 .slider2 {
  list-style: none;
  position: relative;
  width: 100%;
  height: 100%;
}
.slideshow2 .slider2 li {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  transition: opacity 0.5s linear;
}
.slideshow2 .slider2 li.active {
  opacity: 1;
}
.slideshow2 .selector2 {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  justify-content: center;
  align-items: center;
}
.slideshow2 .selector2 span {
  width: 80px;
  height: 60px;
  margin: 0 10px;
  cursor: pointer;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: #fff;
  box-shadow: 0 0 4px rgba(0, 0, 0, 0.2);
  transition: transform 0.5s ease;
}
.slideshow2 .selector2 span img {
  max-width: 100%;
  max-height: 100%;
  object-fit: cover;
}
.slideshow2 .selector2 span.active {
  transform: scale(1.1);
  box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), 0 0 8px rgba(255, 0, 0, 0.4);
}
  1. 编写JavaScript代码
var slideshow2 = document.querySelector('.slideshow2');
var slider2 = slideshow2.querySelector('.slider2');
var sliderItems2 = slider2.querySelectorAll('li');
var selector2 = slideshow2.querySelector('.selector2');
var selectors2 = selector2.querySelectorAll('span');
var currentSliderIndex2 = 0;
var timer2;

selectors2.forEach(function(s, i) {
  s.addEventListener('click', function() {
    clearInterval(timer2);
    if (currentSliderIndex2 == i) {
      return;
    }
    selectors2[currentSliderIndex2].classList.remove('active');
    sliderItems2[currentSliderIndex2].classList.remove('active');
    currentSliderIndex2 = i;
    selectors2[currentSliderIndex2].classList.add('active');
    sliderItems2[currentSliderIndex2].classList.add('active');
    timer2 = setInterval(nextSlide2, 3000);
  });
});

function nextSlide2() {
  selectors2[currentSliderIndex2].classList.remove('active');
  sliderItems2[currentSliderIndex2].classList.remove('active');
  currentSliderIndex2++;
  if (currentSliderIndex2 == sliderItems2.length) {
    currentSliderIndex2 = 0;
  }
  selectors2[currentSliderIndex2].classList.add('active');
  sliderItems2[currentSliderIndex2].classList.add('active');
}

timer2 = setInterval(nextSlide2, 3000);

Demo: 带缩略图的轮播特效

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

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

相关文章

  • JS计算距当前时间的时间差实例

    下面是JS计算距当前时间的时间差实例的完整攻略: 一、问题分析 在开发Web应用程序时,我们常常需要计算当前时间和其它时间之间的时间差,以便在页面中显示倒计时、计时器等信息。要实现这个功能,我们需要知道以下内容: 当前时间戳 目标时间戳 两个时间戳之间的时间差 二、解决方案 下面我们以两个示例说明如何计算时间差。 示例一:倒计时 在倒计时功能中,我们通常需要…

    JavaScript 2023年5月27日
    00
  • require.js的用法详解

    下面就“require.js的用法详解”的完整攻略进行讲解。 1. 什么是require.js Require.js是一个JavaScript模块化管理工具,可以使得我们在编写代码时更好地管理模块的依赖关系,提高代码的可读性和可维护性。使用require.js的最大好处就是可以将 JavaScript 代码分解成多个模块,让它们以依赖树的形式进行加载。在使用…

    JavaScript 2023年5月27日
    00
  • 正则表达式中test、exec、match的区别介绍及括号的用法

    正则表达式是用于匹配文本的强大工具,它允许您使用模式来搜索、替换和操作文本。在使用正则表达式时,test、exec、match及括号都是常用的概念,它们的用法与意义都不同。 test、exec、match的区别介绍 test方法 test方法是RegExp对象的方法之一,它的作用是测试一个字符串是否匹配某个正则表达式,返回布尔值。如果匹配成功,test方法返…

    JavaScript 2023年6月10日
    00
  • JavaScript中Function()函数的使用教程

    下面就为大家详细讲解JavaScript中Function()函数的使用教程。 一、什么是Function()函数 Function()函数是JavaScript中的一种内置函数,它用来创建一个函数对象。在JavaScript中,函数也是对象,因此它们可以像其他对象一样传递、存储和处理。 二、Function()函数的基本语法 function functi…

    JavaScript 2023年5月27日
    00
  • JavaScript中的纯函数与偏函数你了解吗

    JavaScript中的纯函数和偏函数是两个非常重要的概念。它们都可以提高代码的可读性、可维护性和可测试性。下面我们来详细讲解一下这两个概念。 纯函数 纯函数是指不依赖于外部状态(如全局变量、文件等)并且给定相同的输入,总是返回相同的输出的函数。简而言之,纯函数不会影响外界,也不受外界影响。纯函数具有以下优点: 可以更加方便的进行测试,因为不需要考虑外部状态…

    JavaScript 2023年5月27日
    00
  • JavaScript实现DOM对象选择器

    实现DOM对象选择器是JavaScript编程中最常用的功能之一。下面是详细讲解如何使用JavaScript实现DOM对象选择器的完整攻略: 1. 理解DOM对象选择器 在开发Web应用中,我们需要频繁地访问和操作网页元素。而每个网页元素都是一个DOM对象,可以通过JavaScript的DOM对象选择器来获取它们。DOM对象选择器可以根据元素的标签、类名、I…

    JavaScript 2023年6月10日
    00
  • Javascript Global encodeURI() 函数

    以下是关于JavaScript Global对象中encodeURI()函数的完整攻略,包括两个示例说明。 JavaScript Global对象中的encodeURI()函数 JavaScript Global对象中的encodeURI()函数用于将一个URI字符串进行编码以便在URI中使用。URI(Uniform Resource Identifier)…

    JavaScript 2023年5月11日
    00
  • 基于AGS JS开发自定义贴图图层

    以下是关于基于AGS JS开发自定义贴图图层的完整攻略: 1. 什么是AGS JS? AGS(ArcGIS Server) JS(Javascript)是ArcGIS平台的JavaScript API,它提供了一种简单而强大的方式来创建Web地图和Web应用程序。AGS JS通过使用JavaScript语言和预定义的类库,可以轻松地构建具有各种GIS功能的W…

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