Canvas Text Vortex
How do I make an canvas text vortex?
What is a canvas text vortex? How do you make a canvas text vortex? This script and codes were developed by Chad Scira on 27 August 2022, Saturday.
Canvas Text Vortex - Script Codes HTML Codes
<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>Canvas Text Vortex</title> <link rel="stylesheet" href="css/style.css">
</head>
<body> <script src="js/index.js"></script>
</body>
</html>
Canvas Text Vortex - Script Codes CSS Codes
body { margin: 0;
}
Canvas Text Vortex - Script Codes JS Codes
var Easing = { // t: current time, b: begInnIng value, c: change In value, d: duration swing: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return Easing.easeOutQuad(x, t, b, c, d); }, easeInQuad: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return c*(t/=d)*t + b; }, easeOutQuad: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return -c *(t/=d)*(t-2) + b; }, easeInOutQuad: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } if ((t/=d/2) < 1) return c/2*t*t + b; return -c/2 * ((--t)*(t-2) - 1) + b; }, easeInCubic: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return c*(t/=d)*t*t + b; }, easeOutCubic: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return c*((t=t/d-1)*t*t + 1) + b; }, easeInOutCubic: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } if ((t/=d/2) < 1) return c/2*t*t*t + b; return c/2*((t-=2)*t*t + 2) + b; }, easeInQuart: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return c*(t/=d)*t*t*t + b; }, easeOutQuart: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return -c * ((t=t/d-1)*t*t*t - 1) + b; }, easeInOutQuart: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } if ((t/=d/2) < 1) return c/2*t*t*t*t + b; return -c/2 * ((t-=2)*t*t*t - 2) + b; }, easeInQuint: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return c*(t/=d)*t*t*t*t + b; }, easeOutQuint: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return c*((t=t/d-1)*t*t*t*t + 1) + b; }, easeInOutQuint: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; return c/2*((t-=2)*t*t*t*t + 2) + b; }, easeInSine: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return -c * Math.cos(t/d * (Math.PI/2)) + c + b; }, easeOutSine: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return c * Math.sin(t/d * (Math.PI/2)) + b; }, easeInOutSine: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; }, easeInExpo: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; }, easeOutExpo: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; }, easeInOutExpo: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } if (t==0) return b; if (t==d) return b+c; if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; }, easeInCirc: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; }, easeOutCirc: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return c * Math.sqrt(1 - (t=t/d-1)*t) + b; }, easeInOutCirc: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; }, easeInElastic: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } var s=1.70158;var p=0;var a=c; if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; if (a < Math.abs(c)) { a=c; var s=p/4; } else var s = p/(2*Math.PI) * Math.asin (c/a); return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; }, easeOutElastic: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } var s=1.70158;var p=0;var a=c; if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; if (a < Math.abs(c)) { a=c; var s=p/4; } else var s = p/(2*Math.PI) * Math.asin (c/a); return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; }, easeInOutElastic: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } var s=1.70158;var p=0;var a=c; if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); if (a < Math.abs(c)) { a=c; var s=p/4; } else var s = p/(2*Math.PI) * Math.asin (c/a); if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; }, easeInBack: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } if (s == undefined) s = 1.70158; return c*(t/=d)*t*((s+1)*t - s) + b; }, easeOutBack: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } if (s == undefined) s = 1.70158; return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; }, easeInOutBack: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } if (s == undefined) s = 1.70158; if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; }, easeInBounce: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } return c - Easing.easeOutBounce (x, d-t, 0, c, d) + b; }, easeOutBounce: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } if ((t/=d) < (1/2.75)) { return c*(7.5625*t*t) + b; } else if (t < (2/2.75)) { return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; } else if (t < (2.5/2.75)) { return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; } else { return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; } }, easeInOutBounce: function (x, t, b, c, d) { if (arguments.length === 1) { t = arguments[0]; x = 0; b = 0; c = 1; d = 1; } if (t < d/2) return Easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; return Easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; }
};
function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min;
}
function Tween ($config) { this.start = Date.now(); this.duration = $config.duration; this.data = $config.data;
}
Tween.prototype.isFinished = function () { return Date.now() > this.start + this.duration;
};
Tween.prototype.getPercent = function () { return ((this.start + this.duration) - Date.now()) / this.duration;
};
var canvas = document.createElement('canvas'), context = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
document.body.appendChild(canvas);
var tweens = [];
function draw () { requestAnimationFrame(draw); context.clearRect(0, 0, canvas.width, canvas.height); tweens.forEach(function (tween, index, array) { if (tween.isFinished()) { tweens.splice(tweens.indexOf(tween), 1); } else { var percent = Easing.easeInOutQuad(tween.getPercent()).toFixed(3), size = Math.floor((16 * tween.data.scale) * percent); if (size < .5) return; context.font = size + 'px Arial'; var text = tween.data.text; context.fillStyle = '#ff4742'; context.fillText(text, (canvas.width/2 + ((percent) * tween.data.x) - (context.measureText(text).width/2)).toFixed(3), (canvas.height/2 + ((percent) * tween.data.y) - (size/2)).toFixed(3)); //context.fillRect((canvas.width/2 + ((percent) * tween.data.x) - (size/2)), (canvas.height/2 + ((percent) * tween.data.y) - (size/2)), size, size); } });
}
function addParticle () { var x, y, scale = 1 + Math.random() * 3, side = getRandomInt(0, 3); if (side === 0) { // left x = -window.innerWidth/2 - 50; y = getRandomInt(-window.innerHeight/2 - 1, window.innerHeight/2 - 1); } else if (side === 1) { // top x = getRandomInt(-window.innerWidth/2 - 1, window.innerWidth/2 - 1); y = -window.innerHeight/2 - 50; } else if (side === 2) { // right x = window.innerWidth/2 + 50; y = getRandomInt(-window.innerHeight/2 - 1, window.innerHeight/2 - 1); } else if (side === 3) { // bottom x = getRandomInt(-window.innerWidth/2 - 1, window.innerWidth/2 - 1); y = window.innerHeight/2 + 50; } tweens.push(new Tween({ duration: 800 + (Math.random() * 500), data: {x: x, y: y, scale: scale, text: 'hello'} }));
}
setInterval(function () { for (var i = 0; i < 10; i++) addParticle();
}, 200);
//addParticle();
draw();
Developer | Chad Scira |
Username | icodeforlove |
Uploaded | August 27, 2022 |
Rating | 4 |
Size | 3,252 Kb |
Views | 34,408 |
Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!
Name | Size |
FizzBuzz CAPTCHA | 2,568 Kb |
Ripple Words | 3,081 Kb |
Animated 3D Text | 3,272 Kb |
Curl Request to Node Request | 3,000 Kb |
CSS Voxel Animation | 3,005 Kb |
Live example of core distribution | 4,553 Kb |
Animated rainbow wave on canvas | 2,777 Kb |
Dippin Dots | 2,459 Kb |
Text Vortex | 6,534 Kb |
Faces | 3,526 Kb |
Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!
Name | Username | Size |
Pomodoro Timer | Sdas13 | 2,900 Kb |
APortfolio | Skybutterfly | 5,174 Kb |
Simple Login Form Template | Banunn | 3,571 Kb |
CSS Chat Bubbles | Boylett | 2,094 Kb |
Css3 only dropdown menu | Riogrande | 2,519 Kb |
Greyscale image with filter in CSS3 | NickyCDK | 1,562 Kb |
A Pen by Paul Sullivan | Pwsm50 | 2,349 Kb |
AngularJS Skills | Supro | 3,312 Kb |
A Pen by Alexandru Pora | Axpro | 1,615 Kb |
Myprofile | SoufianeAbid | 2,451 Kb |
Surf anonymously, prevent hackers from acquiring your IP address, send anonymous email, and encrypt your Internet connection. High speed, ultra secure, and easy to use. Instant setup. Hide Your IP Now!