使用Javascript简单实现图片无缝滚动


Posted in Javascript onDecember 05, 2014

js无缝滚动效果几乎在任何网页上都能看到它的身影,有的可能是使用插件,其实使用原始的javascript比较简单。

主要的是使用js位置知识。

1.innerHTML:设置或获取元素的html标签

2.scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距

3.offsetWidth:设置或获取指定标签的宽度

4.setInterval():设置方法定时启动

5.clearInterval();清除定时器

效果图:

使用Javascript简单实现图片无缝滚动

先睹为快:demo

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>javascript scroll制作</title>

</head>

<body>

<style>

    /*conment*/

    *{

    margin: 0;

    padding: 0;

  }

  img{max-width: 100%;}

  .container{

    max-width: 620px;

    margin: 0 auto;

    padding-top: 50px;

  }

  .text-center{text-align: center;}

  .list-inline li{

    display: inline-block;

  }

  .hide{display: none;}

  hr{

    margin:20px 0; 

  }

  .tag{

    background-color: #ccc;

    padding: 5px 0;

  }

  .tag li{

    padding: 0 10px;

    border-left: 1px solid #fff;

    cursor:pointer;

  }

  .tag li:first-child{

    border-left: transparent;

  }

  .tag li.active{

    background-color: #ddd;

  }

  .scroll{

    position: relative;

    padding: 10px;

    margin-bottom: 20px;

    background-color: #ddd;

  }

  .wrap{

    overflow: hidden; 

  }

  .content{

    min-width: 3000px;

    height: 200px;

  }

  .content ul{

    float: left;

  }

  .content ul li{

    display: inline-block;

    max-width: 200px;

  }

  #prev,#next{

    width: 50px;

    height: 50px; 

    margin-top: -25px;  

    background-color: #ccc; 

    line-height: 50px; 

    text-align: center;

    cursor: pointer;  

  }

  #prev{

    position: absolute;

    left: 0;

    top:50%;

    border-radius: 0 25px 25px 0;

  }

  #next{

    position: absolute;

    right: 0;

    top:50%; 

    border-radius: 25px 0 0 25px;

  }

</style>

    <div class="container">

        <h1 class="text-center">图片滚动制作</h1>

        <hr>

    <div class="scroll">

      <div class="wrap" id="wrap">

        <div id="content" class="content" >

          <ul id="list1">

            <li> <img src="freelance.gif" alt=""> </li>

            <li> <img src="button.gif" alt=""></li>

            <li> <img src="load.gif" alt=""></li>

            <li> <img src="straw.gif" alt=""></li>      

          </ul>

          <ul id="list2">

          </ul>

        </div>

      </div>

      <div id="prev">

        prev

      </div> 

      <div id="next">

        next

      </div>     

    </div> 

    </div>

<script>

  var wrap=document.getElementById('wrap');

  var list1=document.getElementById('list1');

  var list2=document.getElementById('list2');

  var prev=document.getElementById('prev');

  var next=document.getElementById('next');

  //创建复制一份内容列表

  list2.innerHTML=list1.innerHTML;

  //向左循环滚动

  function scroll(){

    if(wrap.scrollLeft>=list2.offsetWidth){

      wrap.scrollLeft=0;

    }

    else{

      wrap.scrollLeft++;

    }

  }

    timer = setInterval(scroll,1);

  //鼠标停留使用clearInterval()

  wrap.onmouseover=function(){

    clearInterval(timer);

  }

  wrap.onmouseout=function(){

    timer = setInterval(scroll,1);

  }

  //向左加速

  function scroll_l(){

    if(wrap.scrollLeft>=list2.offsetWidth){

      wrap.scrollLeft=0;

    }

    else{

      wrap.scrollLeft++;

    }

  }

  //向右滚动

  function scroll_r(){

    if(wrap.scrollLeft<=0){

      wrap.scrollLeft+=list2.offsetWidth;

    }

    else{

      wrap.scrollLeft--;

    }

  }   

  prev.onclick=function(){

    clearInterval(timer);

    change(0)

  }

  next.onclick=function(){

    clearInterval(timer);

    change(1)

  }

  function change(r){

    if(r==0){

      timer = setInterval(scroll_l,60);

      wrap.onmouseout = function(){

        timer = setInterval(scroll_l,60);

      }

    }

    if(r==1){

      timer = setInterval(scroll_r,60);

      wrap.onmouseout = function(){

        timer = setInterval(scroll_r,60);

      }

    } 

  } 

</script>  

</body>

很简洁实用的代码,小伙伴们根据自己的项目需求,适当美化下即可。

Javascript 相关文章推荐
javascript与CSS复习(三)
Jun 29 Javascript
DOM操作一些常用的属性汇总
Mar 13 Javascript
JS控制FileUpload的上传文件类型实例代码
Oct 07 Javascript
微信小程序 保留小数(toFixed)详细介绍
Nov 16 Javascript
canvas绘制的直线动画
Jan 23 Javascript
微信小程序中的swiper组件详解
Apr 14 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
Jun 19 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
Jul 17 Javascript
Node.js使用Angular简单示例
May 11 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
Oct 29 Javascript
vue使用i18n实现国际化的方法详解
Sep 05 Javascript
JavaScript之Blob对象类型的具体使用方法
Nov 29 Javascript
深入分析js的冒泡事件
Dec 05 #Javascript
Javascript解析URL方法详解
Dec 05 #Javascript
jQuery不兼容input的change事件问题解决过程
Dec 05 #Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
Dec 05 #Javascript
jQuery前端框架easyui使用Dialog时bug处理
Dec 05 #Javascript
Javascript实现获取窗口的大小和位置代码分享
Dec 04 #Javascript
Javascript 中创建自定义对象的方法汇总
Dec 04 #Javascript
You might like
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
Javascript 日期处理之时区问题
2009/10/08 Javascript
jquery validator 插件增加日期比较方法
2010/02/21 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
js评分组件使用详解
2017/06/06 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
详解Angular路由之路由守卫
2018/05/10 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
在Python的Django框架中包装视图函数
2015/07/20 Python
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
浅谈Python生成器generator之next和send的运行流程(详解)
2017/05/08 Python
python处理按钮消息的实例详解
2017/07/11 Python
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
高中生自我评语大全
2014/01/19 职场文书
思想品德课教学反思
2014/02/10 职场文书
捐款感谢信
2015/01/20 职场文书
升职感谢信
2015/01/22 职场文书
开学典礼观后感
2015/06/15 职场文书
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL
P站美图推荐——变身女主角特辑
2022/03/20 日漫