前兩天看到某個網站上的輸入框有個小特效:文字逐個顯示,並且到字元串最大長度後,逐個消失,然後重新迴圈顯示消失,迴圈顯示字元串數組。我對這個小特效有點好奇,於是今天自己嘗試用jquery寫一個簡單的小demo,終於把效果整齣來了。首先看一下實現後的效果: 接下來上代碼。 這個方法完全是個人想出來的,如 ...
前兩天看到某個網站上的輸入框有個小特效:文字逐個顯示,並且到字元串最大長度後,逐個消失,然後重新迴圈顯示消失,迴圈顯示字元串數組。我對這個小特效有點好奇,於是今天自己嘗試用jquery寫一個簡單的小demo,終於把效果整齣來了。首先看一下實現後的效果:
接下來上代碼。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文字逐個顯示逐個消失</title> <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script><!--引入jquery插件 --> <style type="text/css" rel="stylesheet"> #inputArea{ /*簡單設置input框的一些屬性 */ margin: 30px; width: 300px; height: 50px; font-size: 20px; border: 1px solid #cccccc; } </style> </head> <body> <input id="inputArea" type="text"/> <script type="text/javascript"> let arr = ["yjry.com", "yjry.cn", "yjry.org", "yjry.xyz", "yjry.top"];//定義要顯示的字元串數組 let index = 0;//顯示的字元串索引,預設從數組中第一個字元串開始顯示 let str = "";//存放要顯示的字元串 $input = $("#inputArea");//獲取input框的jquery對象 let timer1 = null;//定義兩個定時器 let timer2 = null; let endIndex1 = 1;//定義字元串截取的索引位置,兩個索引分別用於顯示和消失 let endIndex2 = 0; let flag = false;//判斷當前字元串是否顯示完畢 $(function () {//dom樹載入完成後執行操作,類似但不同於js的window.onload timer1 = setInterval(add, 300);//設置兩個定時器 timer2 = setInterval(remove, 300); }); function remove() { if(flag === true){ clearInterval(timer1);//清除顯示的定時器 str = arr[index];//獲取當前顯示的字元串,利用另一個索引實現迴圈消失 endIndex1 = endIndex2; $input.val(str.substring(0, endIndex2--)); if(endIndex1 === 0){//若當前字元串全部消失,則index加一,並設置flag為false,重新設置顯示定時器 index += 1; if(index === 5){//若當前索引最後一個字元串消失完畢,則將索引重置為0 index = 0; } flag = false; timer1 = setInterval(add, 300); } } } function add() { if(flag === false){ str = arr[index]; endIndex2 = endIndex1; $input.val(str.substring(0, endIndex1++)); if($input.val().length === arr[index].length){//若當前字元串全部顯示完畢,則設置flag為true flag = true; } } } </script> </body> </html>
這個方法完全是個人想出來的,如果有什麼不足之處或者有可優化的地方,歡迎大家和我交流!