Как создать анимированное всплывающее модальное окно | How To Make An Animated Popup Modal Using HTML CSS And JavaScript

Как создать анимированное всплывающее модальное окно | How To Make An Animated Popup Modal Using HTML CSS And JavaScript

Всем Привет! Сегодня Вы узнаете, как создать анимированное всплывающее модальное окно используя HTML, CSS и JavaScript. Вы сможете посмотреть видео демонстрацию (Демо), скопировать код или скачать архив с готовым кодом. 

Logo Monster Tem

Также если это видео оказалось для вас полезным, оставьте комментарий со своими мыслями или вопросами. Ваши отзывы помогают нам создавать более ценный контент. 

HTML КОД:

<!--font awesome(for icons)-->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />

<section>
      <div class="profile">
        <div class="image">
          <img src="img.jpeg" alt="" />
        </div>
        <span class="name">Preethi Arora</span>
        <span class="job">Certified Web Developer</span>
        <div class="button">
          <i class="fas fa-envelope"></i>
          <button>Hire Me</button>
        </div>
      </div>

      <div class="outer">
        <div class="popup">
          <i class="fas fa-times close"></i>

          <div class="content">
            <img src="img.jpeg" alt="" />
            <div class="text">
              <span class="name">Preethi Arora</span>
              <span class="job">Certified Web Developer</span>
            </div>
          </div>

          <textarea placeholder="Enter your message"></textarea>

          <div class="button">
            <button class="cancel">Cancel</button>
            <button class="send">Send</button>
          </div>
        </div>
      </div>
    </section>

CSS КОД:

section {
  height: 100vh;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

section .profile {
  display: flex;
  flex-direction: column;
  align-items: center;
}

section.active .profile {
  display: none;
}

.profile .image {
  height: 100px;
  width: 100px;
  background: #0b8c4c;
  border-radius: 50%;
  padding: 2px;
  margin-bottom: 10px;
}

.profile .image img {
  height: 100%;
  width: 100%;
  object-fit: cover;
  border: 3px solid #fff;
  border-radius: 50%;
}

.profile .name {
  font-size: 18px;
  font-weight: 500;
  color: #333;
}

.profile .job {
  font-size: 18px;
  font-weight: 400;
  margin-top: -6px;
  color: #333;
}

.profile .button {
  display: flex;
  align-items: center;
  background: #0b8c4c;
  padding: 12px 20px;
  border-radius: 6px;
  margin-top: 15px;
  cursor: pointer;
  transition: all 0.3s ease;
}

.profile .button:hover {
  background: #0a7b42;
}

.profile .button i {
  font-size: 18px;
  margin-right: 5px;
  color: #fff;
}

.profile .button button {
  display: inline-block;
  background: none;
  outline: none;
  border: none;
  color: #fff;
  cursor: pointer;
  font-size: 16px;
}

section .outer {
  position: absolute;
  height: 100%;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.3);
  box-shadow: 0px 10px 15px rgba(0, 0, 0, 0.1);
  transform: scale(1.2);
  pointer-events: none;
  opacity: 0;
  transition: 0.3s ease-in-out;
}

section.active .outer {
  opacity: 1;
  pointer-events: auto;
  transform: scale(1);
}

section .popup {
  position: relative;
  background: #fff;
  max-width: 380px;
  width: 100%;
  border-radius: 12px;
  padding: 30px;
}

.popup .close {
  position: absolute;
  top: 16px;
  right: 16px;
  font-size: 24px;
  color: #b4b4b4;
  cursor: pointer;
  transition: all 0.2s ease;
}

.popup .close:hover {
  color: #333;
}

.popup .content {
  display: flex;
  align-items: center;
  margin-bottom: 20px;
}

.popup .content .text {
  display: flex;
  flex-direction: column;
  margin-left: 15px;
}

.content .text .name {
  font-size: 14px;
  font-weight: 400;
}

.content .text .job {
  font-size: 12px;
  font-weight: 500;
  margin-top: -4px;
}

.popup img {
  height: 60px;
  width: 60px;
  object-fit: cover;
  border-radius: 50%;
}

.popup textarea {
  min-height: 140px;
  width: 100%;
  resize: none;
  outline: none;
  background: #f3f3f3;
  border: 1px solid #ddd;
  border-radius: 6px;
  padding: 10px 10px 10px 14px;
  font-size: 14px;
  font-weight: 400;
}

.popup .button {
  display: flex;
  justify-content: flex-end;
}

.popup .button button {
  outline: none;
  border: none;
  margin-left: 10px;
  background: #0b8c4c;
  padding: 6px 12px;
  border-radius: 4px;
  margin-top: 15px;
  font-size: 14px;
  color: #fff;
  cursor: pointer;
  transition: all 0.3s ease;
}

.button button.cancel {
  background: #f082ac;
}

.button button.cancel:hover {
  background: #ec5f95;
}

.button button.send:hover {
  background: #0a7b42;
}

JAVASCRIPT КОД:

let section = document.querySelector("section");
let hireBtn = document.querySelector(".button");
let closeBtn = document.querySelector(".close");
let cancelBtn = document.querySelector(".cancel");
let textArea = document.querySelector("textarea");

hireBtn.addEventListener("click", () => {
  section.classList.add("active");
});

closeBtn.addEventListener("click", () => {
  section.classList.remove("active");
  textArea.value = "";
});

cancelBtn.addEventListener("click", () => {
  section.classList.remove("active");
  textArea.value = "";
});


0 Комментарии