JS實(shí)現(xiàn)的自定義水平滾動(dòng)字體插件完整實(shí)例
本文實(shí)例講述了JS自定義水平滾動(dòng)字體插件。分享給大家供大家參考,具體如下:
<script type="text/javascript"> $(function(){ var setting = { content : " @@@@@浮動(dòng)文字#### ", overStop : true, width:"100px", targetId:"huangbiao", //顯示之后的回調(diào)函數(shù) onAfterShow : function(obj){ obj.setting.width = "20px"; // alert("dddd"); //修改配置文件之后重新設(shè)置 // obj.init(); //刪除動(dòng)態(tài)添加的內(nèi)容 // obj.remove(); } }; var ooo = new fontMove(setting); //重新設(shè)置 // ooo.setting.width = "20px;" // ooo.init(); }); /* 原理說明: 1、top父div 是隱藏滾動(dòng)條的 2、二級(jí)DIV(top 父div 的子 div )寬度是 8000% 3、三級(jí)子div有兩個(gè),分別是div1(最左邊) 和 div2(第二個(gè)左邊) 且節(jié)點(diǎn)內(nèi)容完全一樣,分別都是向left浮動(dòng) 4、設(shè)置一個(gè)定時(shí)器,top div的滾動(dòng)條向左滾動(dòng)1px 5、一旦top div滾動(dòng)條的長(zhǎng)度 大于或者等于 div2的滾動(dòng)條的距離,就讓top div的滾動(dòng)條的距離為0 */ function fontMove(userSettingObj){ var that = this; //用時(shí)間戳作為id值 var timestamp = new Date().getTime(); this.setting = { //滾動(dòng)的文字內(nèi)容 content : "浮動(dòng)文字", //滾動(dòng)條顯示的寬度 width:"200px", //每30毫秒執(zhí)行一次 speed : 30, //鼠標(biāo)懸浮是否停止,true是,false為不停,默認(rèn)是true overStop : true, //滾動(dòng)條的ID值 objId : timestamp, //將空間存放的目標(biāo)位置,如果為"",則默認(rèn)是放在body標(biāo)簽的最后面 targetId : "", onAfterShow:function(){ } }; //得到用戶的配置文件 this.setting = $.extend(this.setting,userSettingObj); //檢查配置文件的參數(shù) this.checkParam = function(){ } //擴(kuò)展插件 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>'; //判斷是否指明了內(nèi)容存放的位置 if(""==that.setting.targetId){ $("body").append(domStr); }else{ $("#"+that.setting.targetId).html(domStr); } //內(nèi)容容器div var thatDiv = document.getElementById(that.setting.objId); //左邊第一個(gè)子div var sonDiv1 = document.getElementById(that.setting.objId + '_div1'); //左邊第二個(gè)子div var sonDiv2 = document.getElementById(that.setting.objId + '_div2'); this.Marquee = function(){ //利用定時(shí)器改變值 // console.log("thatDiv.scrollLeft : " + thatDiv.scrollLeft); // //sonDiv1.offsetWidth 值固定不變 // console.log("sonDiv1.offsetWidth : " + sonDiv1.offsetWidth); // //值永遠(yuǎn)為0,因?yàn)樗鼪]有滾動(dòng)條 // console.log("sonDiv1.scrollLeft : " + sonDiv1.scrollLeft); // //sonDiv2.offsetWidth 值固定不變 // console.log("sonDiv2.offsetWidth : " + sonDiv2.offsetWidth); // //值永遠(yuǎn)為0,因?yàn)樗鼪]有滾動(dòng)條 // console.log("sonDiv2.scrollLeft : " + sonDiv2.scrollLeft); //top div滾動(dòng)條的距離 是否 大于 第一個(gè)子div的水平距離,即是否大于內(nèi)容的實(shí)際距離 if(thatDiv.scrollLeft - sonDiv1.offsetWidth >= 0){ //滾動(dòng)條的長(zhǎng)度重新清0,相當(dāng)于又是從第一個(gè)div顯示,然后向左滾動(dòng) thatDiv.scrollLeft = thatDiv.scrollLeft - sonDiv1.offsetWidth; } else{ thatDiv.scrollLeft++; } } var myvar=setInterval(that.Marquee,that.setting.speed); //鼠標(biāo)懸浮,是否停止運(yùn)動(dòng) 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的參數(shù) return this; } </script>
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動(dòng)畫特效與技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JS簡(jiǎn)單實(shí)現(xiàn)文件上傳實(shí)例代碼(無需插件)
- js實(shí)現(xiàn)彈窗插件功能實(shí)例代碼分享
- JS實(shí)現(xiàn)的通用表單驗(yàn)證插件完整實(shí)例
- JS簡(jiǎn)單實(shí)現(xiàn)城市二級(jí)聯(lián)動(dòng)選擇插件的方法
- 原生javascript實(shí)現(xiàn)的分頁插件pagenav
- js插件YprogressBar實(shí)現(xiàn)漂亮的進(jìn)度條效果
- js自定義select下拉框美化特效
- js中自定義方法實(shí)現(xiàn)停留幾秒sleep
- JS 自定義帶默認(rèn)值的函數(shù)
- 用js實(shí)現(xiàn)的自定義的對(duì)話框的實(shí)現(xiàn)代碼
- js 自定義的聯(lián)動(dòng)下拉框
- JS實(shí)現(xiàn)的自定義顯示加載等待圖片插件(loading.gif)
相關(guān)文章
JS 數(shù)字轉(zhuǎn)換為大寫金額的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)硪黄狫S 數(shù)字轉(zhuǎn)換為大寫金額的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08跟我學(xué)習(xí)javascript的undefined與null
跟我學(xué)習(xí)javascript的undefined與null,從定義上理解null和undefined,告訴大家提高undefined性能的方法,感興趣的小伙伴們可以參考一下2015-11-11jQuery實(shí)現(xiàn)動(dòng)態(tài)添加、刪除按鈕及input輸入框的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)動(dòng)態(tài)添加、刪除按鈕及input輸入框的方法,涉及jQuery事件響應(yīng)及頁面元素動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-04-04JS實(shí)現(xiàn)移動(dòng)端上下滑動(dòng)一次一屏
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)移動(dòng)端上下滑動(dòng)一次一屏,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06記錄微信小程序 height: calc(xx - xx);無效問題
這篇文章主要介紹了微信小程序 - height: calc(xx - xx);無效 問題,文中給大家擴(kuò)展介紹下jquery點(diǎn)擊添加樣式,再次點(diǎn)擊移除樣式的實(shí)例代碼,需要的朋友可以參考下2019-12-12Javascript動(dòng)態(tài)創(chuàng)建div的方法
這篇文章主要介紹了Javascript動(dòng)態(tài)創(chuàng)建div的方法,是javascript節(jié)點(diǎn)操作的典型應(yīng)用,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02