Broken LCD screen effect
javascript:(()=>{const t=function(){const t=document.createElement("canvas");return t.id="broken-screen-canvas",t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.zIndex="2147483647",t.style.width="100dvw",t.style.height="100dvh",t.style.backgroundColor="transparent",document.body.appendChild(t),t}(),n=t.getContext("2d");let e=t.width=window.innerWidth,a=t.height=window.innerHeight,o=n.createImageData(e,a),r=o.data,i=new Set,s=0,h=!1,d=.05,c=new Map,l=new Map,u=1,m=10,f=[],M=g(0,0),w=null;const p=[[-1,-1],[0,-1],[1,-1],[-1,0],[1,0],[-1,1],[0,1],[1,1]];function g(t,n){return n*e+t}function v(t){return[t%e,Math.floor(t/e)]}function y(){const t=Math.min(e,a),n=m*(1+Math.pow(Math.random(),2)*u*5);return Math.floor(t*n)}function z(t,n,a=null,o){const s=4*(n*e+t),h=g(t,n);null===a&&(a=Date.now()+Math.floor(1e3*Math.random())),c.set(h,a),l.has(a)||l.set(a,{size:0,maxSize:y()}),l.get(a).size++;let d=[];d="random"===o?[Math.floor(256*Math.random()),Math.floor(256*Math.random()),Math.floor(256*Math.random())]:[o>>16&255,o>>8&255,255&o],r[s]=d[0],r[s+1]=d[1],r[s+2]=d[2],r[s+3]=255,i.add(h)}function E(r){s||(s=r);r-s>32&&h&&(Array.from(i).map(v).forEach((([t,n])=>{const o=g(t,n),r=c.get(o),s=l.get(r);if(!(s&&s.size>=s.maxSize))for(const[o,s]of p){const h=t+o,c=n+s;h<0||h>=e||c<0||c>=a||i.has(g(h,c))||Math.random()<d&&z(h,c,r,w)}})),d+=.01*Math.random()-.005,d=Math.max(.01,Math.min(.1,d)),s=r);const[u,m]=v(M),f=i.has(M)||Array.from(i).some((t=>{const[n,e]=v(t);return Math.abs(u-n)<=15&&Math.abs(m-e)<=15}));t.style.cursor=f?"none":"auto",n.putImageData(o,0,0),requestAnimationFrame(E)}function b(t,n){if(i.has(g(t,n)))return;z(t,n,Date.now()),h=!0}function x(t){b(Math.floor(t.clientX),Math.floor(t.clientY))}function D(t){1===t.button&&(w="random"===w?null:"random")}function A(t){const n=Math.floor(t.clientX),e=Math.floor(t.clientY);M=g(n,e)}function I(){e=t.width=window.innerWidth,a=t.height=window.innerHeight,o=n.createImageData(e,a),r=o.data,i=new Set,c=new Map,l=new Map,d=.05,h=!1,f.forEach((t=>clearTimeout(t))),f=[]}!function(){t.addEventListener("click",x,{passive:!0}),t.addEventListener("mouseup",D,{passive:!0}),window.addEventListener("resize",I,{passive:!0}),t.addEventListener("mousemove",A),I(),requestAnimationFrame(E);for(let t=0;t<5;t++)f.push(setTimeout((()=>{b(Math.floor(Math.random()*e),Math.floor(Math.random()*a))}),2e3*t))}()})();Upcoming...
Tip
Use Middle Mouse Button to toggle random color mode.
