使用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 相关文章推荐
Array, Array Constructor, for in loop, typeof, instanceOf
Sep 13 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
Dec 25 Javascript
JS 在指定数组中随机取出N个不重复的数据
Jun 10 Javascript
javascript事件模型实例分析
Jan 30 Javascript
JavaScript中字符串拼接的基本方法
Jul 07 Javascript
jquery验证邮箱格式是否正确实例讲解
Nov 16 Javascript
jquery点击展示与隐藏更多内容
Dec 03 Javascript
前端页面文件拖拽上传模块js代码示例
May 19 Javascript
Javascript 之封装(Package)
Sep 14 Javascript
解决node-sass偶尔安装失败的方法小结
Dec 05 Javascript
jquery实现点击弹出对话框
Feb 08 jQuery
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
Oct 15 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
smarty section简介与用法分析
2008/10/03 PHP
php实现zip文件解压操作
2015/11/03 PHP
joomla组件开发入门教程
2016/05/04 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
2010/09/14 Javascript
jquery 操作css样式、位置、尺寸方法汇总
2014/11/28 Javascript
nodejs开发微博实例
2015/03/25 NodeJs
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
微信小程序登录数据解密及状态维持实例详解
2019/05/06 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
python使用wxpython开发简单记事本的方法
2015/05/20 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
Python中如何导入类示例详解
2019/04/17 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
Square Off美国/加拿大:世界上最聪明的国际象棋棋盘
2018/12/06 全球购物
印度在线购物网站:Paytmmall
2019/07/24 全球购物
两道JAVA笔试题
2016/09/14 面试题
大专应届生个人简历的自我评价
2013/10/15 职场文书
委托书范文
2014/04/02 职场文书
低碳环保倡议书
2014/04/14 职场文书
学习张林森心得体会
2014/09/10 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
学校开学标语
2014/10/06 职场文书
商铺门面租房协议书
2014/10/21 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers