原生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日期加减、日期运算代码的完整攻略,可以通过以下步骤来实现: 1. 创建日期对象 在JS中,可以通过 new Date() 来创建日期对象,例如: let cur_date = new Date(); 以上代码表示创建了一个当前时间的日期对象,该对象包含了当前年月日、时分秒的信息。 2. 日期加减操作 在JS中,可以通过 setDate()、setMont…

    JavaScript 2023年5月27日
    00
  • 使用firebug进行调试javascript的示例

    使用 Firebug 进行调试 JavaScript 是前端开发中非常常见的操作之一,下面是一个完整的攻略过程,包括如何安装和使用 Firebug 进行调试 JavaScript 的示例说明: 安装 Firebug 若要使用 Firebug 进行调试 JavaScript,首先要安装 Firebug 扩展,具体操作步骤如下: 打开 Firefox 浏览器,点…

    JavaScript 2023年6月10日
    00
  • JS如何根据条件取出数组中对应项

    根据您的要求,我来详细讲解一下“JS如何根据条件取出数组中对应项”的完整攻略。 1. 使用filter()方法 filter()方法可以创建一个新数组,其中包含满足指定条件的所有元素。其接受一个回调函数作为参数,可以指定一个条件来筛选数组中的元素。该回调函数接受数组中的每个元素作为参数,返回 true 或 false。如果返回 true,则将该元素添加到新数…

    JavaScript 2023年5月27日
    00
  • 跟我学习javascript的var预解析与函数声明提升

    下面就是“跟我学习JavaScript的var预解析与函数声明提升”的完整攻略。 JavaScript中的预解析 在JavaScript中,预解析是指在执行代码之前,将变量和函数的声明提前,这种行为称为预解析或者预编译。 var的预解析 在JavaScript中,var关键字声明的变量会在预解析阶段被提前声明。但是需要注意的是,只有声明会被提前,赋值不会被提…

    JavaScript 2023年5月28日
    00
  • JS前端开发之exec()和match()的对比使用

    JS前端开发之exec()和match()的对比使用 简介 在JavaScript中,字符串对象自带了match()和exec()方法用于字符串的正则匹配。两者的区别在于返回值不同。 match()方法 match()方法是String对象的一个方法。该方法接收一个正则表达式作为参数,并返回一个匹配结果数组,如果未匹配到则返回null。如果不给该方法传递参数…

    JavaScript 2023年6月10日
    00
  • 手机图片预览插件photoswipe.js使用总结

    手机图片预览插件photoswipe.js使用总结 介绍 Photoswipe是一个JavaScript库,用于提供可缩放的图像轮廓,并适用于所有现代桌面和移动浏览器,具有触摸屏支持和响应式图像大小。它通过全局的脚本文件或模块的方式来使用。它可以很容易地与jQuery、React、Angular、Vue等框架集成。 安装 Photoswipe是一个基于jQu…

    JavaScript 2023年6月10日
    00
  • JS组件Bootstrap Table表格行拖拽效果实现代码

    Bootstrap Table是一个基于Bootstrap框架的网页表格插件,它提供了丰富的功能和灵活性,适合用于展示和处理大量数据。在Bootstrap Table中,通过行拖拽可以实现多个行的交换和排序,能够提供更方便快捷的用户体验。下面是实现Bootstrap Table表格行拖拽效果的完整攻略。 1. 安装Bootstrap Table和相关插件 首…

    JavaScript 2023年5月19日
    00
  • C#后台调用前台javascript的五种方法小结

    下面是详细讲解“C#后台调用前台javascript的五种方法小结”的完整攻略。 简介 在Web开发中,经常会需要在C#后台中调用前台的JavaScript函数,实现前后台数据的交互。本篇文章将介绍五种方法,分别是: RegisterClientScriptBlock:在页面中注册客户端脚本代码块; RegisterStartupScript:在页面中注册客…

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