Popup Share Modal UI Design using HTML CSS & JavaScript

Hey Everyone, In this tutorial you’ll learn how to create a Popup Share Modal UI Design using HTML CSS & JavaScript. In the previous tutorials, I have shared How to Build Weather App using HTML CSS & JavaScript and now it’s time to create Share Modal design. In this Popup Share Modal UI Design, at first, on the webpage, there is a view modal button, when you click on that button then the modal box appears with a popup animation on the screen. In this share modal box, there are some social media icons with pretty cool hover animation and an input box to copy the link button. There is also a close icon to the right top corner to hide or closed this modal box. To show or hide the Modal Box and copy the given link, I used JavaScript.

JavaScript Methods that are used on this project are: InputElement.select() and execCommand().

InputElement.select(): This method selects all text or values in an element that contains a text field in your model or form. (<textarea>, <input>). execCommand(): This method executes the specified command for the selected part of an editable element and in our case, we have passed copy and it’ll copy the selected input field values.


Firstly, You have to create index.html file on your project folder and after that you have to copy paste below html code to your index.html file. We have used internal JavaScript in this project. If you wann create a external JavaScript file then you have to create script.js file in your project folder and paste javascript code locate in <script> tags in index.html file.

<!DOCTYPE html>
<!-- Created By Codegyan - www.codegyan.in -->
<html lang="en">
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Popup Share Modal | Codegyan</title>
  <link rel="stylesheet" href="style.css">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"/>
  <link rel="stylesheet" href="https://unicons.iconscout.com/release/v3.0.6/css/line.css">
  <button class="view-modal">View Modal</button>
  <div class="popup">
      <span>Share Modal</span>
      <div class="close"><i class="uil uil-times"></i></div>
    <div class="content">
      <p>Share this link via</p>
      <ul class="icons">
        <a href="#"><i class="fab fa-facebook-f"></i></a>
        <a href="#"><i class="fab fa-twitter"></i></a>
        <a href="#"><i class="fab fa-instagram"></i></a>
        <a href="#"><i class="fab fa-whatsapp"></i></a>
        <a href="#"><i class="fab fa-telegram-plane"></i></a>
      <p>Or copy link</p>
      <div class="field">
        <i class="url-icon uil uil-link"></i>
        <input type="text" readonly value="example.com/share-link">

    const viewBtn = document.querySelector(".view-modal"),
    popup = document.querySelector(".popup"),
    close = popup.querySelector(".close"),
    field = popup.querySelector(".field"),
    input = field.querySelector("input"),
    copy = field.querySelector("button");

    viewBtn.onclick = ()=>{
    close.onclick = ()=>{

    copy.onclick = ()=>{
      input.select(); //select input value
      if(document.execCommand("copy")){ //if the selected text copy
        copy.innerText = "Copied";
          window.getSelection().removeAllRanges(); //remove selection from document
          copy.innerText = "Copy";
        }, 3000);



After copy paste html code, you have to create css file with name style.css  and copy paste below to your style.css file to adding style and make your html code more attractive.

@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@200;300;400;500;600;700&display=swap');
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: 'Poppins', sans-serif;
  /* background: #f2f3fb; */
  background: #7d2ae8;
  color: #fff;
  background: #7d2ae8;
.view-modal, .popup{
  position: absolute;
  left: 50%;
  outline: none;
  cursor: pointer;
  font-weight: 500;
  border-radius: 4px;
  border: 2px solid transparent;
  transition: background 0.1s linear, border-color 0.1s linear, color 0.1s linear;
  top: 50%;
  color: #7d2ae8;
  font-size: 18px;
  padding: 10px 25px;
  background: #fff;
  transform: translate(-50%, -50%);
  background: #fff;
  padding: 25px;
  border-radius: 15px;
  top: -150%;
  max-width: 380px;
  width: 100%;
  opacity: 0;
  pointer-events: none;
  box-shadow: 0px 10px 15px rgba(0,0,0,0.1);
  transform: translate(-50%, -50%) scale(1.2);
  transition: top 0s 0.2s ease-in-out,
              opacity 0.2s 0s ease-in-out,
              transform 0.2s 0s ease-in-out;
  top: 50%;
  opacity: 1;
  pointer-events: auto;
  transform:translate(-50%, -50%) scale(1);
  transition: top 0s 0s ease-in-out,
              opacity 0.2s 0s ease-in-out,
              transform 0.2s 0s ease-in-out;

.popup :is(header, .icons, .field){
  display: flex;
  align-items: center;
  justify-content: space-between;
.popup header{
  padding-bottom: 15px;
  border-bottom: 1px solid #ebedf9;
header span{
  font-size: 21px;
  font-weight: 600;
header .close, .icons a{
  display: flex;
  align-items: center;
  border-radius: 50%;
  justify-content: center;
  transition: all 0.3s ease-in-out;
header .close{
  color: #878787;
  font-size: 17px;
  background: #f2f3fb;
  height: 33px;
  width: 33px;
  cursor: pointer;
header .close:hover{
  background: #ebedf9;
.popup .content{
  margin: 20px 0;
.popup .icons{
  margin: 15px 0 20px 0;
.content p{
  font-size: 16px;
.content .icons a{
  height: 50px;
  width: 50px;
  font-size: 20px;
  text-decoration: none;
  border: 1px solid transparent;
.icons a i{
  transition: transform 0.3s ease-in-out;
.icons a:nth-child(1){
  color: #1877F2;
  border-color: #b7d4fb;
.icons a:nth-child(1):hover{
  background: #1877F2;
.icons a:nth-child(2){
  color: #46C1F6;
  border-color: #b6e7fc;
.icons a:nth-child(2):hover{
  background: #46C1F6;
.icons a:nth-child(3){
  color: #e1306c;
  border-color: #f5bccf;
.icons a:nth-child(3):hover{
  background: #e1306c;
.icons a:nth-child(4){
  color: #25D366;
  border-color: #bef4d2;
.icons a:nth-child(4):hover{
  background: #25D366;
.icons a:nth-child(5){
  color: #0088cc;
  border-color: #b3e6ff;
.icons a:nth-child(5):hover{
  background: #0088cc;
.icons a:hover{
  color: #fff;
  border-color: transparent;
.icons a:hover i{
  transform: scale(1.2);
.content .field{
  margin: 12px 0 -5px 0;
  height: 45px;
  border-radius: 4px;
  padding: 0 5px;
  border: 1px solid #e1e1e1;
  border-color: #7d2ae8;
.field i{
  width: 50px;
  font-size: 18px;
  text-align: center;
.field.active i{
  color: #7d2ae8;
.field input{
  width: 100%;
  height: 100%;
  border: none;
  outline: none;
  font-size: 15px;
.field button{
  color: #fff;
  padding: 5px 18px;
  background: #7d2ae8;
.field button:hover{
  background: #8d39fa;
        weatherPart.querySelector(".temp .numb-2").innerText = Math.floor(feels_like);
        weatherPart.querySelector(".humidity span").innerText = `${humidity}%`;
        infoTxt.classList.remove("pending", "error");
        infoTxt.innerText = "";
        inputField.value = "";

arrowBack.addEventListener("click", ()=>{
If you wann to check the demo of this code, then you can check using below demo button.
Click on the following download button to download all source code files of  Popup Share Modal directly on your computer.

Final Word

In this way, we can Create Popup Share Modal UI Design using JavaScript.  I hope you all like this tutorial. Keep with us for next tutorial. if you wann the source code of this code you can get this on our github account. If you have any query please free to contact us Or comment below.