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 相关文章推荐
Javascript面向对象扩展库代码分享
Mar 27 Javascript
JS写的贪吃蛇游戏(个人练习)
Jul 08 Javascript
JQuery中dataGrid设置行的高度示例代码
Jan 03 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
Jun 05 Javascript
javascript显式类型转换实例分析
Apr 25 Javascript
jQuery实现的向下图文信息滚动效果
May 03 Javascript
jquery遍历table的tr获取td的值实现方法
May 19 Javascript
基于JavaScript实现拖动滑块效果
Feb 16 Javascript
jquery.masonry瀑布流效果
May 25 jQuery
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
Aug 29 Javascript
JavaScript 继承 封装 多态实现及原理详解
Jul 29 Javascript
vue实现简单跑马灯效果
May 25 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
php实现的CSS更新类实例
2014/09/22 PHP
PHP实现图片旋转效果实例代码
2014/10/01 PHP
Laravel手动分页实现方法详解
2016/10/09 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
Javascript 更新 JavaScript 数组的 uniq 方法
2008/01/23 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
使用正则表达式的格式化与高亮显示json字符串
2014/12/03 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
NodeJS自定义模块写法(详解)
2017/06/27 NodeJs
微信小程序实现图片放大预览功能
2020/10/22 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
2018/03/21 Javascript
对vue中methods互相调用的方法详解
2018/08/30 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
python分割列表(list)的方法示例
2017/05/07 Python
Python中的__slots__示例详解
2017/07/06 Python
Python实现的桶排序算法示例
2017/11/29 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
Python封装原理与实现方法详解
2018/08/28 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
美国现代家具和家居商店:Apt2B
2016/08/29 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
双语教学实施方案
2014/03/23 职场文书
马智宇结婚主持词
2014/04/01 职场文书
党员大会主持词
2014/04/02 职场文书
北京申奥口号
2014/06/19 职场文书
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python