ADVERTISEMENT

Pixel Art Maker using HTML, CSS & JavaScript

Telegram Group Join Now

ADVERTISEMENT

Pixel Art Maker using HTML, CSS & JavaScript

Hello, today we’re going to learn how to use HTML, CSS & JavaScript to create a Pixel Art Maker. By following these instructions, you can simply make this Pixel Art Maker in HTML, CSS & JavaScript. Simply by adhering to the procedures mentioned below, you will be able to develop this amazing Pixel Art Maker.

ADVERTISEMENT

ADVERTISEMENT

Pixel Art Maker Javascript

Project Description

Step 1
The HTML (Hypertext Markup Language) will help us to create the structure for the list with some necessary attributes and elements to make Pixel Art Maker Project.

ADVERTISEMENT

Step 2
Then we will use CSS (Cascading Stylesheet) which will help us to style or design the project with suitable padding and alignment in the Pixel Art Maker Project.

ADVERTISEMENT

Step 3
At last we will use JS (JavaScript) which will add a logic to make the Pixel Art Maker Project functioning from the user end.

I hope you have got an idea about the project.

HTML Code for Pixel Art Maker

5+ HTML CSS Projects With Source Code

ADVERTISEMENT

<html lang="en">
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Pixel Art Generator</title>
    <!-- Google Fonts -->
    <link
      href="https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@500&display=swap"
      rel="stylesheet"
    />
    <!-- Stylesheet -->
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="wrapper">
      <div class="options">
        <div class="opt-wrapper">
          <div class="slider">
            <label for="width-range">Grid Width</label>
            <input type="range" id="width-range" min="1" max="35" />
            <span id="width-value">00</span>
          </div>
          <div class="slider">
            <label for="height-range">Grid Height</label>
            <input type="range" id="height-range" min="1" max="35" />
            <span id="height-value">00</span>
          </div>
        </div>
        <div class="opt-wrapper">
          <button id="submit-grid">Create Grid</button>
          <button id="clear-grid">Clear Grid</button>
          <input type="color" id="color-input" />
          <button id="erase-btn">Erase</button>
          <button id="paint-btn">Paint</button>
        </div>
      </div>
      <div class="container"></div>
    </div>
    <!-- Script -->
    <script src="script.js"></script>
  </body>
</html>

First we’ll start with creating the structure of the Pixel Art Maker project for that as you can see the above code we have used all the necessary elements & attributes to setup the structure. Let us know code the CSS part to add styling and aligned the tags.

CSS Code for Pixel Art Maker

100+ JavaScript Projects With Source Code ( Beginners to Advanced)

* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
  font-family: "Roboto Mono", monospace;
}
body {
  background-color: #f4c531;
}
.wrapper {
  background-color: #ffffff;
  width: 80vmin;
  position: absolute;
  transform: translate(-50%, -50%);
  top: 50%;
  left: 50%;
  padding: 40px 20px;
  border-radius: 8px;
}
label {
  display: block;
}
span {
  position: relative;
  font-size: 22px;
  bottom: -1px;
}
.opt-wrapper {
  display: flex;
  justify-content: space-between;
  margin-bottom: 20px;
  gap: 10px;
}
button {
  background-color: #f4c531;
  border: none;
  border-radius: 5px;
  padding: 5px;
}
input[type="color"] {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-color: transparent;
  width: 70px;
  height: 40px;
  border: none;
  cursor: pointer;
}
input[type="color"]::-webkit-color-swatch {
  border-radius: 8px;
  border: 4px solid #000000;
}
input[type="color"]::-moz-color-swatch {
  border-radius: 8px;
  border: 4px solid #000000;
}
.gridCol {
  height: 1em;
  width: 1em;
  border: 1px solid #ddd;
}
.gridRow {
  display: flex;
}
@media only screen and (max-width: 768px) {
  .gridCol {
    height: 0.8em;
    width: 0.8em;
  }
}

Second comes the CSS code, which is mentioned above in that we have styled for the structure we have padded as well as aligned the Pixel Art Maker project so that it is properly situated and doesn’t get messy with suitable CSS elements. Now we have created the structure using HTML and styled the webpage using CSS its time to add the functionality using JavaScript in this project.

ADVERTISEMENT

JavaScript Code for Pixel Art Maker

//Initial references
let container = document.querySelector(".container");
let gridButton = document.getElementById("submit-grid");
let clearGridButton = document.getElementById("clear-grid");
let gridWidth = document.getElementById("width-range");
let gridHeight = document.getElementById("height-range");
let colorButton = document.getElementById("color-input");
let eraseBtn = document.getElementById("erase-btn");
let paintBtn = document.getElementById("paint-btn");
let widthValue = document.getElementById("width-value");
let heightValue = document.getElementById("height-value");

//Events object
let events = {
  mouse: {
    down: "mousedown",
    move: "mousemove",
    up: "mouseup",
  },
  touch: {
    down: "touchstart",
    move: "touchmove",
    up: "touchend",
  },
};

let deviceType = "";

//Initially draw and erase would be false
let draw = false;
let erase = false;

//Detect touch device
const isTouchDevice = () => {
  try {
    //We try to create TouchEvent(it would fail for desktops and throw error)
    document.createEvent("TouchEvent");
    deviceType = "touch";
    return true;
  } catch (e) {
    deviceType = "mouse";
    return false;
  }
};

isTouchDevice();

//Create Grid
gridButton.addEventListener("click", () => {
  //Initially clear the grid (old grids cleared)
  container.innerHTML = "";
  //count variable for generating unique ids
  let count = 0;
  //loop for creating rows
  for (let i = 0; i < gridHeight.value; i++) {
    //incrementing count by 2
    count += 2;
    //Create row div
    let div = document.createElement("div");
    div.classList.add("gridRow");
    //Create Columns
    for (let j = 0; j < gridWidth.value; j++) {
      count += 2;
      let col = document.createElement("div");
      col.classList.add("gridCol");
      /* We need unique ids for all columns (for touch screen specifically) */
      col.setAttribute("id", `gridCol${count}`);

      /*
      For eg if deviceType = "mouse"
      the statement for the event would be events[mouse].down which equals to mousedown
      if deviceType="touch"
      the statement for event would be events[touch].down which equals to touchstart
       */

      col.addEventListener(events[deviceType].down, () => {
        //user starts drawing
        draw = true;
        //if erase = true then background = transparent else color
        if (erase) {
          col.style.backgroundColor = "transparent";
        } else {
          col.style.backgroundColor = colorButton.value;
        }
      });

      col.addEventListener(events[deviceType].move, (e) => {
        /* elementFromPoint returns the element at x,y position of mouse */
        let elementId = document.elementFromPoint(
          !isTouchDevice() ? e.clientX : e.touches[0].clientX,
          !isTouchDevice() ? e.clientY : e.touches[0].clientY
        ).id;
        //checker
        checker(elementId);
      });
      //Stop drawing
      col.addEventListener(events[deviceType].up, () => {
        draw = false;
      });
      //append columns
      div.appendChild(col);
    }
    //append grid to container
    container.appendChild(div);
  }
});
function checker(elementId) {
  let gridColumns = document.querySelectorAll(".gridCol");
  //loop through all boxes
  gridColumns.forEach((element) => {
    //if id matches then color
    if (elementId == element.id) {
      if (draw && !erase) {
        element.style.backgroundColor = colorButton.value;
      } else if (draw && erase) {
        element.style.backgroundColor = "transparent";
      }
    }
  });
}

//Clear Grid
clearGridButton.addEventListener("click", () => {
  container.innerHTML = "";
});
//Erase Button
eraseBtn.addEventListener("click", () => {
  erase = true;
});

//Paint button
paintBtn.addEventListener("click", () => {
  erase = false;
});

//Display grid width and height
gridWidth.addEventListener("input", () => {
  widthValue.innerHTML =
    gridWidth.value < 9 ? `0${gridWidth.value}` : gridWidth.value;
});

gridHeight.addEventListener("input", () => {
  heightValue.innerHTML =
    gridHeight.value < 9 ? `0${gridHeight.value}` : gridHeight.value;
});

window.onload = () => {
  gridWidth.value = 0;
  gridHeight.value = 0;
};

Last stage of the project the JavaScript in which we have added the logical and coded as per the requirement with some conditions. In this JS code we have defined all the functions which are present in structure and added logic according to need so that it acts as per the user indication. Let us see the Final Output of the project Pixel Art Maker using HTML, CSS & JavaScript (Source Code).

ADVERTISEMENT

Output

Live Preview of Pixel Art Maker using HTML, CSS & JavaScript

See the Pen
Pixel
by Harsh Sawant (@harshh9)
on CodePen.

We have Successfully created our Pixel Art Maker using HTML, CSS & JavaScript (Source Code). You can use this project for your personal needs and the respective lines of code are given with the code pen link mentioned above.

Ecommerce Website Using HTML, CSS, & JavaScript (Source Code)

If you find out this Blog helpful, then make sure to search code with random on google for Front End Projects with Source codes and make sure to Follow the Code with Random Instagram page.

ADVERTISEMENT

Code Idea – codingartist

ADVERTISEMENT

Written By – Harsh Sawant

ADVERTISEMENT

Code By – @harshh9

ADVERTISEMENT

ADVERTISEMENT

ADVERTISEMENT

Telegram Group Join Now

Share on:

Leave a Comment

ADVERTISEMENT

ADVERTISEMENT

ADVERTISEMENT