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获得URL超链接的参数值实例代码
Jun 21 Javascript
讨论html与javascript在浏览器中的加载顺序问题
Nov 27 Javascript
jquery+json实现分页效果
Mar 07 Javascript
轻松掌握JavaScript中的Math object数学对象
May 26 Javascript
js轮播图代码分享
Jul 14 Javascript
vue组件间通信解析
Mar 01 Javascript
bootstrap IE8 兼容性处理
Mar 22 Javascript
JS实现两周内自动登录功能
Mar 23 Javascript
详解从买域名到使用pm2部署node.js项目全过程
Mar 07 Javascript
jQuery事件blur()方法的使用实例讲解
Mar 30 jQuery
vue+element加入签名效果(移动端可用)
Jun 17 Javascript
vue-cropper插件实现图片截取上传组件封装
May 27 Vue.js
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
珊瑚虫IP库浅析
2007/02/15 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
jQuery 版本的文本输入框检查器Input Check
2009/07/09 Javascript
用方法封装javascript的new操作符(一)
2010/12/25 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
2015/09/25 Javascript
jQuery基于cookie实现的购物车实例分析
2015/12/24 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python基础梳理(一)(推荐)
2019/04/06 Python
python标记语句块使用方法总结
2019/08/05 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
Oracle快照(snapshot)
2015/03/13 面试题
学生自我评价范文
2014/02/02 职场文书
统计学教授推荐信
2014/09/18 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
MySQL窗口函数的具体使用
2021/11/17 MySQL