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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от evalyn.barrows , год назад

@hattie 

Для создания модального окна на 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
  
    
      
    
  



export default {
  name: 'Modal',
  props: {
    isVisible: {
      type: Boolean,
      required: true
    }
  }
}



.modal {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.5);
  display: flex;
  justify-content: center;
  align-items: center;
}

.modal-content {
  background-color: #fff;
  padding: 20px;
}


  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
26
27
28
29
30
31
32
  
    Открыть модальное окно

    
      
      Модальное окно
      Пример контента модального окна
    
  



import Modal from './Modal.vue';

export default {
  name: 'App',
  components: {
    Modal
  },
  data() {
    return {
      showModal: false
    }
  },
  methods: {
    openModal() {
      this.showModal = true;
    }
  }
}


В приведенном выше примере, при нажатии на кнопку "Открыть модальное окно" устанавливается значение переменной showModal в значение true, что приводит к отображению модального окна. Контент модального окна указывается внутри компонента Modal при помощи слота <slot></slot>.


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

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

от abel , 5 месяцев назад

@hattie 

import Modal from './Modal.vue';


export default { name: 'App', components: { Modal }, data() { return { showModal: false } }, methods: { openModal() { this.showModal = true; }, closeModal() { this.showModal = false; } } }