摘要:我們經(jīng)常希望一段文本中的字符逐個(gè)顯示,模擬出一種打字的效果。類似于終端命令行的感覺。
我們經(jīng)常希望一段文本中的字符逐個(gè)顯示,模擬出一種打字的效果。類似于終端命令行的感覺。最終效果
用JS去實(shí)現(xiàn):html:
js代碼:
const $ = attr => document.querySelector(attr); const textDom = $(".text"); const cursorDom = $(".cursor"); const input = (text) => { const textArr = text.split(""); let index = 0; const timer = setInterval(() => { const showText = textArr.slice(0, index).join(""); textDom.innerHTML = showText; index++; if (index > textArr.length) clearInterval(timer); }, 100); setInterval(() => { if (cursorDom.style.display === "none") { cursorDom.style.display = "inline"; } else { cursorDom.style.display = "none"; } }, 500); } input("The ZGMF-X20A Strike Freedom Gundam (aka Strike Freedom, Freedom) is the successor of the ZGMF-X10A Freedom.");用CSS3去實(shí)現(xiàn):
JS實(shí)現(xiàn)給人的感覺又臭又長,那能不能用CSS去實(shí)現(xiàn)呢?
html:
The ZGMF-X20A Strike Freedom Gundam (aka Strike Freedom, Freedom) is the successor of the ZGMF-X10A Freedom.
@keyframes typing { from { width: 0 } } @keyframes caret { 50% { border-right-color: transparent; } } h1 { font: bold 200% Consolas, Monaco, monospace; width: 108ch; white-space: nowrap; overflow: hidden; border-right: .05em solid; animation: typing 10.8s steps(108), caret 1s steps(1) infinite; }
字符串長度是108;
總結(jié):js實(shí)現(xiàn)不用考慮兼容性,CSS3實(shí)現(xiàn)的需要考慮兼容性,還要兼顧字符串的長度and寬度且不能換行==,不能換行,不過使用起來似乎更簡單一些,具體的取舍還是看個(gè)人習(xí)慣。
補(bǔ)充:以前看某公司的主頁有這個(gè)打字動(dòng)畫的效果,今天看發(fā)現(xiàn)有個(gè)代碼高亮的效果,于是優(yōu)化了代碼:
//... const timer = setInterval(() => { const showText = textArr.slice(0, index).join(""); textDom.innerHTML = showText; let current = text.substr(index, 1); if (current === "<") { index = text.indexOf(">", index) + 1; } else { index++; } if (index > textArr.length) clearInterval(timer); }, 100); //... input("The ZGMF-X20A Strike Freedom Gundam (aka Strike Freedom, Freedom) is the successor of the ZGMF-X10A Freedom.");
效果似乎還是不一樣,我要的效果應(yīng)該是輸入結(jié)束的時(shí)候才高亮,我先看看,實(shí)現(xiàn)了再補(bǔ)充...
繼續(xù)補(bǔ)充:看來只能祭出強(qiáng)無敵的正則匹配了==
//... const timer = setInterval(() => { const showText = textArr.slice(0, index).join("").replace(/([sS]*)/ig, "$1"); textDom.innerHTML = showText; let current = text.substr(index, 1); if (current === "<") { index = text.indexOf(">", index) + 1; } else { index++; } if (index > textArr.length) clearInterval(timer); }, 100); //... input("The ZGMF-X20A Strike Freedom Gundam (aka Strike Freedom, Freedom) is the successor of the ZGMF-X10A Freedom.");
完成
完整代碼:
自動(dòng)打字 >>>The ZGMF-X20A Strike Freedom Gundam (aka Strike Freedom, Freedom) is the successor of the ZGMF-X10A Freedom.
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/84483.html
摘要:我們經(jīng)常希望一段文本中的字符逐個(gè)顯示,模擬出一種打字的效果。類似于終端命令行的感覺。 我們經(jīng)常希望一段文本中的字符逐個(gè)顯示,模擬出一種打字的效果。類似于終端命令行的感覺。最終效果 用JS去實(shí)現(xiàn): html: js代碼: const $ = attr => document.querySelector(attr); const textDom = $(.text); const cu...
摘要:庫一個(gè)用來在中創(chuàng)建炫酷的浮動(dòng)粒子的庫一個(gè)用來在中創(chuàng)建物體和空間的庫快速實(shí)現(xiàn)全屏滾動(dòng)特性打字機(jī)效果滾動(dòng)到某個(gè)元素位置時(shí)觸發(fā)一個(gè)功能語法高亮使用創(chuàng)建漂亮的圖表能夠明顯加速網(wǎng)站加載時(shí)間,鼠標(biāo)時(shí)預(yù)加載資源另一個(gè)圖表庫一個(gè)基于動(dòng)畫和平移的雪碧圖庫實(shí)現(xiàn) Javascript 庫 Particles.js? 一個(gè)用來在 web 中創(chuàng)建炫酷的浮動(dòng)粒子的庫 Three.js? 一個(gè)用來在 web 中創(chuàng)...
摘要:經(jīng)過一番研究,我收集了個(gè)最好的庫,你可以用在自己的項(xiàng)目中。該庫于年月首次推出,目前仍有近名參與者開發(fā)。超過的,是一個(gè)動(dòng)畫庫,可以處理屬性單個(gè)轉(zhuǎn)換或任何屬性,以及對(duì)象。對(duì)智能設(shè)備的方向作出反應(yīng)的視差引擎快速創(chuàng)建漂亮的動(dòng)畫。 翻譯:瘋狂的技術(shù)宅原文:https://blog.bitsrc.io/11-jav... 當(dāng)我想要在網(wǎng)上找一個(gè)簡潔的 Javascript 動(dòng)效庫時(shí),總是發(fā)現(xiàn)很多推...
摘要:利用實(shí)現(xiàn)動(dòng)畫效果內(nèi)容皮球掉地上反彈起來純實(shí)現(xiàn)效果圖片移動(dòng)實(shí)現(xiàn)打字輸入效果效果更多點(diǎn)我看效果博客放在上了,歡迎大家,我會(huì)持續(xù)更新一些效果。 利用 CSS3 實(shí)現(xiàn)動(dòng)畫效果 showImg(https://segmentfault.com/img/bVUATb?w=189&h=267); 內(nèi)容 皮球掉地上反彈起來 純 CSS 實(shí)現(xiàn) gif 效果 圖片移動(dòng) 實(shí)現(xiàn)打字輸入效果 效果 // h...
摘要:超過的星星,是一個(gè)動(dòng)畫庫,可以處理屬性,單個(gè)轉(zhuǎn)換,或任何屬性以及對(duì)象。超過星星,這個(gè)動(dòng)畫庫大小只有。超過星星,這個(gè)庫基允許你以選定的速度為字符串創(chuàng)建打字動(dòng)畫。 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 1.Three.js showImg(https://segmentfault.com/img/bVbkQ4X?w=551&h=358); 超過46K的星星,...
閱讀 454·2024-11-07 18:25
閱讀 130762·2024-02-01 10:43
閱讀 943·2024-01-31 14:58
閱讀 904·2024-01-31 14:54
閱讀 83006·2024-01-29 17:11
閱讀 3263·2024-01-25 14:55
閱讀 2057·2023-06-02 13:36
閱讀 3166·2023-05-23 10:26