See demo on Codepen: https://codepen.io/comehope/pen/zJybdq
Watch interactive video on Scrimba: https://scrimba.com/p/pEgDAM/cGV7phy
Read annotated source on Segmentfault(zh-cn): https://segmentfault.com/a/1190000016462519
Inspired by: Nate Wiley https://codepen.io/natewiley/pen/AucCw