使用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 动态添加样式规则 W3C校检
Dec 25 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
Mar 14 Javascript
图片上传插件jquery.uploadify详解
Nov 15 Javascript
JQuery 图片滚动轮播示例代码
Mar 24 Javascript
深入理解Java线程编程中的阻塞队列容器
Dec 07 Javascript
原生js实现addClass,removeClass,hasClass方法
Apr 27 Javascript
深入浅析JavaScript中的scrollTop
Jul 11 Javascript
JS弹出新窗口被拦截的解决方法
Aug 09 Javascript
JS产生随机数的用法小结
Dec 10 Javascript
微信小程序如何实现全局重新加载
Jun 05 Javascript
Node.js API详解之 querystring用法实例分析
Apr 29 Javascript
node.js如何自定义实现一个EventEmitter
Jul 16 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 编写的 25个游戏脚本
2009/05/11 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
vue组件实例解析
2017/01/10 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
js实现随机点名小功能
2017/08/17 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
Python模拟登录12306的方法
2014/12/30 Python
Python实现两款计算器功能示例
2017/12/19 Python
基于python 二维数组及画图的实例详解
2018/04/03 Python
python numpy格式化打印的实例
2018/05/14 Python
python dlib人脸识别代码实例
2019/04/04 Python
python set集合使用方法解析
2019/11/05 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
MySQL面试题目集锦
2016/04/14 面试题
《北京的春节》教学反思
2014/04/07 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
golang 在windows中设置环境变量的操作
2021/04/29 Golang