js实现图片无缝滚动特效

下面是“js实现图片无缝滚动特效”的完整攻略:

简介

无缝滚动特效是网页设计中常用的效果之一,可以使页面更加生动和丰富。JS实现图片无缝滚动特效需要以下几个步骤:

  1. HTML布局;
  2. CSS样式;
  3. JS编写。

HTML布局

在HTML中,需要先设置好图片的容器和展示区域。

<div class="scroll-container">
  <div class="scroll-content">
    <ul>
      <li><img src="img1.jpg" alt=""></li>
      <li><img src="img2.jpg" alt=""></li>
      <li><img src="img3.jpg" alt=""></li>
      <li><img src="img4.jpg" alt=""></li>
      <li><img src="img5.jpg" alt=""></li>
      <!-- 图片数量可以根据需求进行更改 -->
    </ul>
  </div>
</div>

CSS样式

为了实现无缝滚动,需要设置一些CSS样式,其中主要包括以下几点:

  1. 设置容器的宽度和高度;
  2. 设置容器的 overflow 为 hidden,使得图片溢出部分被隐藏;
  3. 对 ul 设置宽度为图片张数乘以单张图片宽度,使得 ul 的宽度能够容纳所有图片;
  4. 对 ul 以及其 li 设置 display 为 inline-block,使得 ul 中的 li 并排显示;
  5. 对 ul 以及其 li 设置 padding 为 0 和 margin 为 0,取消默认样式;
  6. 对 li 中的 img 设置宽度和高度等于单张图片的宽高;
  7. 对 li 中的 img 设置 float 为 left,使得图片水平排列。

下面是样式代码:

.scroll-container {
  width: 100%;
  height: 300px;
  overflow: hidden;
}

.scroll-content {
  width: 5000px;
}

.scroll-content ul {
  width: 2500px;
  display: flex;
  margin: 0;
  padding: 0;
}

.scroll-content ul li {
  display: inline-block;
  padding: 0;
  margin: 0;
}

.scroll-content ul li img {
  width: 500px;
  height: 300px;
  float: left;
}

JS编写

实现无缝滚动效果需要用到 JS 中的 setInterval 方法和 clearInterval 方法。步骤如下:

  1. 获取图片容器(ul)元素本身以及其中所有 li 元素;
  2. 利用 setInterval 方法每隔一定时间调用一次滚动函数;
  3. 滚动函数实现以下逻辑:
  4. 判断当前是否滚动到最后一张图片,如果是则立即将 ul 的 left 设为 0,重新开始一轮滚动;
  5. 否则在当前基础上继续滑动,直到下一张图片的位置;
  6. 利用 clearInterval 方法停止滚动。

下面是代码示例:

var timer = null;
var scrollElem = document.querySelector(".scroll-content ul");
var scrollImg = document.querySelectorAll(".scroll-content ul li");

function start() {
  slideTimer = setInterval(function () {
    intervalSlide();
  }, 2000);
}

function intervalSlide() {
  var bannerWidth = parseInt(getComputedStyle(scrollElem).width);

  if (scrollElem.offsetLeft <= -(scrollImg.length - 1) * bannerWidth) {
    scrollElem.style.left = "0px";
  } else {
    var newLeft = scrollElem.offsetLeft - bannerWidth;
    scrollElem.style.left = newLeft + "px";
  }
}

function stop() {
  clearInterval(slideTimer);
}

start();

示例

下面是两个完整的示例,可以参考:

示例一

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>JS实现无缝滚动特效</title>
  <style>
    .scroll-container {
      overflow: hidden;
      position: relative;
      width: 100%;
      height: 400px;
    }
    .scroll-content ul {
      list-style: none;
      position: absolute;
      left: 0;
      top: 0;
    }
    .scroll-content ul li {
      float: left;
      width: 1000px;
    }
    .scroll-content ul li img {
      width: 100%;
    }
  </style>
</head>
<body>
  <div class="scroll-container">
    <div class="scroll-content">
      <ul>
        <li><img src="./images/1.jpg" alt=""></li>
        <li><img src="./images/2.jpg" alt=""></li>
        <li><img src="./images/3.jpg" alt=""></li>
        <li><img src="./images/4.jpg" alt=""></li>
        <li><img src="./images/5.jpg" alt=""></li>
      </ul>
    </div>
  </div>
  <script>
    var timer = null;
    var scrollElem = document.querySelector(".scroll-content ul");
    var scrollImg = document.querySelectorAll(".scroll-content ul li");

    function start() {
      slideTimer = setInterval(function () {
        intervalSlide();
      }, 2000);
    }

    function intervalSlide() {
      var bannerWidth = parseInt(getComputedStyle(scrollElem).width);

      if (scrollElem.offsetLeft <= -(scrollImg.length - 1) * bannerWidth) {
        scrollElem.style.left = "0px";
      } else {
        var newLeft = scrollElem.offsetLeft - bannerWidth;
        scrollElem.style.left = newLeft + "px";
      }
    }

    function stop() {
      clearInterval(slideTimer);
    }

    start();
  </script>
</body>
</html>

示例二

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>JS实现无缝滚动特效</title>
  <style>
    .scroll-container {
      width: 100%;
      height: 400px;
      overflow: hidden;
    }
    .scroll-content {
      width: 5000px;
    }
    .scroll-content ul {
      width: 2500px;
      display: flex;
      margin: 0;
      padding: 0;
    }
    .scroll-content ul li {
      display: inline-block;
      padding: 0;
      margin: 0;
    }
    .scroll-content ul li img {
      width: 1000px;
      height: 400px;
      float: left;
    }
  </style>
</head>
<body>
  <div class="scroll-container">
    <div class="scroll-content">
      <ul>
        <li><img src="./images/1.jpg" alt=""></li>
        <li><img src="./images/2.jpg" alt=""></li>
        <li><img src="./images/3.jpg" alt=""></li>
        <li><img src="./images/4.jpg" alt=""></li>
        <li><img src="./images/5.jpg" alt=""></li>
      </ul>
    </div>
  </div>
  <script>
    var timer = null;
    var scrollElem = document.querySelector(".scroll-content ul");
    var scrollImg = document.querySelectorAll(".scroll-content ul li");

    function start() {
      slideTimer = setInterval(function () {
        intervalSlide();
      }, 2000);
    }

    function intervalSlide() {
      var bannerWidth = parseInt(getComputedStyle(scrollElem).width);

      if (scrollElem.offsetLeft <= -(scrollImg.length - 1) * bannerWidth) {
        scrollElem.style.left = "0px";
      } else {
        var newLeft = scrollElem.offsetLeft - bannerWidth;
        scrollElem.style.left = newLeft + "px";
      }
    }

    function stop() {
      clearInterval(slideTimer);
    }

    start();
  </script>
</body>
</html>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现图片无缝滚动特效 - Python技术站

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

相关文章

  • Zen Coding 快速编写HTML/CSS代码的实现

    Zen Coding 快速编写HTML/CSS代码的实现 Zen Coding是一种快速编写HTML/CSS代码的技术,它可以通过简单的缩写快速生成HTML/CSS代码。本攻略将详细讲解Zen Coding的实现方法,包括语法、常用缩写和示例说明。 1. 语法 Zen Coding的语法非常简单,只需要使用一些简单的缩写即可。下面是一些常用的缩写: div:…

    css 2023年5月18日
    00
  • jQuery 打造动态渐变按钮 详细图文教程

    jQuery打造动态渐变按钮详细图文教程 简介 本教程将带您详细了解如何使用jQuery和CSS打造一个动态渐变按钮。该按钮拥有鼠标悬停、点击等交互效果,并且可以自定义按钮的颜色和渐变方式。 准备工作 在开始之前,请确保您已经了解了以下知识: HTML / CSS 基础 JavaScript / jQuery 基础 了解如何使用CSS3渐变 HTML结构 首…

    css 2023年6月9日
    00
  • CSS3绘制不规则图形的一些方法示例

    CSS3绘制不规则图形的一些方法示例 CSS3提供了许多方法来绘制不规则图形,如圆形、三角形、多边形等标准形状,以及更不规则的形状,如波浪线、星形、爱心等等。下面将介绍一些CSS3绘制不规则图形的方法,希望对大家有所帮助。 绘制三角形 要绘制三角形,可以使用CSS3的transform属性和border属性。代码如下: .triangle { width: …

    css 2023年6月10日
    00
  • css 中background 设置文本框背景图 的方法

    当需要给文本框添加背景图片时,可以使用 CSS 中的 background 属性。下面是设置文本框背景图片的攻略: 1. 使用 background-image 属性 background-image 属性可以设置文本框的背景图片。为了让背景图片和文本框一起显示,还需要设置一些其他的属性,比如 background-size 和 padding。以下是示例代…

    css 2023年6月9日
    00
  • IE矩阵Matrix滤镜旋转与缩放及如何结合transform

    IE矩阵(Matrix)是IE浏览器独有的CSS属性,可以实现元素的旋转、缩放、扭曲等变形效果。结合transform属性,可以进一步扩展变形效果。下面是详细的攻略: 如何使用IE矩阵(Matrix)实现旋转与缩放 语法 filter: progid:DXImageTransform.Microsoft.Matrix(sizingMethod=’auto e…

    css 2023年6月11日
    00
  • 引入css的四种方式总结(分享)

    我来为你详细讲解“引入CSS的四种方式总结(分享)”的完整攻略。 引入CSS的四种方式总结(分享) 在网页开发中,CSS是必不可少的。为了让页面获得各种各样的样式和布局,我们需要引入CSS文件。而引入CSS文件的方式一般有四种,分别是内联样式、嵌入式样式、外部样式和导入样式。 一、内联样式 内联样式就是在HTML标签中直接添加样式属性,这种方式适用于只有一两…

    css 2023年6月9日
    00
  • css3一款3D字体带阴影效果的实现步骤

    下面是详细讲解“CSS3一款3D字体带阴影效果的实现步骤”的完整攻略。 1. 编写HTML代码 首先,我们需要在HTML页面中添加要展示的文本。以实现一个带有3D字体和阴影效果的标题文本为例,可以在HTML代码中添加以下内容: <h1 class="font-effect-3d">3D TITLE</h1> 这里我…

    css 2023年6月9日
    00
  • js获取某元素的class里面的css属性值代码

    获取某元素的class里面的CSS属性值,在JavaScript中可以使用以下方法: 方法一:使用getAttribute方法 通过getAttribute方法获取class属性的值,然后通过cssText属性获取样式表中的CSS值。 示例代码如下: // 获取element元素下class为test的元素的背景颜色 var element = docume…

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