Cómo crear un componente modal con Vue.js

En este tutorial, aprenderemos cómo crear un componente modal usando Vue.js.

Índice
  1. Comenzar
  2. Agregar estilos y transiciones

Comenzar

Este tutorial asume que ya ha creado un nuevo proyecto vue usando Vue-cli

Vamos a crear un nuevo componente llamado Modal.vue en el interior de components carpetas.

Ahora agrega el siguiente código.

Vista modal

<template>
   <div>
      <div v-if="isOpen">
          <h1>Modal heading</h1>
          <p>This my first modal using vue.js</p>
      </div>
      <button @click="isOpen=!isOpen">Open modal</button>
   </div>
</template>


<script>
   export default{
       data:function(){
          return {
      isOpen: false
    };
       }
   }
</script>

Aquí hemos creado nuestro modelo modal con dos div balizas y un button elemento. los button se utiliza para abrir nuestro modal.

En nuestro segundo div etiqueta, agregamos un v-if=isOpen directiva para que nuestro modal solo se abra si el isOpen la propiedad es verdadera.

Probemos nuestro componente modal importándolo al App.vue archivo, no se preocupe, también agregaremos estilos y transiciones.

Si cambiamos a un Open modal botón nuestro modal se abrirá.



vista modal

Agregar estilos y transiciones

Vue nos ofrece un diseño a medida transition elemento que nos ayuda a agregar y eliminar transiciones a nuestros elementos HTML.

Agreguemos los estilos y las transiciones a nuestro Modal Componiendo.

Vista modal

<template>
  <div>
    <transition name="modal">      <div v-if="isOpen">
        <div class="overlay" @click.self="isOpen = false;">
          <div class="modal">
            <h1>Modal heading</h1>
            <p>This my first modal using vue.js</p>
          </div>
        </div>
      </div>
    </transition>
    <button @click="isOpen = !isOpen;">
      {{ isOpen ? "Close" : "Open" }} modal
    </button>
  </div>
</template>

<script>
export default {
  data: function() {
    return {
      isOpen: false
    };
  }
};
</script>

<style scoped>
.modal {
  width: 500px;
  margin: 0px auto;
  padding: 20px;
  background-color: #fff;
  border-radius: 2px;
  box-shadow: 0 2px 8px 3px;
  transition: all 0.2s ease-in;
  font-family: Helvetica, Arial, sans-serif;
}
.fadeIn-enter {
  opacity: 0;
}

.fadeIn-leave-active {
  opacity: 0;
  transition: all 0.2s step-end;
}

.fadeIn-enter .modal,
.fadeIn-leave-active.modal {
  transform: scale(1.1);
}
button {
  padding: 7px;
  margin-top: 10px;
  background-color: green;
  color: white;
  font-size: 1.1rem;
}

.overlay {
  position: fixed;
  top: 0;
  left: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
  background: #00000094;
  z-index: 999;
  transition: opacity 0.2s ease;
}
</style>

En el código anterior, envolvimos nuestro modal con transition elemento.

transición: En el elemento de transición, necesitamos agregar un name atributo con el nombre de la transición.

Probemos nuestro modal nuevamente.

ver-modal-ejemplo-1

¿Has visto que también hemos añadido un overlay a nuestro modal con click oyente para que podamos cerrar nuestro modal al hacer clic en la superposición?

Si quieres conocer otros artículos parecidos a Cómo crear un componente modal con Vue.js puedes visitar la categoría Tutoriales.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas