Responsive QR Code Generator website with HTML, CSS, and JavaScript | QR Code Generator in JS

Responsive QR Code Generator website with HTML, CSS, and JavaScript QR Code Generator in JS

QR codes have become an essential tool for sharing information quickly and efficiently in today’s digital world. Whether you’re sharing a URL, contact details, or any other form of data, QR codes offer a fast and convenient way to transfer information. In this article, we’ll walk you through how to create a Responsive QR Code Generator Website using HTML, CSS, and JavaScript. This tutorial is perfect for those looking to integrate a QR code generator into their website.

Tools and Technologies We’ll Use

  • HTML for structuring the webpage.
  • CSS for styling and ensuring the page is responsive.
  • JavaScript for generating QR codes dynamically.

Step 1: First we will create an HTML file and in the HTML file we use div, input, button, and canvas.

index.html
<!DOCTYPE html>
<!-- Coding By Coder Abhijit - youtube.com/coderabhijit -->
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">  
    <title>QR Code Generator in JavaScript | Coder Abhijit</title>
    <link rel="stylesheet" href="style.css">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  </head>
  <body>
    <div class="wrapper">
      <header>
        <h1>QR Code Generator</h1>
        <div class="qr-code">
            <img src="" alt="qr-code">
        </div>
        <p>Paste a url or enter text to create QR code</p>
      </header>
      <div class="form">
        <input type="text" spellcheck="false" placeholder="Enter text or url">
        <button>Generate QR Code</button>
      </div>
    </div>

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

  </body>
</html>

Step 2: Now we will design the webpage. To do this we create a css file under the project or the same folder.

style.css
/* Import Google Font - Poppins */
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap');
*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: 'Poppins', sans-serif;
}
body{
  display: flex;
  padding: 0 10px;
  min-height: 100vh;
  align-items: center;
  background: #fafafa;
  justify-content: center;
}
.wrapper{
  height: 365px;
  max-width: 410px;
  background: #fff;
  border-radius: 7px;
  padding: 20px 25px 0;
  transition: height 0.2s ease;
  box-shadow: 0 10px 30px rgba(0,0,0,0.1);
}
.wrapper.active{
  height: 530px;
}
header h1{
  font-size: 21px;
  font-weight: 500;
  text-align: center;
}
header p{
  margin-top: 5px;
  color: #575757;
  font-size: 16px;
}
.wrapper .form{
  margin: 20px 0 25px;
}
.form :where(input, button){
  width: 100%;
  height: 55px;
  border: none;
  outline: none;
  border-radius: 5px;
  transition: 0.1s ease;
}
.form input{
  font-size: 18px;
  padding: 0 17px;
  border: 1px solid #999;
}
.form input:focus{
  box-shadow: 0 3px 6px rgba(0,0,0,0.13);
}
.form input::placeholder{
  color: #999;
}
.form button{
  color: #fff;
  cursor: pointer;
  margin-top: 20px;
  font-size: 17px;
  background: #17A288;
}
.qr-code{
  opacity: 0;
  display: flex;
  padding: 33px 0;
  border-radius: 5px;
  align-items: center;
  pointer-events: none;
  justify-content: center;
  border: 1px solid #ccc;
}
.wrapper.active .qr-code{
  opacity: 1;
  pointer-events: auto;
  transition: opacity 0.5s 0.05s ease;
}
.qr-code img{
  width: 170px;
}

@media (max-width: 430px){
  .wrapper{
    height: 255px;
    padding: 16px 20px;
  }
  .wrapper.active{
    height: 510px;
  }
  header p{
    color: #696969;
  }
  .form :where(input, button){
    height: 52px;
  }
  .qr-code img{
    width: 160px;
  }  
}

Step 3: Now we will create the working method. To do this create a js file under your project folder.

script.js
const wrapper = document.querySelector(".wrapper"),
qrInput = wrapper.querySelector(".form input"),
generateBtn = wrapper.querySelector(".form button"),
qrImg = wrapper.querySelector(".qr-code img");
let preValue;

generateBtn.addEventListener("click", () => {
    let qrValue = qrInput.value.trim();
    if(!qrValue || preValue === qrValue) return;
    preValue = qrValue;
    generateBtn.innerText = "Generating QR Code...";
    qrImg.src = `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${qrValue}`;
    qrImg.addEventListener("load", () => {
        wrapper.classList.add("active");
        generateBtn.innerText = "Generate QR Code";
    });
});

qrInput.addEventListener("keyup", () => {
    if(!qrInput.value.trim()) {
        wrapper.classList.remove("active");
        preValue = "";
    }
});

How It Works:

  • When the user clicks the “Generate QR Code” button, the JavaScript code reads the input from the text field.
  • It uses the QRCode.toCanvas() method from the qrcode.js library to generate the QR code and display it on the canvas element.
  • If no text is entered, an alert notifies the user.

Conclusion

Creating a Responsive QR Code Generator Website using HTML, CSS, and JavaScript is a simple yet effective way to offer users a useful tool. With just a few lines of code, you can generate QR codes dynamically, style your page to be responsive, and ensure a smooth user experience across different devices.

Hello, I'm Coder Abhjit, I am a developer. I have skills in HTML, CSS, JavaScript, Node.js, React.js, & Python. Whatever knowledge I have I am teaching you.