omasreq
@omasreq

Как сделать, чтобы затемнение модального окна не касалось хэдера и футера?

Существуют в проекте два модальных окна, которые вызываются при клике на кнопки входа или регистрации, которые находятся в хэдере. Задача состоит в том, что затемнение модального окна не должно действовать на хэдер и на футер. Впервые с этим сталкиваюсь
Код модального окна входа:
<template>
  <transition name="fade">
    <modal name="login"  width="430"  height="auto">
      <div class="container_login" :class="{login: true, overlay: isOverlay}">
        <div class="login_title">
          <p class="title">Добро пожаловать!</p>
        </div>
        <div class="form_login">
          <input type="email" placeholder="Ваш e-mail">
          <input type="password" placeholder="Пароль">
          <button class="entry_btn mdl-button mdl-js-button mdl-button--raised">Войти</button>
        </div>
        <div class="href_pass">
          <a href="#">Забыли пароль?</a>
        </div>
      </div>
    </modal>
  </transition>
</template>

Что касается настроек шаблона:
<script>
    export default {
        name: 'app-login',
        props: {
          isOverlay: {
            type: Boolean,
            default: true
          }
        },
        data() {
            return {
            }
        },
      methods: {
        show () {
          this.$modal.show('app-login');
        }
      }
    }
</script>

Все что касается стилей, в своем проекте использую sass, конвертировала в css для вопроса:
<style>

  .fade-enter-active, .fade-leave-active {
   transition: opacity 0.2s;
  }

  .fade-enter, .fade-leave-to {
    opacity: 0;
  }
  .overlay {
    z-index: 99999;
    width: 100%;
    height: 100%;
    pointer-events: none;
    background-color: #fff;
  }
  .container_login {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 35px;
    height: 350px;
    width: 300px;
    margin: auto;
    background-color: #fff;
    border-radius: 5px;
   }
   .container_login.login_title {
     display: flex;
     flex-direction: row;
   }
   .container_login.login_title.title {
      font-size: 20px;
      font-weight: 600;
      color: rgb(70, 66, 66);
   }
   .container_login.form_login {
      display: flex;
      flex-direction: column;
   }
   .container_login.form_login input {
      padding: 20px;
      margin: 17px 0;
      font-size: 15px;
      background-color: rgb(239, 239, 239);
    }
    .container_login.form_login.entry_btn {
      height: 50px;
      font-size: 15px;
      text-transform: capitalize;
      border-radius: 5px;
      box-shadow: none;
      color: #fff;
      background-color: rgb(153, 198, 31);
   }
   .container_login.href_pass {
     display: flex;
     margin: 20px 0;
   }
</style>
  • Вопрос задан
  • 508 просмотров
Пригласить эксперта
Ответы на вопрос 2
@alexalexes
Можно пробовать отрегулировать z-index заголовка, подвала и блока основного контента сайта так, чтобы z-index блока .overlay был выше блока основного контента сайта, но меньше чем z-index заголовка и подвала. Однако, есть риск, что само окно будет заползать за элементы страницы (так же поиграться с этим свойством у окна).
Собственно, нужно будет отработать возврат свойства z-index к прежним значениям после закрытия окна.
Ответ написан
Комментировать
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
Пара вариантов:
1. Через z-index вывести footer/header выше затемения
2. Установить высоту затемнения как: height: calc(100vh - XYpx) - где XY - сумма высот header и footer.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы