原生js轮播特效

yizhihongxing

原生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日

相关文章

  • json字符串之间的相互转换示例代码

    下面是讲解“JSON字符串之间的相互转换示例代码”的完整攻略,包含两条示例说明。 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。JSON格式采用键值对的方式来表示数据,方便数据的存储和传输。 如何将JSON字符串转换为JavaScript对象? 可以使用 JSON.parse() 方法将JSON…

    JavaScript 2023年5月27日
    00
  • 谈谈JavaScript数组常用方法总结

    谈谈JavaScript数组常用方法总结 1. 什么是JavaScript数组 JavaScript数组可以理解为一组有序的数据集合,可以存储任意类型的数据,包括数字、字符串、对象、函数等等。数组是JavaScript中最常用的数据结构之一,因为它能够快速方便地对数据进行排序、搜索、过滤、截取等操作。 2. JavaScript数组常用方法 下面列举了一些常…

    JavaScript 2023年5月18日
    00
  • JavaScript中DOM操作常用事件总结

    下面将详细讲解“JavaScript中DOM操作常用事件总结”的攻略。 标题 “JavaScript中DOM操作常用事件总结” 介绍 在JavaScript中,DOM操作是非常常见的,而操作DOM的过程中,经常会用到事件。本攻略将对JavaScript中常用的DOM事件进行总结和讲解。 常用DOM事件 以下是常用的DOM事件: click – 鼠标点击事件 …

    JavaScript 2023年6月10日
    00
  • JavaScript把局部变量变成全局变量的方法

    在JavaScript中,如果在一个函数内部声明一个变量,它将会被视为局部变量,只能在那个函数内部使用。但是,有时我们需要将局部变量变为全局变量,这时可以使用以下方法: 方法一:全局变量赋值 将变量赋值给全局变量,就可以使变量成为全局变量。 function testFunction() { var localVariable = "I am a …

    JavaScript 2023年6月11日
    00
  • js与jquery回车提交的方法

    下面详细讲解js与jQuery回车提交的方法的完整攻略。 什么是回车提交 回车提交是指用户在输入框内输入内容后按下键盘上的回车键,就会自动提交表单或执行相应的操作,而不需要再点击提交按钮。在表单或查询页面中,这是一种很方便的操作方式。 JavaScript回车提交 Javascript可以通过监听页面上的键盘操作,并且每次键盘按下事件被触发时执行代码。利用这…

    JavaScript 2023年6月11日
    00
  • 浅析javascript的间隔调用和延时调用

    浅析javascript的间隔调用和延时调用 在JavaScript中,有两种常见的调用方式:间隔调用和延时调用。 延时调用 延时调用意思是在一段时间之后才执行函数,在JavaScript中使用setTimeout()方法来实现。 setTimeout()方法需要接收两个参数,第一个参数是要执行的函数,第二个参数是时间(单位为毫秒)。在例子中,代码会在3秒之…

    JavaScript 2023年6月11日
    00
  • JavaScript对象扩展方法的用法详解

    JavaScript对象扩展方法的用法详解 JavaScript对象扩展方法,是指在原有对象上添加新的属性或方法,使得对象拥有更多的功能和特性。使用对象扩展方法的好处在于,能够避免繁琐的重复代码,提高代码的可维护性。 添加对象属性 直接添加 可以使用点号(.)或方括号([])来添加对象属性。下面是两个添加属性的示例。 // 使用点号添加属性 var obj …

    JavaScript 2023年5月27日
    00
  • JS计算距当前时间的时间差实例

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

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