My exmaple in JavaScript and <canvas>
. https://codepen.io/KonradLinkowski/pen/QWbjaPr
const canvas = document.querySelector('#box')
const ctx = canvas.getContext('2d')
const interpolate = (value, start, end) => (end - start) * value + start
const interpolateRGB = (value, start, end) => {
return {
r: interpolate(value, start.r, end.r),
g: interpolate(value, start.g, end.g),
b: interpolate(value, start.b, end.b)
}
}
const calcColor = (point, topLeft, topRight, bottomLeft, bottomRight) => {
const top = interpolateRGB(point.x, topLeft, topRight)
const bottom = interpolateRGB(point.x, bottomLeft, bottomRight)
const result = interpolateRGB(point.y, top, bottom)
return result
}
const drawCanvas = () => {
const imageData = ctx.createImageData(canvas.width, canvas.height)
for (let y = 0; y < canvas.height; y += 1) {
for (let x = 0; x < canvas.width; x += 1) {
const colors = [
{ r: 238, g: 252, b: 83 },
{ r: 120, g: 239, b: 197 },
{ r: 253, g: 67, b: 205 },
{ r: 74, g: 68, b: 215 }
]
const color = calcColor({ x: x / (canvas.width - 1), y: y / (canvas.height- 1) }, ...colors)
imageData.data[(y * canvas.width + x) * 4] = color.r
imageData.data[(y * canvas.width + x) * 4 + 1] = color.g
imageData.data[(y * canvas.width + x) * 4 + 2] = color.b
imageData.data[(y * canvas.width + x) * 4 + 3] = 255
}
}
ctx.putImageData(imageData, 0, 0)
}
const resizeCanvas = (width, height) => {
canvas.width = width
canvas.height = height
drawCanvas();
}
resizeCanvas(window.innerWidth, window.innerHeight);
window.addEventListener('resize', () => resizeCanvas(window.innerWidth, window.innerHeight))
body {
margin: 0;
padding: 0;
overflow: hidden;
}
#box {
border: 1px solid black;
}
<canvas id="box" width="300" height="300" class="grdnt"></canvas>
You can choose between three types of gradients: linear (created with the linear-gradient() function), radial (created with the radial-gradient() function), and conic (created with the conic-gradient() function).
CSS defines three types of gradients: Linear Gradients (goes down/up/left/right/diagonally) Radial Gradients (defined by their center) Conic Gradients (rotated around a center point)
There are 3 different CSS gradients: linear, conic, and radial. Each gradient uses a CSS function to pass in multiple color arguments. The colors can be in the format of hex, hsla, rgba or named colors. In addition, you can pass in direction and angles to specify the shape and transition of the gradient.
Gradients are CSS elements of the image data type that show a transition between two or more colors. These transitions are shown as either linear or radial. Because they are of the image data type, gradients can be used anywhere an image might be. The most popular use for gradients would be in a background element.
mask
combined with linear-gradient
can do it:
.box {
height: 200px;
width: 300px;
background: linear-gradient(to right, rgb(238, 252, 83), rgb(120, 239, 197))
}
.box::before {
content: "";
display: block;
height: 100%;
background: linear-gradient(to right, rgb(253, 67, 205), rgb(74, 68, 215));
-webkit-mask: linear-gradient(to bottom,#0000, #000);
mask: linear-gradient(to bottom,#0000, #000);
}
<div class="box"></div>
Another kind of coloration:
.box {
height: 200px;
width: 300px;
background: linear-gradient(to top right, rgb(238, 252, 83), rgb(120, 239, 197))
}
.box::before {
content: "";
display: block;
height: 100%;
background: linear-gradient(to top right, rgb(253, 67, 205), rgb(74, 68, 215));
-webkit-mask: linear-gradient(to bottom right,#0000, #000);
mask: linear-gradient(to bottom right,#0000, #000);
}
<div class="box"></div>
You can give a try to radial-gradient
example to play with snippet / pen:
html {
height:100vh;
background:
radial-gradient(ellipse at top left, rgb(236, 249, 87) 15% , transparent 60%),
radial-gradient(ellipse at bottom left, rgb(247, 69, 204) 15% , transparent 60%),
radial-gradient(ellipse at top right, rgb(121, 238, 196) 15% , transparent 60%),
radial-gradient(ellipse at bottom right, rgb(81, 82, 213) 15% , transparent 60%)
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With