可能经常会在某些新闻或视频网站的搜索框看到类似打字机的效果,咋眼一看好像很简单,但是一些又说不上具体细节,如下图
一眼一看,这不动态改变 placeholder 的值就好了吗?仔细看人家还有一个类似光标的东西呢,其实也简单,在拼接的时候再拼接个 | 不就好了吗?
代码如下:
const input = document.getElementById('input') let str = '女子否认拔病人尿管女子否认拔病人尿管' let str2 = '' let strArr = str.split('') // 也可以用 Array.prototype.slice.call(str) 将字符串转为数组 let number = 0 let timer = null function add(arr,time = 1000) { timer = setInterval(() => { if(timer && number == strArr.length) { clearInterval(timer) timer = null return } str2 += `${arr[number]}` input.placeholder = str2 + (number == (strArr.length - 1) ? '' : '|') number++ },time) } add(strArr,140)
主要的思路就是将 新闻字符串分割为数组,通过定时器去不断组装的 placeholder,只需注意在在其末尾 添加 |,和最后一个时取消拼接就好了。
主要还是解决问题的思路,遇到问题多观察,就能发现人家是怎么做的,找到好的解决方案
