javascript单张多张图无缝滚动实例代码

yizhihongxing

下面是详细的讲解:

简介

JavaScript无缝滚动是一种常见的网页效果之一。实现无缝滚动需要用到一些JavaScript知识,结合HTML和CSS来完成。这里我们将讲解如何实现一个单张或多张图片的无缝滚动效果。

实现步骤

1. HTML结构

首先,我们需要在HTML中添加一个容器,并在容器内添加需要滚动的图片。

<div class="slider-container">
  <ul class="slider-list">
    <li><img src="image1.jpg" /></li>
    <li><img src="image2.jpg" /></li>
    <li><img src="image3.jpg" /></li>
  </ul>
</div>

2. CSS样式

接下来,我们需要为容器和图片添加样式,样式的主要作用是设置容器和图片的宽度、高度、浮动、定位等属性。
例如,设置容器的宽度为800px,高度为400px,图片的宽度为400px,高度为400px,并设置图片的浮动方向为左侧。

.slider-container{
  width: 800px;
  height: 400px;
  overflow: hidden;
  /*隐藏超出容器的内容*/
  position: relative;
  /*相对定位*/
}

.slider-list{
  position: absolute;
  /*绝对定位*/
  left: 0;
  top: 0;
  margin: 0;
  padding: 0;
  width: 2400px;
  /* 三张图片,每张图片的宽度为 800px,因此总宽度为 2400px */
}

.slider-list li{
  float: left;
  display: inline;
  width: 800px;
  height: 400px;
  margin-right: -3px;
  /*为了消除图片之间的间隙,需要将margin-right设置为负值*/
}

.slider-list li img{
  width: 100%;
  height: 100%;
}

3. JavaScript实现

实现无缝滚动的关键就是使用JavaScript来动态地调整容器中的图片位置。

在实现过程中,我们需要通过setInterval函数来实现图片的自动滚动,通过计算图片的偏移量来完成无缝滚动的效果。下面是示例代码:

window.onload=function(){
  var container=document.querySelector('.slider-container');
  var list=document.querySelector('.slider-list');
  var lis=list.querySelectorAll('li');
  var width=lis[0].offsetWidth;//每张图片的宽度
  var len=lis.length;//图片数量
  var timer=null;
  list.innerHTML+=list.innerHTML;//复制一份图片列表
  list.style.width=len*width*2+'px';//总宽度为两倍图片列表宽度

  function move(){
    if(container.scrollLeft>list.offsetWidth/2){//判断图片是否滚动到一半
      container.scrollLeft-=list.offsetWidth/2;//回到真正的起点
    }else{
      container.scrollLeft++;//往右滚动
    }
  }
  timer=setInterval(move,10);//每10毫秒滚动一次

  //鼠标进入容器停止滚动,鼠标离开容器恢复滚动
  container.onmouseover=function(){
    clearInterval(timer);
  }
  container.onmouseout=function(){
    timer=setInterval(move,10);
  }
}

以上代码实现了一张图片的无缝滚动。如果需要实现多张图片的无缝滚动,只需要将容器和图片的宽度、图片数量等值修改即可。

下面是另外一种示例代码,实现了多张图片的无缝滚动。代码说明详见注释:

window.onload=function(){
  var container=document.querySelector('.slider-container');
  var list=document.querySelector('.slider-list');
  var lis=list.querySelectorAll('li');
  var width=lis[0].offsetWidth;//每张图片的宽度取第一张图片的宽度
  var len=lis.length;//图片数量
  var timer=null;
  list.innerHTML+=list.innerHTML;//复制一份图片列表
  list.style.width=len*width*2+'px';//总宽度为两倍图片列表宽度

  var num=1;//显示图片的数量
  var time=3000;//时间间隔为3秒
  var play=null;//定时器

  function move(){
    if(container.scrollLeft%width==0){//已经完全滚动到一张图片
      clearInterval(play);//先清除定时器
      play=setTimeout(function(){scrollimg();},time);//2秒后重新开始滚动
    }else{
      container.scrollLeft++;
      if(container.scrollLeft>=list.offsetWidth/2){//滚动到最后一张时,立即回到真正的起点
        container.scrollLeft=0;
      }
    }
  }

  function scrollimg(){
    play=setInterval(move,10);//每10毫秒滚动一次
  }

  scrollimg();//页面加载完成时,执行滚动函数

  //鼠标进入容器停止滚动,鼠标离开容器恢复滚动
  container.onmouseover=function(){
    clearInterval(timer);
  }
  container.onmouseout=function(){
    timer=setInterval(move,10);
  }
}

结语

以上就是JavaScript实现单张和多张图片的无缝滚动效果的完整攻略。希望对您有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript单张多张图无缝滚动实例代码 - Python技术站

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

相关文章

  • 一次VUE项目中遇到XSS攻击的实战记录

    我会简单介绍下一次VUE项目中遇到XSS攻击的实战记录以及,如何防御这种攻击。 什么是XSS攻击 XSS (Cross site scripting)跨站脚本攻击是一种代码注入攻击。它是攻击者在目标网站注入恶意脚本,当用户访问时,这些脚本会在用户的浏览器中执行,并在用户页面上产生不希望看到的恶意行为。通过这样的方式,攻击者可以利用漏洞,窃取用户的敏感信息,或…

    css 2023年6月10日
    00
  • BootStrap创建响应式导航条实例代码

    下面是详细的BootStrap创建响应式导航条实例的攻略: 一、创建HTML文档结构 创建一个基本的HTML结构,并且引入BootStrap的CSS和JavaScript文件。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <…

    css 2023年6月11日
    00
  • 最新百度PM告诉你SEO这六个方面的优化原则(干货)

    最新百度PM告诉你SEO这六个方面的优化原则(干货) 本文介绍了最新的百度搜索引擎优化原则,将涵盖以下六个方面的优化原则: 网站内容要有价值 关键词选择要精准 网站结构要清晰 链接质量要高 移动端适配要到位 速度优化要充分 下面将从这六个方面给出详细的优化攻略。 1. 网站内容要有价值 为了让用户有更好的体验,同时也是满足百度对内容要求的基础,网站内容需要提…

    css 2023年6月10日
    00
  • Vue-cropper 图片裁剪的基本原理及思路讲解

    Vue-cropper是一款基于Vue.js的图片裁剪组件,实现了图片的裁剪、拖动、旋转、缩放等功能。其基本原理和思路如下: 加载图片使用HTML5的File API来加载需要裁剪的图片。用户需要选择需要裁剪的图片,通过input标签的file类型,使用户选择图片之后,触发change事件,通过event.target.files[0]获取到文件对象,进而使…

    css 2023年6月10日
    00
  • jQuery实现百度图片移入移出内容提示框上下左右移动的效果

    要实现“jQuery实现百度图片移入移出内容提示框上下左右移动的效果”的功能,我们需要使用jQuery的动画效果,包括fadeIn/fadeOut和animate两种方法。 下面是具体的实现步骤: 建立HTML骨架结构:包含图片列表和内容提示框两个部分。 <div class="img-list"> <img src=&…

    css 2023年6月10日
    00
  • Bootstrap每天必学之面板

    Bootstrap每天必学之面板 Bootstrap 是一个流行的 HTML、CSS 和 JavaScript 框架,提供了丰富的 UI 组件,使得构建现代化 Web 应用变得更加轻松和高效。面板是 Bootstrap 组件库中一个常用的 UI 控件,用于展示内容块,并提供一个漂亮的边框和样式。 本篇文章将为大家介绍如何创建和使用 Bootstrap 面板,…

    css 2023年6月9日
    00
  • JS库之Highlight.js的用法详解

    JS库之Highlight.js的用法详解 Highlight.js 是一个轻量级、易于使用且支持语法高亮的 JavaScript 库。它适用于各种开发语言,并且内置大量的代码样式和主题,用户可以自定义自己需要的样式。 安装 安装 Highlight.js 非常简单,可以通过 CDN 或者直接下载源代码来引用。可以在 HTML 文件中直接引用 Highlig…

    css 2023年6月9日
    00
  • 如何通过 CSS 写出火焰效果

    如何通过 CSS 写出火焰效果? 通过 CSS 写出火焰效果可以为网页增添一份动感和活力。以下是关于如何通过 CSS 写出火焰效果的完整攻略。 步骤一:创建 HTML 结构 首先,需要在 HTML 文件中创建一个容器元素,用于包含火焰效果。以下是一个示例: <div class="fire"></div> 步骤二:…

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