当前位置: 首页 > Web前端 > vue.js

【JS插件】非常强大的打字机效果:easy-typer-js

时间:2023-03-31 19:22:29 vue.js

.typed-cursormargin-left:10pxopacity:1-webkit-animation锛氶棯鐑?.7s鏃犻檺-moz-animation锛氶棯鐑?.7s鏃犻檺鍔ㄧ敾锛氶棯鐑?.7s鏃犻檺@keyframes闂儊0%涓嶉€忔槑搴︼細150%涓嶉€忔槑搴︼細0100%涓嶉€忔槑搴︼細1@-webkit-keyframes闂儊0%涓嶉€忔槑搴︼細150%涓嶉€忔槑搴︼細0100%涓嶉€忔槑搴︼細1@-moz-keyframes闂儊0%涓嶉€忔槑搴︼細150%涓嶉€忔槑搴︼細0100%涓嶉€忔槑搴︼細1easy-typer-js鏄潪甯稿己澶х殑鎵撳瓧鏈烘彃浠讹紝鍏煎鍘熺敓JS鍜孧VVM绫绘鏋讹紙Vue銆丷eact銆乤ngular锛夛紝杈撳嚭浠€涔堜綘鎯宠浣犳兂瑕佽緭鍑虹殑鍐呭銆傜壒鐐癸紙浼樺娍锛夋垜浠殑涓庡叾浠栫被浼肩殑鎵撳瓧鏈烘彃浠舵湁浣曚笉鍚岋紵1.鎴戜滑鐨勬墦瀛楁満涓嶆搷浣淒OM锛岄噸瑕佺殑浜嬫儏璇翠笁閬嶏紝涓嶆搷浣淒OM锛佷笉瑕佹搷绾礑OM锛佷笉瑕佹搷绾礑OM锛?.鎴戜滑鐨勬墦瀛楁満鍜孧VVM妗嗘灦鐨勭粨鍚堟晥鏋滃緢濂斤紒3.鎴戜滑鐨勬墦瀛楁満鍙槸鏀瑰彉鏁版嵁瀵硅薄鐨勮緭鍑猴紝骞舵病鏈夊DOM杩涜鎿嶄綔锛佸幓鎴戠殑绔欑偣鐪嬬湡瀹炴晥鏋?>褰皬鍛嗛殢绗?=1.鏁堟灉灞曠ずeasy-typer-js鏄竴娆捐交閲忕骇鎻掍欢锛岀敤浜庡疄鐜伴〉闈㈡枃瀛楃殑鎵撳瓧鏈烘晥鏋溿€備娇鐢ㄩ潪甯哥畝鍗曪紝鍙渶瑕佸嚑琛屼唬鐮佸氨鍙互瀹炵幇楂樺ぇ涓婄殑鎵撳瓧鏈烘晥鏋溿€傚畬缇庢敮鎸丮VVM妗嗘灦锛屽吋瀹瑰師鐢烰S銆備簩銆佷娇鐢╡asy-typer-js2.1寮曞叆easy-typer-js鏂规硶涓€锛欵S6妯″潡鍖栧紩鍏ワ紙瀹樻柟鎺ㄨ崘锛?/瀹夎npminstalleasy-typer-js--save鎴杫arnaddeasy-typer-js//寮曞叆importEasyTyperfrom'easy-typer-js'//瀹炰緥鍖朿onsttyped=newEasyTyper(obj,input,fn,hooks)鏂规硶浜岋細姝e垯import//涓嬭浇鍒版湰鍦?scriptsrc="./easy-typer-js">//cdnimport2.2浣跨敤瀹冩槸浣犳渶寮哄ぇ鐨勬鍣紒2.2.1浣跨敤鍘熺敓JS鎵撳紑椤甸潰锛屼綘浼氬彂鐜伴粠鏄庡墠鐨勯粦鏆楁槸鏈€娣变笉瑙佸簳鐨勯粦鏆楋紒杩欏彞璇濇槸涓€涓瓧涓€涓瓧鎵撳嚭鏉ョ殑锛佸搰锛佹槸涓嶆槸寰堥叿锛乧onsttyping=newEasyTyper(obj,`榛庢槑鍓嶇殑榛戞殫鏄渶娣辩殑榛戞殫锛乣,instance=>{//鍥炶皟鍑芥暟//璇ュ洖璋冧竴鑸敤浜庤幏鍙栨柊鏁版嵁鐒跺悗寰幆杈撳嚭//instance{instanceEasyTyper}console.log(instance)//鎵撳嵃鍑哄疄渚嬪璞,(output,instance)=>{//閽╁瓙鍑芥暟//output{褰撳墠甯х殑杈撳嚭鍐呭}//instance{instanceEasyTyper}//閫氳繃閽╁瓙鍑芥暟鍔ㄦ€佹洿鏂癲om鍏冪礌document.getElementById('output').innerHTML=`${output}`})2.2.2鍦╒ue涓綘浼氬彂鐜版垜鎵撳紑椤甸潰浼氳鎵撳瓧鏈鸿緭鍑猴紒2.2.3鍦≧eact涓娇鐢ㄦ墦寮€椤甸潰锛屼綘浼氬彂鐜版垜鏄敤React鍒涘缓鐨勶紒杩欐槸绁炶鐨勶紒importEasyTyperfrom'easy-typer-js'classshowTextextendsReact.Component{constructor(props){super(props)this.state={output:'',typer:null}this.initTyper=this.initTyper.bind(this)this.changeOutput=this.changeOutput.bind(this)}initTyper(){//閰嶇疆瀵硅薄constobj={output:'',isEnd:false,speed:80,singleBack:false,sleep:0,type:'normal',backSpeed:40}//瀹炰緥鍖杢his.typer=newEasyTyper(obj,'IwascreatedbyReact!',this.completeAsentence,this.changeOutput)}//杈撳嚭瀹屾垚鍚庣殑鍥炶皟鍑芥暟completeAsentence(){console.log('杈撳嚭瀹屾垚锛丼ir!')}//hook鍑芥暟鍜宻etState缁撳悎changeOutput(output){this.setState(state=>({output:output}))}render(){return(

{this.state.output}

)}}2.3銆愬疄鎴樸€戣返琛岀湡鐞嗭紙瀹屾暣浠g爜锛?.3.1Vue+Vuepress+涓€鍙ヨ瘽API===瀹炵幇鍗氬棣栭〉鐐叿鐨勬枃瀛楄緭鍑烘晥鏋滀笅闈㈡槸瀹屾暣浠g爜锛侊紒锛?妯℃澘>
{{瀵硅薄銆傝緭鍑簘}|
.typed-cursormargin-left:10pxopacity:1-webkit-animation锛氶棯鐑?.7s鏃犻檺-moz-animation锛氶棯鐑?.7s鏃犻檺鍔ㄧ敾锛氶棯鐑?.7s鏃犻檺@keyframes闂儊0%涓嶉€忔槑搴︼細150%涓嶉€忔槑搴︼細0100%涓嶉€忔槑搴︼細1@-webkit-keyframes闂儊0%涓嶉€忔槑搴︼細150%涓嶉€忔槑搴︼細0100%涓嶉€忔槑搴︼細1@-moz-keyframes闂儊0%涓嶉€忔槑搴︼細150%涓嶉€忔槑搴︼細0100%涓嶉€忔槑搴︼細1鏁堟灉濡備笅锛屽氨鏄椤电湅鍒扮殑鏁堟灉锛?.3.2鍦≧eact涓鍏eactfrom'react'importlogofrom'./logo.svg'import'./App.css'importEasyTyperfrom'easy-typer-js'classshowTextextendsReact.Component{constructor(props){super(props)this.state={output:'',typer:null}this.initTyper=this.initTyper.bind(this)this.changeOutput=this.changeOutput.bind(this)}componentDidMount(){this.initTyper()}componentWillUnmount(){this.typer.close()}initTyper(){//閰嶇疆瀵硅薄constobj={output:'',isEnd:false,speed:80,singleBack:false,sleep:0,type:'normal',backSpeed:40}//瀹炰緥鍖杢his.typer=newEasyTyper(obj,'IwascreatedbyReact!',this.completeAsentence,this.changeOutput)}//杈撳嚭鍚庡洖璋冨嚱鏁癱ompleteAsentence(){console.log('杈撳嚭瀹屾垚锛丼ir!')}//閽╁瓙鍑芥暟鍜宻etState鍚堝苟changeOutput(output){this.setState(state=>({output:output}))}render(){return(

{this.state.output

绁?/a>
)}}exportdefaultshowText鏁堟灉濡備笅鍙緭鍑轰竴鍙?.3.3鍘熺敓绀轰緥
constobj={output:'',//浣跨敤MVVM妗嗘灦鏃跺彲浠ョ洿鎺ヤ娇鐢ㄨ緭鍑哄唴瀹箃ype:'normal',isEnd:false,speed:80,backSpeed:40,sleep:3000,singleBack:true}consttyping=neweasyTyper(obj,`榛庢槑鍓嶇殑榛戞殫鏄渶娣辩殑榛戞殫锛乣,(instance)=>{//杩欓噷鍥炶皟鍑芥暟濡傛灉浣跨敤閫掑綊璋冪敤锛屼細涓€鐩村惊鐜墦鍗帮紝闇€瑕佸閮ㄨЕ鍙戝仠姝?/璋冪敤姝ゅ洖璋冭幏鍙栨柊鏁版嵁骞堕噸鏂拌緭鍑篿nstance.input=`褰皬鍛嗗嚭鐢熷湪澶╁爞锛屾垜灏嗘案杩滅柉鐙傦紒`instance.play()},(output,instance)=>{//閽╁瓙鍑芥暟锛屾瘡甯ф暟鎹噰闆嗗疄渚媏asy-typer-jsgetdocument.getElementById('output').innerHTML=`${output}|`})//12绉掑悗鍋滄lettimer=setTimeout(()=>{clearTimeout(timer)timer=nulltyping.close()alert('stop!')},12000)鏁堟灉濡備笅锛侊紒锛佽緭鍑虹涓€鍙ュ悗鍥炴粴锛屽悗闈笉瑕佸洖婊氾紒3.鍙傛暟鍒嗘瀽3.1newEasyTyper(obj,input,fn,hooks)鍙傛暟璇存槑鏄惁闇€瑕佸洖璋僶bj閰嶇疆瀵硅薄涓嶉渶瑕侊紝鏍煎紡蹇呴』姝g‘锛屽緢涓ユ牸锛屼笉浜氫簬鏁欏涓讳换Input鍐呭input鍙€?fn瀹屾垚涓€娆¤緭鍑哄悗浼氭湁鍥炶皟鍑芥暟銆傚綋鍓嶇殑easy-typer-js瀹炰緥瀹炰緥涓嶆槸hooks銆備笂闈㈢敤鍒颁簡鍥炶皟鍑芥暟鍜岄挬瀛愬嚱鏁般€?.2obj閰嶇疆鍙傛暟(params)鍚箟(meaning)绫诲瀷(type)output杈撳嚭鍐呭锛屼娇鐢∕VVM妗嗘灦鏃讹紝鐩存帴浣跨敤{obj.output}stringtype涓嬭涓烘槸'roolback'','normal','custom'string锛堝彧鏈変笁涓級isEnd鍏ㄥ眬鎺у埗鏄惁缁堟booleanspeed鎵撳瓧閫熷害numberbackSpeed鍥炴粴閫熷害numbersleep涓€鍙ュ畬鍏ㄨ緭鍑哄悗锛屼紤鐪犱竴瀹氭椂闂村悗瑙﹀彂鍥炴粴浜嬩欢numbersingleBacksingle鍥炴粴锛堜紭鍏堢骇楂樹簬type锛塨ooleanobj閰嶇疆瀵硅薄鏍¢獙闈炲父涓ユ牸锛屽璞$殑瀛楁鍜岀被鍨嬪繀椤荤鍚堜笂闈㈢殑鏍煎紡锛屽惁鍒欎綘浼氬湪鎺у埗鍙扮湅鍒板緢鏄剧溂鐨勯敊璇紒3.3鏆撮湶鍙互鐩存帴璋冪敤鐨勬柟娉曘€傛柟娉曞悕鎻忚堪鍙傛暟close鍋滄鎵撳瓧涓嶄紤鐪犲彲浠ュ崟鐙皟鐢ㄤ紤鐪犵嚎绋嬶紝鍙互鍦ㄤ换浣曞湴鏂逛娇鐢╩s锛堟绉掞級3.4婧愮爜寮€婧愬湪GitHub涓婏紝澶у鍙互鑷鏌ョ湅锛屼細鎸佺画鏇存柊4.鍘熺悊鍒嗘瀽鍙奆AQ4.1涓轰粈涔堣鎴戜滑鐨勬墦瀛楁満涓嶈繘琛孌OM鎿嶄綔锛熷ぇ瀹跺彲浠ュ幓Github涓婃煡鐪嬫垜浠殑鎵撳瓧鏈烘簮鐮侊紝浼氬彂鐜版病鏈変竴琛屼唬鐮佹秹鍙婂埌DOM鎿嶄綔銆?.2鎴戜滑濡備綍鍦ㄦ病鏈塂OM鎿嶄綔鐨勬儏鍐典笅鍋氬埌杩欎竴鐐癸紵鎴戜滑绉夋壙涓€涓悊蹇碉紝鏁版嵁鏄緭鍏ョ殑锛屾垜浠鍒朵竴浠芥暟鎹紝鐒跺悗鍒嗘瀽鏁版嵁锛屾渶鍚庣敤涓€涓璞¤緭鍑烘暟鎹紒5.鏇村淇℃伅璇峰弬鑰僥asy-typer-js瀹樼綉锛歨ttps://docs.inner.ink/typer/Github鏂囨。鍦板潃锛歨ttps://github.com/pengqiangsheng/easy-typer-jsCDN鍦板潃锛歨ttps://cdn.jsdelivr.net/npm/easy-typer-js@1.0.1/easyTyper.min.js6.璁″垝鏇存柊鍐呭1.涓嶄粎鍙互杈撳嚭鏂囨湰锛岃繕鍙互杈撳嚭dom鍏冪礌2.娣诲姞鍔ㄧ敾杈撳嚭鏂囧瓧鐨勬晥鏋?.杈撳嚭鏃舵坊鍔犳墦瀛楃殑澹伴煶7.姹傚ソ璇勷煈嶅鏋滆繖绡囨枃绔犲鎮ㄦ湁甯姪锛屽笇鏈涙偍鑳芥娊绌虹粰鎴戠偣涓禐馃憤b(锟b柦锟?d銆?.=鎴虫垜鍠滄馃槉