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切换功能的简单方法
Nov 23 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
Apr 07 Javascript
JS前端框架关于重构的失败经验分享
Mar 17 Javascript
原生js结合html5制作小飞龙的简易跳球
Mar 30 Javascript
javascript日期格式化方法小结
Dec 17 Javascript
快速学习AngularJs HTTP响应拦截器
Dec 31 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
Jun 08 Javascript
React创建组件的三种方式及其区别
Jan 12 Javascript
JS实现的文字间歇循环滚动效果完整示例
Feb 13 Javascript
layui的table单击行勾选checkbox功能方法
Aug 14 Javascript
vue 地区选择器v-distpicker的常用功能
Jul 23 Javascript
vue 实现把路由单独分离出来
Aug 13 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
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
css把超出的部分显示为省略号的方法兼容火狐
2008/07/23 Javascript
js写的方法实现上传图片之后查看大图
2014/03/05 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
微信小程序异步处理详解
2017/11/10 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
Python实现带百分比的进度条
2016/06/28 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
python定向爬取淘宝商品价格
2018/02/27 Python
django初始化数据库的实例
2018/05/27 Python
详解Python中的type和object
2018/08/15 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
django框架模板语言使用方法详解
2019/07/18 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
Python requests模块安装及使用教程图解
2020/06/30 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
和睦家庭事迹
2014/05/14 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
食堂标语大全
2014/06/11 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
协议书格式模板
2016/03/24 职场文书
工作报告范文
2019/06/20 职场文书