JS实现的自定义水平滚动字体插件完整实例


Posted in Javascript onJune 17, 2016

本文实例讲述了JS自定义水平滚动字体插件。分享给大家供大家参考,具体如下:

<script type="text/javascript">
  $(function(){
    var setting = {
      content : "  @@@@@浮动文字####  ",
      overStop : true,
      width:"100px",
      targetId:"huangbiao",
      //显示之后的回调函数
      onAfterShow : function(obj){
        obj.setting.width = "20px";
//        alert("dddd");
        //修改配置文件之后重新设置
//        obj.init();
        //删除动态添加的内容
//        obj.remove();
      }
    };
    var ooo = new fontMove(setting);
    //重新设置
//    ooo.setting.width = "20px;"
//    ooo.init();
  });
  /*
  原理说明:
  1、top父div 是隐藏滚动条的
  2、二级DIV(top 父div 的子 div )宽度是 8000%
  3、三级子div有两个,分别是div1(最左边) 和 div2(第二个左边) 且节点内容完全一样,分别都是向left浮动
  4、设置一个定时器,top div的滚动条向左滚动1px
  5、一旦top div滚动条的长度 大于或者等于 div2的滚动条的距离,就让top div的滚动条的距离为0
   */
  function fontMove(userSettingObj){
    var that = this;
    //用时间戳作为id值
    var timestamp = new Date().getTime();
    this.setting = {
      //滚动的文字内容
      content : "浮动文字",
      //滚动条显示的宽度
      width:"200px",
      //每30毫秒执行一次
      speed : 30,
      //鼠标悬浮是否停止,true是,false为不停,默认是true
      overStop : true,
      //滚动条的ID值
      objId : timestamp,
      //将空间存放的目标位置,如果为"",则默认是放在body标签的最后面
      targetId : "",
      onAfterShow:function(){
      }
    };
    //得到用户的配置文件
    this.setting = $.extend(this.setting,userSettingObj);
    //检查配置文件的参数
    this.checkParam = function(){
    }
    //扩展插件
    this.callback = function(myfun){
      if(typeof myfun == "function"){
        //this 代表callback ,因此需要使用 parent
        myfun.call(that);
      }
    }
    this.remove = function(){
      $("#"+that.setting.objId).remove();
    }
    this.init = function(){
      //所有想获取配置文件的方法是使用that.setting
      var domStr = '<div id="' + that.setting.objId + '" style="overflow:hidden;width:'+that.setting.width+'">'+
       '<div style="width:8000%;">'+
         '<div id="' + that.setting.objId + '_div1" style="float:left;">'+that.setting.content+
         '</div>'+
         '<div id="' + that.setting.objId + '_div2" style="float:left;">'+that.setting.content+'</div>'+
         '</div>'+
       '</div>'+
     '</div>';
      //判断是否指明了内容存放的位置
      if(""==that.setting.targetId){
        $("body").append(domStr);
      }else{
        $("#"+that.setting.targetId).html(domStr);
      }
      //内容容器div
      var thatDiv = document.getElementById(that.setting.objId);
      //左边第一个子div
      var sonDiv1 = document.getElementById(that.setting.objId + '_div1');
      //左边第二个子div
      var sonDiv2 = document.getElementById(that.setting.objId + '_div2');
      this.Marquee = function(){
        //利用定时器改变值
//        console.log("thatDiv.scrollLeft : " + thatDiv.scrollLeft);
//        //sonDiv1.offsetWidth 值固定不变
//        console.log("sonDiv1.offsetWidth : " + sonDiv1.offsetWidth);
//        //值永远为0,因为它没有滚动条
//        console.log("sonDiv1.scrollLeft : " + sonDiv1.scrollLeft);
//        //sonDiv2.offsetWidth 值固定不变
//        console.log("sonDiv2.offsetWidth : " + sonDiv2.offsetWidth);
//        //值永远为0,因为它没有滚动条
//        console.log("sonDiv2.scrollLeft : " + sonDiv2.scrollLeft);
        //top div滚动条的距离 是否 大于 第一个子div的水平距离,即是否大于内容的实际距离
        if(thatDiv.scrollLeft - sonDiv1.offsetWidth >= 0){
          //滚动条的长度重新清0,相当于又是从第一个div显示,然后向左滚动
          thatDiv.scrollLeft = thatDiv.scrollLeft - sonDiv1.offsetWidth;
        }
        else{
          thatDiv.scrollLeft++;
        }
      }
      var myvar=setInterval(that.Marquee,that.setting.speed);
      //鼠标悬浮,是否停止运动
      if(that.setting.overStop){
        thatDiv.onmouseover=function(){clearInterval(myvar);}
        thatDiv.onmouseout=function (){myvar=setInterval(Marquee,30);}
      }
      if(typeof that.setting.onAfterShow == "function"){
        that.setting.onAfterShow.call(that,that);
      }
    }
    //完成初始化
    this.init();
    //返回方法本身,这样可以获取所有配置this的参数
    return this;
  }
</script>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
深入分析js中的constructor和prototype
Apr 07 Javascript
jQuery 在光标定位的地方插入文字的插件
May 10 Javascript
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
May 24 Javascript
jquery动态添加option示例
Dec 30 Javascript
同一个网页中实现多个JavaScript特效的方法
Feb 02 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
May 28 Javascript
jQuery动态追加页面数据以及事件委托详解
May 06 jQuery
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
Aug 14 Javascript
pm2 部署 node的三种方法示例
Oct 20 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
Oct 23 Javascript
javascript设计模式之迭代器模式
Jan 30 Javascript
JavaScript中如何调用Java方法
Sep 16 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
Jun 17 #Javascript
基于JS实现导航条flash导航条
Jun 17 #Javascript
基于JS代码实现导航条弹出式悬浮菜单
Jun 17 #Javascript
Javascript中的数组常用方法解析
Jun 17 #Javascript
iframe中使用jquery进行查找的方法【案例分析】
Jun 17 #Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
Jun 17 #Javascript
jquery.qtip提示信息插件用法简单实例
Jun 17 #Javascript
You might like
如何使用PHP中的字符串函数
2006/10/09 PHP
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
WordPress中缩略图的使用以及相关技巧
2015/11/24 PHP
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
解决AngualrJS页面刷新导致异常显示问题
2017/04/20 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
使用watch在微信小程序中实现全局状态共享
2019/06/03 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
python多线程编程中的join函数使用心得
2014/09/02 Python
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
python方向键控制上下左右代码
2018/01/20 Python
谈谈python中GUI的选择
2018/03/01 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
Python中使用Counter进行字典创建以及key数量统计的方法
2018/07/06 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
小学生寒假家长评语
2014/04/16 职场文书
商务助理求职信范文
2014/04/20 职场文书
初三学生评语大全
2014/04/24 职场文书
企业委托书范本
2014/09/13 职场文书
Python中的程序流程控制语句
2022/02/24 Python