88x31 canvas
This commit is contained in:
parent
2fb5c22a54
commit
e0dd99472e
87
src/88x31.html
Normal file
87
src/88x31.html
Normal file
@ -0,0 +1,87 @@
|
||||
<html>
|
||||
<body>
|
||||
<canvas
|
||||
id="canvas"
|
||||
width="88"
|
||||
height="31"
|
||||
style="image-rendering: pixelated"
|
||||
></canvas>
|
||||
</body>
|
||||
<script>
|
||||
// 76x26
|
||||
const logo =
|
||||
"iVBORw0KGgoAAAANSUhEUgAAAEwAAAAaCAYAAAAdQLrBAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAB50lEQVRYCdVXi26EMAwb0/7/lzcZ4ZPnSx+0KXBIU9vEdpxcQdr2te75LUhvhfhdYfrs8tUFGuiEJkBFDT0zhvWOx73QQ9csvolOXNVQZCKKJZZvSqH+sIefpnwOYNhgTvk8lRU3LM/dA5WyB6av4wPbnbcUvZJsmq8Rz6jG2HzldQrqd9SzavzrmQcF9LRCHrE9fHBqOGpGGOZYL1qd5/Vco4XXGi+uiyqotX+JHEA3QH4PzjHgQi+KU1dXre2cUk7jqlXa77r4hmHjRUBinCti+njBkoZysI9wjnFtz+tZsT3ayvU9ey3qnPnoF0W86oeeu/qLPvp39Itb4ob9HPnS2xXlEevRKXHf4mdu2Bt5IlBromcIE6XnqHcNrOW6NtAWd2n+zoH5UB59s/gr3DkweMge2vKhnxnYcjPHr+hDRBi1+XfA9iXCaj59XxtYa0BXmXUffvahRIONYs7rOmvTLSMuqFzkSnzHuY7yIqzmyXVchCGWq3JK+BZmqwGQi4SVQzMRjjmsEUfz5JdwzLe0FEd914wwxFK/iFExB2lOBVfsWfvKmkN91L5hQ4ITpMcPC709aWATs76OevX/knz12CFuFWIfcbtgmjfMG0EuiiGe+VxRI9PvPrCa6Vouy8jH3C40/AdInUY6Yxg1wwAAAABJRU5ErkJggg==";
|
||||
const img = new Image();
|
||||
img.src = `data:image/png;base64, ${logo}`;
|
||||
|
||||
const dBlue = "#86a8e7";
|
||||
const lBlue = "#91eae4";
|
||||
const squareSize = 10;
|
||||
|
||||
const { width, height } = canvas;
|
||||
const ctx = canvas.getContext("2d");
|
||||
let lastDrawTime = performance.now();
|
||||
let shift = 0;
|
||||
let imagePos = [0, 0];
|
||||
let flip = [1, 1];
|
||||
|
||||
const renderBg = (delta) => {
|
||||
for (let y = -squareSize; y < height; y += squareSize) {
|
||||
const oddRow = y % (squareSize * 2);
|
||||
for (let x = -squareSize; x < width; x += squareSize) {
|
||||
const oddCol = x % (squareSize * 2);
|
||||
|
||||
ctx.fillStyle = oddRow
|
||||
? oddCol
|
||||
? dBlue
|
||||
: lBlue
|
||||
: oddCol
|
||||
? lBlue
|
||||
: dBlue;
|
||||
|
||||
ctx.fillRect(x + shift, y + shift, squareSize, squareSize);
|
||||
}
|
||||
}
|
||||
|
||||
if (shift > squareSize) {
|
||||
shift = 0;
|
||||
} else {
|
||||
shift += 0.01 * delta;
|
||||
}
|
||||
};
|
||||
|
||||
const renderLogo = (delta) => {
|
||||
const moveDistance = 0.02 * delta;
|
||||
imagePos[0] += moveDistance * flip[0];
|
||||
imagePos[1] += moveDistance * flip[1];
|
||||
|
||||
if (imagePos[0] + 38 >= width) {
|
||||
flip[0] = -1;
|
||||
} else if (imagePos[0] <= 0) {
|
||||
flip[0] = 1;
|
||||
}
|
||||
|
||||
if (imagePos[1] + 13 >= height) {
|
||||
flip[1] = -1;
|
||||
} else if (imagePos[1] <= 0) {
|
||||
flip[1] = 1;
|
||||
}
|
||||
|
||||
ctx.drawImage(img, ...imagePos, 38, 13);
|
||||
};
|
||||
|
||||
const draw = (ms) => {
|
||||
const delta = ms - lastDrawTime;
|
||||
ctx.fillStyle = "#fff";
|
||||
ctx.fillRect(0, 0, width, height);
|
||||
|
||||
renderBg(delta);
|
||||
renderLogo(delta);
|
||||
|
||||
lastDrawTime = performance.now();
|
||||
requestAnimationFrame(draw);
|
||||
};
|
||||
|
||||
requestAnimationFrame(draw);
|
||||
</script>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user