<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>I LOVE YOU</title>
<style>
body {
background-color: white;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
font-family: sans-serif;
}
.grid {
display: grid;
grid-template-columns: repeat(65, 15px);
grid-template-rows: repeat(10, 15px);
gap: 2px;
}
.cell {
width: 15px;
height: 15px;
border: 1px solid #ccc;
background-color: white;
transition: background-color 0.3s;
}
.on {
background-color: deeppink;
}
</style>
</head>
<body>
<div class="grid" id="grid"></div>
<script>
const grid = document.getElementById('grid');
const rows = 10;
const cols = 65;
const pixelsOn = [
[1, 0],[2, 0],[3, 0],[4, 0],[5, 0],[6, 0],
[1, 4],[2, 4],[3, 4],[4, 4],[5, 4],[6, 4],[6, 5],[6, 6],
[1, 9],[1, 10],[1, 11],[2, 9],[2, 11],[3, 9],[3, 11],
[4, 9],[4, 11],[5, 9],[5, 11],[6, 9],[6, 10],[6, 11],
[1, 14],[2, 14],[3, 14],[4, 14],[5, 15],[6, 16],
[5, 17],[1, 18],[2, 18],[3, 18],[4, 18],
[1, 21],[2, 21],[3, 21],[4, 21],[5, 21],[6, 21],
[1, 22],[3, 22],[6, 22],
[1, 25],[2, 25],[3, 25],[3, 26],[4, 26],[5, 26],[6, 26],
[1, 29],[1, 30],[1, 31],[2, 29],[2, 31],[3, 29],[3, 31],
[4, 29],[4, 31],[5, 29],[5, 31],[6, 29],[6, 30],[6, 31],
[1, 34],[2, 34],[3, 34],[4, 34],[5, 34],[6, 34],
[1, 36],[2, 36],[3, 36],[4, 36],[5, 36],[6, 36],[6, 35]
];
const cells = [];
// สร้าง grid
for (let r = 0; r < rows; r++) {
for (let c = 0; c < cols; c++) {
const cell = document.createElement('div');
cell.classList.add('cell');
grid.appendChild(cell);
cells.push(cell);
}
}
// ฟังก์ชันเปิด cell ทีละจุด
function animatePixels(pixels, delay = 30) {
pixels.forEach(([r, c], index) => {
setTimeout(() => {
const cellIndex = r * cols + c;
cells[cellIndex].classList.add('on');
}, index * delay);
});
}
// เริ่ม animation
animatePixels(pixelsOn);
</script>
</body>
</html>
PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0iVVRGLTgiIC8+CiAgPHRpdGxlPkkgTE9WRSBZT1U8L3RpdGxlPgogIDxzdHlsZT4KICAgIGJvZHkgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgIG1hcmdpbjogMDsKICAgICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7CiAgICB9CiAgICAuZ3JpZCB7CiAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDY1LCAxNXB4KTsKICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoMTAsIDE1cHgpOwogICAgICBnYXA6IDJweDsKICAgIH0KICAgIC5jZWxsIHsKICAgICAgd2lkdGg6IDE1cHg7CiAgICAgIGhlaWdodDogMTVweDsKICAgICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zczsKICAgIH0KICAgIC5vbiB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IGRlZXBwaW5rOwogICAgfQogIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CiAgPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWQiPjwvZGl2PgoKICA8c2NyaXB0PgogICAgY29uc3QgZ3JpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncmlkJyk7CiAgICBjb25zdCByb3dzID0gMTA7CiAgICBjb25zdCBjb2xzID0gNjU7CgogICAgY29uc3QgcGl4ZWxzT24gPSBbCiAgICAgIFsxLCAwXSxbMiwgMF0sWzMsIDBdLFs0LCAwXSxbNSwgMF0sWzYsIDBdLAogICAgICBbMSwgNF0sWzIsIDRdLFszLCA0XSxbNCwgNF0sWzUsIDRdLFs2LCA0XSxbNiwgNV0sWzYsIDZdLAogICAgICBbMSwgOV0sWzEsIDEwXSxbMSwgMTFdLFsyLCA5XSxbMiwgMTFdLFszLCA5XSxbMywgMTFdLAogICAgICBbNCwgOV0sWzQsIDExXSxbNSwgOV0sWzUsIDExXSxbNiwgOV0sWzYsIDEwXSxbNiwgMTFdLAogICAgICBbMSwgMTRdLFsyLCAxNF0sWzMsIDE0XSxbNCwgMTRdLFs1LCAxNV0sWzYsIDE2XSwKICAgICAgWzUsIDE3XSxbMSwgMThdLFsyLCAxOF0sWzMsIDE4XSxbNCwgMThdLAogICAgICBbMSwgMjFdLFsyLCAyMV0sWzMsIDIxXSxbNCwgMjFdLFs1LCAyMV0sWzYsIDIxXSwKICAgICAgWzEsIDIyXSxbMywgMjJdLFs2LCAyMl0sCiAgICAgIFsxLCAyNV0sWzIsIDI1XSxbMywgMjVdLFszLCAyNl0sWzQsIDI2XSxbNSwgMjZdLFs2LCAyNl0sCiAgICAgIFsxLCAyOV0sWzEsIDMwXSxbMSwgMzFdLFsyLCAyOV0sWzIsIDMxXSxbMywgMjldLFszLCAzMV0sCiAgICAgIFs0LCAyOV0sWzQsIDMxXSxbNSwgMjldLFs1LCAzMV0sWzYsIDI5XSxbNiwgMzBdLFs2LCAzMV0sCiAgICAgIFsxLCAzNF0sWzIsIDM0XSxbMywgMzRdLFs0LCAzNF0sWzUsIDM0XSxbNiwgMzRdLAogICAgICBbMSwgMzZdLFsyLCAzNl0sWzMsIDM2XSxbNCwgMzZdLFs1LCAzNl0sWzYsIDM2XSxbNiwgMzVdCiAgICBdOwoKICAgIGNvbnN0IGNlbGxzID0gW107CgogICAgLy8g4Liq4Lij4LmJ4Liy4LiHIGdyaWQKICAgIGZvciAobGV0IHIgPSAwOyByIDwgcm93czsgcisrKSB7CiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgY29sczsgYysrKSB7CiAgICAgICAgY29uc3QgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgnY2VsbCcpOwogICAgICAgIGdyaWQuYXBwZW5kQ2hpbGQoY2VsbCk7CiAgICAgICAgY2VsbHMucHVzaChjZWxsKTsKICAgICAgfQogICAgfQoKICAgIC8vIOC4n+C4seC4h+C4geC5jOC4iuC4seC4meC5gOC4m+C4tOC4lCBjZWxsIOC4l+C4teC4peC4sOC4iOC4uOC4lAogICAgZnVuY3Rpb24gYW5pbWF0ZVBpeGVscyhwaXhlbHMsIGRlbGF5ID0gMzApIHsKICAgICAgcGl4ZWxzLmZvckVhY2goKFtyLCBjXSwgaW5kZXgpID0+IHsKICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgIGNvbnN0IGNlbGxJbmRleCA9IHIgKiBjb2xzICsgYzsKICAgICAgICAgIGNlbGxzW2NlbGxJbmRleF0uY2xhc3NMaXN0LmFkZCgnb24nKTsKICAgICAgICB9LCBpbmRleCAqIGRlbGF5KTsKICAgICAgfSk7CiAgICB9CgogICAgLy8g4LmA4Lij4Li04LmI4LihIGFuaW1hdGlvbgogICAgYW5pbWF0ZVBpeGVscyhwaXhlbHNPbik7CiAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg==
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>I LOVE YOU</title>
<style>
body {
background-color: white;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
font-family: sans-serif;
}
.grid {
display: grid;
grid-template-columns: repeat(65, 15px);
grid-template-rows: repeat(10, 15px);
gap: 2px;
}
.cell {
width: 15px;
height: 15px;
border: 1px solid #ccc;
background-color: white;
transition: background-color 0.3s;
}
.on {
background-color: deeppink;
}
</style>
</head>
<body>
<div class="grid" id="grid"></div>
<script>
const grid = document.getElementById('grid');
const rows = 10;
const cols = 65;
const pixelsOn = [
[1, 0],[2, 0],[3, 0],[4, 0],[5, 0],[6, 0],
[1, 4],[2, 4],[3, 4],[4, 4],[5, 4],[6, 4],[6, 5],[6, 6],
[1, 9],[1, 10],[1, 11],[2, 9],[2, 11],[3, 9],[3, 11],
[4, 9],[4, 11],[5, 9],[5, 11],[6, 9],[6, 10],[6, 11],
[1, 14],[2, 14],[3, 14],[4, 14],[5, 15],[6, 16],
[5, 17],[1, 18],[2, 18],[3, 18],[4, 18],
[1, 21],[2, 21],[3, 21],[4, 21],[5, 21],[6, 21],
[1, 22],[3, 22],[6, 22],
[1, 25],[2, 25],[3, 25],[3, 26],[4, 26],[5, 26],[6, 26],
[1, 29],[1, 30],[1, 31],[2, 29],[2, 31],[3, 29],[3, 31],
[4, 29],[4, 31],[5, 29],[5, 31],[6, 29],[6, 30],[6, 31],
[1, 34],[2, 34],[3, 34],[4, 34],[5, 34],[6, 34],
[1, 36],[2, 36],[3, 36],[4, 36],[5, 36],[6, 36],[6, 35]
];
const cells = [];
// สร้าง grid
for (let r = 0; r < rows; r++) {
for (let c = 0; c < cols; c++) {
const cell = document.createElement('div');
cell.classList.add('cell');
grid.appendChild(cell);
cells.push(cell);
}
}
// ฟังก์ชันเปิด cell ทีละจุด
function animatePixels(pixels, delay = 30) {
pixels.forEach(([r, c], index) => {
setTimeout(() => {
const cellIndex = r * cols + c;
cells[cellIndex].classList.add('on');
}, index * delay);
});
}
// เริ่ม animation
animatePixels(pixelsOn);
</script>
</body>
</html>