Spilled Paint

Hey guys! So I really love this effect, and I really wish I could get it running smoothly in fullscreen! Any ideas on how to fix it up so it works are really appreciated. What is a spilled paint How do you make a spilled paint? This script and codes were developed by Darryl Huffman on 07 March 2022, Monday.

How do I make an spilled paint?
  1. Spilled Paint Previews
  2. Spilled Paint HTML Codes
  3. Spilled Paint CSS Codes
  4. Spilled Paint JS Codes
Spilled Paint Previews

Spilled Paint HTML Codes

<!DOCTYPE html>
<html >
<head>
  <meta charset="UTF-8">
  <title>Spilled Paint</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">

  
      <link rel="stylesheet" href="css/style.css">

  
</head>

<body>
  <div id="display"><div id="expand">+</div></div>
  <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js'></script>
<script src='https://codepen.io/darrylhuffman/pen/zogYQW.js'></script>

    <script  src="js/index.js"></script>

</body>
</html>

Spilled Paint CSS Codes

html, body {
  width: 100%;
  height: 100%;
}

body {
  overflow: hidden;
  margin: 0px;
  padding: 0px;
  display: flex;
  background-color: #222;
}

* {
  transition: all 600ms;
}

#display {
  max-width: 750px;
  max-height: 450px;
  width: 100%;
  height: 100%;
  margin: auto;
  position: relative;
}
#display canvas {
  width: 100%;
  height: 100%;
}
#display #expand {
  position: absolute;
  width: 30px;
  right: -30px;
  bottom: -30px;
  line-height: 30px;
  text-align: center;
  color: #f25757;
  font-size: 20px;
  font-weight: bold;
}
#display.full {
  max-height: 100%;
  max-width: 100%;
}
#display.full #expand {
  transform: rotate(45deg);
  bottom: 0px;
  right: 0px;
  color: #222;
}

Spilled Paint JS Codes

$('#expand').click(function(){
	$('#display').toggleClass('full');
	
	setTimeout(function(){
		setSize();
		updateData();
	}, 700);
});

var size = {
	x: $('#display').width(),
	y: $('#display').height()
};

var res = Math.ceil(size.y / size.y / 2);
var w = Math.ceil(size.x / res);
var h = Math.ceil(size.y / res);

var calch = (h * 1.5), // this is used in the animation, just caching math so I don't need to do it every frame.
    calcw = (w * 1.5); // ^^

var canvas = $('<canvas/>').attr({width: size.x, height: size.y}).appendTo('#display'),
    context = canvas.get(0).getContext("2d");

function setSize() {
	size = {
		x: $('#display').width(),
		y: $('#display').height()
	};

	res = Math.ceil(size.y / size.y / 2);
	w = Math.ceil(size.x / res);
	h = Math.ceil(size.y / res);
	calch = (h * 1.5),
		calcw = (w * 1.5);
	canvas.attr({width: size.x, height: size.y});
}

var startTime = new Date().getTime();
var currentTime = 0;

noise.seed(8);
//noise.seed(Math.random());

var color;	

// Cache colors to reduce work per frame -- Thanks Blake Bowen for this tip and a few others, hopefully performance will improve.
var color1 = [234,242,227,255];
var color2 = [97,232,225,255];
var color3 = [242,87,87,255];
var color4 = [242,232,99,255];
var color5 = [242,205,96,255];
var color6 = [255/2,255/2,255/2];

var imagedata = context.createImageData(size.x, size.y);
var buf = new ArrayBuffer(imagedata.data.length);

var buf8 = new Uint8ClampedArray(buf);
var data = new Uint32Array(imagedata.data.buffer);

function updateData(){
	imagedata = context.getImageData(0, 0, size.x, size.y);
	data = new Uint32Array(imagedata.data.buffer);
}

function draw(){
	var now = new Date().getTime();
	currentTime = (now - startTime) / 10000; // this variable will start at 0, and then will go up at a slow rate.  So 2 seconds into the animation will be like 0.002.
	// That variable is also responsable for the animation timing.  It iterates through the "z" axis of the Perlin Noise. I also move the perlin noise slowly on the x and y axis.

	for(var y = 0; y < size.y; y++){
		for(var x = 0; x < size.x; x++){
			var r = noise.simplex3((currentTime + x) / calcw, currentTime + y / calch, currentTime); // Figure out what this pixel looks like in the perlin noise
			
			// r will return a number between -1 and +1.  So for every .4 in between, I change the color.
			if(r >= -2 && r < -0.6){
				color = color1;
			} else if(r >= -0.6 && r < -0.2){
				color = color2;
			} else if(r >= -0.2 && r < 0.2){
				color = color3;
			} else if(r >= 0.2 && r < 0.6){
				color = color4;
			} else if(r >= 0.6 && r <= 2){
				color = color5;
			} else {
				color = color6;
			}
			
			// Set pixel data
			data[y * size.x + x] =
				(color[3]  << 24) |	// alpha
				(color[2] << 16) |	// blue
				(color[1] <<  8) |	// green
				color[0];		// red
		}
	}
	
	context.putImageData(imagedata, 0, 0); // Push the pixel data to the canvas

	requestFrame(draw); // Call this funtion again on the next animation frame.
}


window.requestFrame = (function(){
	return  window.requestAnimationFrame       ||
		window.webkitRequestAnimationFrame ||
		window.mozRequestAnimationFrame    ||
		function( callback ){
		window.setTimeout(callback, 1000 / 60);
	};
})();

draw();
$('#display').on('resize', setSize);
Do you want hide your ip address?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.