使用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 相关文章推荐
IE与FireFox的兼容性问题分析
Apr 22 Javascript
JavaScript中的prototype使用说明
Apr 13 Javascript
js 图片等比例缩放代码
May 13 Javascript
javascript简单实现命名空间效果
Mar 06 Javascript
javascript中call,apply,bind的用法对比分析
Feb 12 Javascript
Ionic项目中Native Camera的使用方法
Jun 07 Javascript
详解require.js配置路径的用法和css的引入
Sep 06 Javascript
微信小程序 页面滑动事件的实例详解
Oct 12 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
Mar 02 Javascript
Vue中的scoped实现原理及穿透方法
May 15 Javascript
vue实现键盘输入支付密码功能
Aug 18 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
Aug 25 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
PHP5多态性与动态绑定介绍
2015/04/03 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
JS实现浏览器菜单命令
2006/09/05 Javascript
jQuery中的常用事件总结
2009/12/27 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
Vue+Element实现网页版个人简历系统(推荐)
2019/12/31 Javascript
Python Web开发模板引擎优缺点总结
2014/05/06 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
Django跨域资源共享问题(推荐)
2020/03/09 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
Python timeit模块原理及使用方法
2020/10/10 Python
汽修专业学生自我鉴定
2013/11/16 职场文书
医院节能减排方案
2014/06/13 职场文书
法院授权委托书范文
2014/08/02 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
思想品德评语大全
2014/12/31 职场文书
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis