原生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 function定义函数使用心得

    那么让我们来详细讲解一下“js function定义函数使用心得”的完整攻略。 1. 定义函数 在JavaScript中,定义函数主要有两种方式:函数声明和函数表达式。 1.1 函数声明 函数声明由function关键字后跟函数名和包含在一对圆括号中的参数列表构成,其语法格式如下: function functionName(parameter1, para…

    JavaScript 2023年5月27日
    00
  • Python下载懒人图库JavaScript特效

    Python下载懒人图库JavaScript特效攻略 在编写网站时,我们可能需要使用到 JavaScript 特效。这时候就需要一些高质量的特效图片来装饰网站,懒人图库是一款专门提供免费高清图片下载的网站。本攻略介绍如何通过 Python 在懒人图库中下载 JavaScript 特效图片。 步骤 1:安装 Python requests 库 在使用 Pyth…

    JavaScript 2023年5月28日
    00
  • Bootstrap 表单验证formValidation 实现远程验证功能

    这里是详细讲解“Bootstrap 表单验证formValidation 实现远程验证功能”的完整攻略: 什么是 Bootstrap 表单验证 formValidation Bootstrap 表单验证 formValidation 是一种基于 jQuery 和 Bootstrap 的前端表单验证插件,它可以帮助开发者实现对表单数据的合法性检查。与其他前端表…

    JavaScript 2023年6月10日
    00
  • JS promise 的回调和 setTimeout 的回调到底谁先执行

    当JS中存在多个回调函数时,它们的执行顺序由它们注册的顺序决定。考虑以下例子: setTimeout(() => { console.log(‘Timeout callback’); }, 0); Promise.resolve().then(() => { console.log(‘Promise callback’); }); 这里我们有一个…

    JavaScript 2023年5月28日
    00
  • javascript正则表达式参数/g与/i及/gi的使用指南

    JavaScript正则表达式是一种强大的文本处理工具,可以用于匹配、搜索、替换和验证字符串。正则表达式由模式和标志组成,其中标志指定了匹配时应该如何搜索。本攻略将介绍正则表达式参数/g、/i及/gi的使用指南,并提供两个示例。 /g全局搜索 /g是一个全局搜索标志。它告诉正则表达式引擎在字符串中查找所有匹配项。如果不使用/g标志,则正则表达式仅会搜索第一个…

    JavaScript 2023年6月10日
    00
  • JS计算网页停留时间代码

    JS计算网页停留时间代码可以帮助网页作者分析读者在该网页上的停留时间,进而提高网站的口碑和用户粘度。以下是JS计算网页停留时间代码的完整攻略。 1. 标准浏览器方法 要实现JS计算网页停留时间的代码,可以使用标准的浏览器方法。具体实现方法如下: 在网页中添加以下代码: <script> var timeStart=0, timeEnd=0, ti…

    JavaScript 2023年5月27日
    00
  • JavaScript基础语法与数据类型介绍

    JavaScript基础语法与数据类型介绍 JavaScript 是一种用于网页编程的脚本语言,该语言核心由 ECMA-262 来定义。本文旨在为初学者提供 JavaScript 基础语法和数据类型的详细介绍。 基本语法 注释 注释是 JavaScript 代码中的重要组成部分,用于说明代码的作用和用法。使用 // 或 /* … */ 来注释单行或多行代…

    JavaScript 2023年5月17日
    00
  • 原生JS实现简单的无缝自动轮播效果

    下面是“原生JS实现简单无缝自动轮播效果”的完整攻略。 确定HTML结构 在实现轮播效果之前,我们需要先确定HTML结构。一般来说,轮播图的容器是一个固定宽度的盒子,里面包含多张图片,我们可以使用ul和li标签来实现这个容器和图片的列表。 HTML结构可以如下所示: <div class="slider"> <ul&gt…

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