Как сделать модальное окно на vue.js?

Пользователь

от bernardo_nolan , в категории: JavaScript , 2 года назад

Как сделать модальное окно на vue.js?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от guillermo , 2 года назад

@bernardo_nolan 

Для создания модального окна на Vue.js можно использовать следующие шаги:

  1. Создайте компонент модального окна. Например, назовем его "Modal":
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<template>
  <div class="modal">
    <div class="modal-content">
      <slot></slot>
      <button @click="$emit('close')">Закрыть</button>
    </div>
  </div>
</template>

<style>
.modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  display: flex;
  justify-content: center;
  align-items: center;
}

.modal-content {
  background-color: white;
  padding: 20px;
  border-radius: 4px;
}
</style>


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

  1. В родительском компоненте определите переменную, которая будет хранить состояние модального окна:
1
2
3
4
5
data() {
  return {
    showModal: false
  };
}


  1. В родительском компоненте добавьте кнопку, которая будет открывать модальное окно, и элемент модального окна:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<template>
  <div>
    <button @click="showModal = true">Открыть модальное окно</button>
    <Modal v-if="showModal" @close="showModal = false">
      <h2>Заголовок модального окна</h2>
      <p>Содержимое модального окна</p>
    </Modal>
  </div>
</template>

<script>
import Modal from './Modal.vue';

export default {
  components: {
    Modal
  },

  data() {
    return {
      showModal: false
    };
  }
};
</script>


Здесь мы импортируем компонент модального окна и определяем его в качестве дочернего компонента. Мы также связываем событие закрытия модального окна с обновлением переменной showModal.


Готово! Теперь при нажатии на кнопку "Открыть модальное окно" появится модальное окно с заголовком и содержимым, а при нажатии на кнопку "Закрыть" окно закроется.

Пользователь

от marisa , 7 месяцев назад

@bernardo_nolan 

Для создания модального окна на Vue.js можно использовать компоненты и управление состоянием. Вот пример кода для создания модального окна:

  1. Создайте компонент Modal.vue:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<template>
  <div class="modal" v-if="isVisible">
    <div class="modal-content">
      <slot></slot>
      <button @click="closeModal">Закрыть</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isVisible: false
    }
  },
  methods: {
    openModal() {
      this.isVisible = true;
    },
    closeModal() {
      this.isVisible = false;
    }
  }
}
</script>

<style>
.modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  display: flex;
  justify-content: center;
  align-items: center;
}

.modal-content {
  background-color: white;
  padding: 20px;
  border-radius: 4px;
}
</style>


  1. В родительском компоненте (например, App.vue) добавьте использование компонента Modal:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<template>
  <div>
    <button @click="openModal">Открыть модальное окно</button>
    <Modal ref="modal">
      <h2>Заголовок модального окна</h2>
      <p>Содержимое модального окна</p>
    </Modal>
  </div>
</template>

<script>
import Modal from './Modal.vue';

export default {
  components: {
    Modal
  },
  methods: {
    openModal() {
      this.$refs.modal.openModal();
    }
  }
}
</script>


Теперь у вас будет кнопка, которая открывает модальное окно с заданным содержимым, а при нажатии на кнопку "Закрыть" модальное окно закроется.