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

下面是详细的讲解:

简介

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日

相关文章

  • CSS属性探秘系列(六):margin

    我来为你详细讲解”CSS属性探秘系列(六):margin”的完整攻略。 margin简介 在HTML文档中,每个元素都可以添加外边距(margin)。Margin是元素与外部元素之间的间距。通常用于控制元素之间的距离和布局。Margin可以通过CSS来指定。该属性定义元素四个方向的外边距。 CSS中margin的语法 margin属性在CSS中的用法如下: …

    css 2023年6月9日
    00
  • thinkphp jquery实现图片上传和预览效果

    下面是详细的攻略。首先,我们需要明确一下需要具备的技能和环境: 技能要求:- 熟悉thinkphp的基本操作和使用- 掌握jquery的基本操作和使用- 能够使用HTML5的FormData和FileReader对象实现文件上传和预览功能 环境要求:- PHP环境- 浏览器支持HTML5- 支持jquery的Web开发环境 接下来,我们将分步骤引导您完成整个…

    css 2023年6月11日
    00
  • 通过iframe监听一个DOM元素大小变化

    如果要通过iframe监听一个DOM元素的大小变化,可以使用MutationObserver API。MutationObserver API用于监听DOM的变化并作出相应的处理。在此过程中,我们需要遵循以下步骤: 使用iframe嵌入目标DOM元素 首先,我们需要在html文档中使用iframe标签,嵌入要监听的DOM元素,代码如下: <iframe…

    css 2023年6月9日
    00
  • jQuery实现单击按钮遮罩弹出对话框效果(1)

    下面是详细的攻略: jQuery实现单击按钮遮罩弹出对话框效果(1) 1. 准备工作 在开始之前,我们需要引入jQuery库,以及编写HTML和CSS代码。具体来说,我们需要以下三部分代码: 1.1 引入jQuery库 在编写jQuery代码之前,需要先从官方网站(https://jquery.com/)下载jQuery库,并在HTML文件中引入。常见的引入…

    css 2023年6月10日
    00
  • 解决layui表格的表头不滚动的问题

    解决layui表格的表头不滚动的问题,可以采用如下三种方法: 解决layui表格的表头不滚动的问题 方法一:使用“xscroll”属性 在layui表格的table标签中加入xscroll属性,将xscroll属性的值设为true即可实现表头固定,内容可滚动。 示例如下: <table class="layui-table" lay…

    css 2023年6月10日
    00
  • vue中如何动态设置css样式的hover

    Vue中动态设置hover样式可以通过相关的CSS伪类来实现。下面将为您提供具体的操作步骤: 定义需要进行hover样式变化的CSS类名; .box { background-color: #eee; width: 100px; height: 100px; transition: all .2s; } .box:hover { background-col…

    css 2023年6月9日
    00
  • Html5适配iphoneX刘海屏的简单实现

    下面是“Html5适配iPhoneX刘海屏的简单实现”的详细攻略: 1.了解IphoneX刘海屏特征 在适配IphoneX刘海屏过程中,我们首先需要了解IphoneX刘海屏的特征,常见的IphoneX刘海屏特征如下: 屏幕分辨率为1125px × 2436px 顶部刘海区域高度为44px 底部Home区域高度为34px 知道了这些特征之后,我们才能进行正确的…

    css 2023年6月11日
    00
  • JS随机漂浮广告代码具体实例

    下面我来详细介绍一下“JS随机漂浮广告代码”的具体实例攻略。 什么是JS随机漂浮广告代码 “JS随机漂浮广告代码”指的是使用JavaScript编写的一段代码,用于实现网页上随机漂浮的广告效果。随机漂浮广告效果是指广告图片在页面中不断地上下、左右移动,突出广告的宣传效果。 实现随机漂浮广告的步骤 实现随机漂浮广告的步骤主要包括以下几个方面: 设计广告图片 编…

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