screen_rotation
Copied to Clipboard
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script> </head> <body> <div id="app"> <h3>Vue Js Close Modal When click Outside</h3> <button @click="openModal" class="open-modal">Open Modal</button> <div class="modal" v-if="isModalOpen"> <div class="modal-content" ref="modalRef"> <h3>Vue Js Close Modal when click outside</h3> <!-- Modal content here --> <button class="close-button" @click="closeModal">Close</button> </div> </div> </div> <script type="module"> const app = new Vue({ el: "#app", data() { return { isModalOpen: false }; }, methods: { openModal() { this.isModalOpen = true; // Attach the mouseup event listener to the document document.addEventListener('mouseup', this.closeModalOnClickOutside); }, closeModal() { this.isModalOpen = false; // Remove the mouseup event listener from the document document.removeEventListener('mouseup', this.closeModalOnClickOutside); }, closeModalOnClickOutside(event) { const modal = this.$refs.modalRef; if (!modal.contains(event.target)) { this.closeModal(); } } } }); </script> <style scoped> .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: 5px; max-width: 400px; } .open-modal { background-color: #007bff; color: #fff; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; } .close-button { background-color: #dc3545; color: #fff; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; float: right } /* Hover effect */ .open-modal:hover, .close-button:hover { opacity: 0.8; } </style> </body> </html>