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日

相关文章

  • 兼容IE6的网页最小最大宽度和最小最大高度css写法

    以下是“兼容IE6的网页最小最大宽度和最小最大高度css写法”的完整攻略: 针对最小最大宽度的CSS写法: 在IE6中,我们通常使用属性名为width的方式来定义宽度,但是它不能有效兼容最小最大宽度的情况。针对这种情况,我们可以结合IE6下的html元素的min-width和max-width属性来进行定义,如下所示: /*最小宽度*/ body{ min-…

    css 2023年6月10日
    00
  • Bootstrap组件(一)之菜单

    下面我将详细讲解Bootstrap组件中菜单的使用方法。 1. 菜单简介 Bootstrap菜单提供了一种创建导航列表的简单方法,菜单可以用于创建网站导航、页面标签、下拉列表等等。Bootstrap中的菜单通常使用无序列表(ul)和下拉列表(ul/ol)组成。 2. 静态菜单 静态菜单是最基本的菜单形式,不包括任何交互效果,只是将内容呈现出来。 2.1. 代…

    css 2023年6月10日
    00
  • JSP实现网页访问统计

    请看以下详细讲解。 JSP实现网页访问统计的完整攻略 1. 准备工作 在开始实现网页访问统计之前,需要先完成以下准备工作: 确定统计指标:如访问量、访客数、独立IP数等。 添加统计脚本:在JSP页面底部添加JavaScript脚本,向服务器发送访问统计数据。 创建统计数据库表:用于存储访问统计数据,并准备好与JSP页面相对应的请求参数。 2. 统计脚本的添加…

    css 2023年6月10日
    00
  • 如何使用python docx模块操作word文档

    使用Python的docx模块可以方便地操作Word文档,下面将详细讲解操作步骤: 安装docx模块 首先需要安装docx模块,可以使用pip命令进行安装,命令如下: pip install python-docx 打开Word文档 使用docx模块可以通过以下步骤打开Word文档: import docx # 打开Word文档 doc = docx.Doc…

    css 2023年6月10日
    00
  • flex4.5中CSS选择器的应用小结

    关于“flex4.5中CSS选择器的应用小结”这个主题,下面是我的详细讲解攻略: 一、选择器的基本概念 CSS选择器是一种用来选择页面中某些元素的表达式。选择器可以根据元素的标签名、类名、ID等属性进行选择,更改元素的样式。 常见的CSS选择器有以下几种: 标签选择器:通过元素标签名来选择元素。 类选择器:通过元素的class属性值来选择元素。 ID选择器:…

    css 2023年6月9日
    00
  • css基础知识之选择器使用示例

    让我来为您讲解一下“CSS基础知识之选择器使用示例”的完整攻略。 1. 选择器的基本概念 在CSS中,选择器是一种用来定位特定元素的模式,也是我们在样式表中对元素进行样式设置的入口。CSS中常用的选择器有标签选择器、ID选择器、类选择器、属性选择器、子元素选择器等。 2. 选择器的使用示例 示例1:标签选择器 标签选择器是CSS中最常用的选择器之一,它根据H…

    css 2023年6月10日
    00
  • JS中定位 position 的使用实例代码

    JS中定位(position)的使用实例代码是Web开发中经常用到的。它可以通过CSS属性进行定义,如position: static; position: relative; position: absolute; 和 position: fixed;。本篇攻略将详细讲解JS中定位(position)的使用,并提供两个使用实例代码说明。 一、定位posit…

    css 2023年6月10日
    00
  • IE8 滤镜效果filter:alpha(opacity=20);IE下失效出现黑色

    下面是关于“IE8 滤镜效果filter:alpha(opacity=20);IE下失效出现黑色”的完整攻略。 背景说明 在IE8及以下的浏览器中,为了实现透明效果,我们需要使用filter:alpha(opacity=20)这个CSS样式。但是,有时候在IE下面实现透明效果时会出现黑色的背景,这是由于IE8滤镜效果的特性引起的。 解决方法 1. 加back…

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