See demo on Codepen: https://codepen.io/comehope/pen/rvgLzK
Watch interractive video on Scrimba: https://scrimba.com/p/pEgDAM/cW7gZfb
Read annotated source on Segmentfault(zh-cn): https://segmentfault.com/a/1190000015002553
Inspired by: André Ruffert https://codepen.io/andreruffert/pen/mMZYPO