#javascript #web #components #bootstrap-modal #lit-element
#javascript #веб #Компоненты #bootstrap-модальный #освещенный элемент
Вопрос:
Я новичок в lit-element, и я хотел бы создать модальный компонент, используя litelement, модальный должен отображаться при загрузке страницы и автоматически закрываться через 20 секунд.
Вот мой фрагмент кода:
import { LitElement, html } from 'https://unpkg.com/@polymer/lit-element/lit-element.js?module';
export class Modal extends LitElement {
connectedCallback(){
super.connectedCallback();
this.modalTimer();
}
modalTimer(){
this.shadowRoot.getElementById("modalContainer").classList.remove('show');
}
render() {
return html`
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css">
<style>
.modalContainer {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background: black;
opacity: 0.5;
z-index: 10;
display: none;
}
.modal {
width: 200px;
height: 200px;
z-index: 15;
background: red;
}
.show {
display: flex;
}
</style>
<div id='modalContainer' class="show">
<div class='modal'>Here is the modal</div>
</div>
`;
}
}
customElements.define('element-modal', Modal);
Ответ №1:
Вы можете просто добавить этот код JavaScript,
window.onload = () => {
setTimeout(() => {
$('#modalContainer').modal({show:true});
}, 20000);
}
Комментарии:
1. спасибо за быстрый ответ, но как реализовать с помощью litelement,
Ответ №2:
Попробуйте задать fadeOut
поведение в firstUpdated()
функции обратного вызова.
firstUpdated (){
const s = this.shadowRoot.getElementById('modalContainer').style;
const delayInMilliseconds = 20000; //20 seconds
// Your code to be executed after 20 seconds
setTimeout(function() {
s.opacity = 1;
// Fade an element out and then remove it
(function fade() {
(s.opacity -= 0.1) < 0 ? (s.display = 'none') : setTimeout(fade, 40);
})();
}, delayInMilliseconds);
}