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代码
Nov 23 Javascript
Chrome Form多次提交表单问题的解决方法
May 09 Javascript
jQuery的deferred对象使用详解
Aug 20 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
Jul 16 Javascript
jquery禁用右键单击功能屏蔽F5刷新
Mar 17 Javascript
利用JavaScript检测CPU使用率自己写的
Mar 22 Javascript
jQuery实现鼠标滑过点击事件音效试听
Aug 31 Javascript
jQuery焦点图切换特效代码分享
Sep 15 Javascript
全面解析Bootstrap中form、navbar的使用方法
May 30 Javascript
JS实现的自定义水平滚动字体插件完整实例
Jun 17 Javascript
详解JS获取HTML DOM元素的8种方法
Jun 17 Javascript
JavaScript实现九宫格拖拽效果
Jun 28 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
用cookies来跟踪识别用户
2006/10/09 PHP
PHP_MySQL教程-第一天
2007/03/18 PHP
PHP获取表单textarea数据中的换行问题
2010/09/10 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
(JS实现)MapBar中坐标的加密和解密的脚本
2007/05/16 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
js实现数字滚动特效
2019/12/16 Javascript
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
用Python配平化学方程式的方法
2019/07/20 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
HTML5 canvas基本绘图之绘制阴影效果
2016/06/27 HTML / CSS
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
Marlies Dekkers内衣法国官方网上商店:国际知名的荷兰内衣品牌
2019/03/18 全球购物
泰国在线书店:SE-ED
2020/06/21 全球购物
测绘工程个人的自我评价
2013/11/23 职场文书
超市重阳节活动方案
2014/02/10 职场文书
父母对孩子的寄语
2014/04/09 职场文书
美术教师求职信范文
2015/03/20 职场文书
工作会议简报
2015/07/20 职场文书
岗位聘任协议书
2015/09/21 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA