5⾏代码带你实现⼀个js 的打字效果
有次看电影, 看到屏幕上⼀个个的⽂字蹦出来, 感觉像是有⼈在打字⼀样, 觉得挺有意思, 于是这⾥也⽤js实现了⼀个。
效果预览
最简单的打字效果
只要五⾏代码, 这⾥直接贴出来:
是不是超级简单, 现在只要执⾏这个函数, 你就能看到这样的效果了:
实现原理:
通过setTimeout设置⼀个时间的间隔, 每隔⼀定时间向dom中插⼊对应的数据, 并将index加1, 然后重新调⽤这个写函数。在字的后⾯加上模拟的闪烁光标
思路:
通过⼀个伪类after将光标定在dom的最后⾯, 并给⼀个显⽰隐藏的循环动画模拟光标的闪烁
通过css3的animation我们就实现了⼀个闪烁的光标效果。
实现:const dom = document.querySelector('.content')const data = '最简单的打字效果代码'.split('') let index = 0 function writing(index) { if (index < data.length) { dom.innerHTML += data[index] setTimeout (writing.bind (this ), 200, ++index ) } }
1
2
3
4
js制作简单的焦点图效果5
6
7
8
9
我们可以把上⾯的代码放在⼀个class中, 然后我们执⾏writing时将这个class加到对应的dom中即可。
实现输⼊汉字加拼⾳
这⾥依赖⼀个插件pinyin, ⼤家可以通过npm安装
使⽤也很简单,我们只要把⽂本传⼊这个插件的⽅法中, 返回的就是每个汉字的拼⾳的数组。
然后我们通过模板字符串注⼊到对应的⽂字后⾯即可:
这样就实现了加拼⾳的简单效果了。
加动画
加动画的代码也很简单, 关键是思路。
我开始的想法是将每个⽂字⽤span标签包裹起来, 给每个span加动画即可。后来发现这样⾏不通, 因为每次dom中的innerHTML其实是重新渲染的, 那样的话, 之前的span也会⼀直有动画, 这不是我们想要的效果。
解决⽅案:
给每个span加个class实现动画, 但在下个span渲染时清除之前span的class, 这样就实现了只有当前的span有动画了.
我这⾥直接选择了正则匹配粗暴的将class去掉。⼤家也可以寻⼀种更好的⽅式解决。
代码如下:
实现效果:npm install pinyin
1import Pinyin from 'pinyin'let data = '汉字'let pinyinData = Pinyin (data ) //['han', 'zi']
1
2
1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。