jQuery实现模拟marquee标签效果


Posted in Javascript onJuly 14, 2015

Marquee

      模仿IE下面的marquee效果,鼠标移上去暂停。形成环的主要原理在于每张图片一旦判断出了外面的显示窗口就添加到尾部,用append和prepend模拟数组的push()和shift()。

      代码如下:

HTML

<!doctype html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta content="" name="keywords" />
<meta content="" name="description" />
<meta name="author" content="codetker" />
<head>
<title>模拟marquee标签效果的简单实现</title>
<link href="style/reset.css" rel="stylesheet" type="text/css">
<link href="style/style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/jquery.codetker.marquee.js"></script>
</head>

<body>
  <div class="wrap">
    <div class="marquee">
      <ul>
        <li>
          <a href="" title="">1
            <img src="images/test.jpg" alt="">
          </a>
        </li>
        <li>
          <a href="" title="">2
            <img src="images/test.jpg" alt="">
          </a>
        </li>
        <li>
          <a href="" title="">3
            <img src="images/test.jpg" alt="">
          </a>
        </li>
        <li>
          <a href="" title="">4
            <img src="images/test.jpg" alt="">
          </a>
        </li>
        <li>
          <a href="" title="">5
            <img src="images/test.jpg" alt="">
          </a>
        </li>
        <li>
          <a href="" title="">6
            <img src="images/test.jpg" alt="">
          </a>
        </li>
        <li>
          <a href="" title="">7
            <img src="images/test.jpg" alt="">
          </a>
        </li>
        <li>
          <a href="" title="">8
            <img src="images/test.jpg" alt="">
          </a>
        </li>
      </ul>
    </div>
  </div>
<script type="text/javascript">
  $(document).ready(function(){
    $(".marquee").marquee();
  });
</script>
</body>
</html>

CSS

@charset "utf-8";
/* CSS Document */
body{
  margin:0 0;
  padding:0 0;
  height:100%;
  width:100%;
}
.wrap{
  font-family:"微软雅黑","宋体", Times, "Times New Roman", serif;
  font-size:14px;
  margin:0 0;
  padding:0 0;
  height:100%;
  width:100%;
  overflow:hidden;
}
.marquee{
  margin: 0 auto;
  width: 960px;
  height: 300px;
  overflow: hidden;
}
.marquee ul{
  width: 10000px;
}
.marquee ul li{
  float: left;
  width: 500px;
  text-align: center;
}
.marquee ul li a{

}
.marquee ul li a:hover{
  color: red;
}

JavaScript

/*
 * boxScroll 0.1
 * 兼容IE8,FF,Chrome等常见浏览器
 */
 ;(function($,window,document,undefined){
   //定义构造函数
   var BoxObj=function(ele,opt){
     this.$element=ele; //最外层对象
     this.defaults={
       'style': 0 ,//滚动样式选择,默认为普通效果
       'speed': 1 ,//默认为1s
       'direction': 'left'//默认为向左边滚动
     },
   
     this.options=$.extend({},this.defaults,opt );
     //这里可以添加一些通用方法  
   }

   //给构造函数添加方法
   BoxObj.prototype={

     commonScroll:function(){
       //接收对象属性
       var obj=this.$element;
       var boxWindow=$(this.$element).children('ul');
       var speed=this.defaults.speed;
       var style=this.defaults.style;
       var direction=(this.defaults.direction=='left')? 1 : -1;
       var lists=$(boxWindow).children('li');
       var len=$(lists).length;
       var boxWidth=$(lists[0]).width();
       var timer;
       var step=(this.defaults.direction=='left')? 0 : boxWidth;

       function move(style,speed,direction){
         if (style==0) {
           if (direction==1) {
             step+=1;
             if(step>boxWidth){
               step-=boxWidth;
               $(boxWindow).append($(boxWindow).children().eq(0));//将第一项放在最后,相当于push(0),shift()
             }else{
               $(obj).scrollLeft(step);
             }
           }else if (direction== -1) {
             step-=1;
             if(step<0){
               step+=boxWidth;
               $(boxWindow).prepend($(boxWindow).children().eq(len-1));//将最后一项放在最前,相当于pop(last),unshift()
             }else{
               $(obj).scrollLeft(step);
             }
           }else{//不执行之外的数值

           }
         }else{//留待扩展,多了改switch

         }
       }

       timer=setInterval(function(){
         move(style,speed,direction);
       },10*speed); //由于时间取得小,肉眼就看不出来

      $(lists).each(function() {//鼠标移上暂停
        $(this).hover(function() {
          clearInterval(timer);
        }, function() {
          clearInterval(timer);
          timer=setInterval(function(){
             move(style,speed,direction);
           },10*speed);
        });
      });
     }
       
   }

   $.fn.marquee=function(options){
     //创建实体
     var boxObj=new BoxObj(this,options);
     //用尾调的形式调用对象方法
     return boxObj.commonScroll();
   }
 })(jQuery,window,document);

      详细下载见https://github.com/codetker/myMarquee

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
js 设置选中行的样式的实现代码
May 24 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
Jun 10 Javascript
用js传递value默认值的示例代码
Sep 11 Javascript
javascript实现可键盘控制的抽奖系统
Mar 10 Javascript
JQuery遍历元素的父辈和祖先的方法
Sep 18 Javascript
微信小程序 Audio API详解及实例代码
Sep 30 Javascript
详解vue 中使用 AJAX获取数据的方法
Jan 18 Javascript
angular1配合gulp和bower的使用教程
Jan 19 Javascript
官方推荐react-navigation的具体使用详解
May 08 Javascript
使用D3.js+Vue实现一个简单的柱形图
Aug 05 Javascript
详解微信小程序开发之formId使用(模板消息)
Aug 27 Javascript
three.js欧拉角和四元数的使用方法
Jul 26 Javascript
jQuery插件boxScroll实现图片轮播特效
Jul 14 #Javascript
jQuery自动添加表单项的方法
Jul 13 #Javascript
JavaScript去除数组里重复值的方法
Jul 13 #Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
Jul 13 #Javascript
jQuery检测返回值的数据类型
Jul 13 #Javascript
jQuery常用且重要方法汇总
Jul 13 #Javascript
C#中使用迭代器处理等待任务
Jul 13 #Javascript
You might like
Sony CFR 320 修复改造
2020/03/14 无线电
PHP4.04简明安装
2006/10/09 PHP
php中处理模拟rewrite 效果
2006/12/09 PHP
PHP游戏编程25个脚本代码
2011/02/08 PHP
关于PHP session 存储方式的详细介绍
2013/06/25 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
js控制框架刷新
2008/08/01 Javascript
jquery 问答知识整理
2010/02/11 Javascript
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
2015/08/10 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
python命令行参数sys.argv使用示例
2014/01/28 Python
python脚本设置超时机制系统时间的方法
2016/02/21 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
python itsdangerous模块的具体使用方法
2020/02/17 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
物业管理工作方案
2014/05/10 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS