使用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 相关文章推荐
js操作select控件的几种方法
Jun 02 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
Mar 29 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
Aug 19 Javascript
DOM基础教程之使用DOM控制表单
Jan 20 Javascript
浅谈js中test()函数在正则中的使用
Aug 19 Javascript
概述一个页面从输入URL到页面加载完的过程
Dec 16 Javascript
JavaScript中数据类型转换总结
Dec 25 Javascript
JS简单实现数组去重的方法分析
Oct 14 Javascript
Vue实现web分页组件详解
Nov 28 Javascript
vue中实现methods一个方法调用另外一个方法
Feb 08 Javascript
微信小程序实现二维码签到考勤系统
Jan 16 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
Jan 07 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的无限分类实现想法~
2007/01/02 PHP
PHP 日期时间函数的高级应用技巧
2009/10/10 PHP
php 获取全局变量的代码
2011/04/21 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
PHP类的声明与实例化及构造方法与析构方法详解
2016/01/26 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
php无限极分类实现方法分析
2019/07/04 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
python3使用urllib模块制作网络爬虫
2016/04/08 Python
python requests 使用快速入门
2017/08/31 Python
python多进程实现文件下载传输功能
2018/07/28 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
python库matplotlib绘制坐标图
2019/10/18 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
静心口服夜广告词
2014/03/20 职场文书
科技节口号
2014/06/19 职场文书
班级读书活动总结
2014/06/30 职场文书