Web 组件中页面加载时的模式弹出窗口

Posted

技术标签:

【中文标题】Web 组件中页面加载时的模式弹出窗口【英文标题】:modal popup on pageload in web component 【发布时间】:2019-08-09 14:51:41 【问题描述】:

我是 lit-element 的新手,我想使用 litelement 创建一个模态组件,模态应该在页面加载时显示并在 20 秒后自动关闭。 这是我的代码 sn-p:

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);

【讨论】:

感谢及时回复,但是如何使用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);

【讨论】:

以上是关于Web 组件中页面加载时的模式弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

如何将 POST 连接到通过 AJAX 加载的不同剃须刀页面到模式弹出窗口中?

如何使用内部 html 和引导程序使这个简单的 jQuery 弹出模式在页面加载时显示

每次加载页面时运行 javascript

如何让 Richfaces 组件在按需加载的弹出窗口中工作?

将部分视图加载到模式弹出窗口中

Selenium - 如何等到页面完全加载[重复]