繁体   English   中英

如何让按钮触发 Javascript 弹出窗口(Divi + ActiveCampaign)

[英]How can I make a button trigger a Javascript popup (Divi + ActiveCampaign)

我刚刚获得 ActiveCampaign 的支持,他们说他们无法向我提供有关如何添加由 wordpress 按钮触发的模式弹出表单的代码示例。

我在网上找到了一些资源,但它们都与我正在寻找的功能略有不同。

我已经将 ActiveCampaign 插件添加到我的 wordpress 站点,并且有两个选项可以在站点中嵌入表单。

  1. 简码“[activeCampaign formId=1]”或

  2. <script src="https://exampledomain.com/f/embed.php?id=1" type="text/javascript" charset="utf-8"></script>

我目前正在使用 divi 主题,并且按钮具有 CSS ID 和 CSS 类的部分。

总而言之,我希望能够单击一个按钮并弹出 activecampaign 模态表单。

如果您能向我展示如何向按钮和我的网站添加代码以触发模式弹出窗口,那就太棒了。

如果您有任何其他信息,请告诉我。

谢谢!

建议:

这涉及到 DOM 操作。 创建一个名为active的 css class应设置为要显示的表单容器。 下面是一个例子:

 var formToggle = document.getElementById("form-toggler"); var formContainer = document.querySelector(".form-container"); formToggle.addEventListener('click', function(){ // When you click the button, first check if the form is open // so that you know if you should close or open if(formContainer.classList.contains("active")){ // Form is currently open, because it has active as one of it's classes // so remove active to hide it. formContainer.classList.remove("active"); }else{ // Form is currently closed, because it does not have active as one of it's classes // so add active to show it. formContainer.classList.add("active"); } });
 .form-container{ width: 100%; height: 100%; min-height: 200px; background-color: rgba(0,0,0,0.2); display: none; } /* When form has active class, set display to block */ .form-container.active{ display: block !important; }
 <div class="form-container"> <!-- your Form Here --> <h1>Yey, form is active!!</h1> </div> <button id="form-toggler">OpenForm<button>

这只是接近您的场景的基本级别。 所以你必须在你的 css 上工作,让你的 Modal 覆盖整个窗口,并在它上面添加一个关闭按钮,以防有人决定关闭它。

嘿,这也应该对你有用。 请记住,有一些额外的代码,您可能不需要所有这些代码,例如动画,但我将保留这些代码,因为它们会使模态看起来更流畅。 对于此代码,您不需要引导程序或任何其他库。

HTML:

<a id="gdx-lighbox-modal-unique-1" data-hover="true" type="button" class="gdx-lightbox-tooltip-open-modal lightbox-link gdx-lightbox-button" data-open="gdx-lighbox-modal-1">
Click Here
</a>

<div class="gdx-modal" id="gdx-lighbox-modal-1" data-animation="slideInOutLeft">
<div class="gdx-modal-dialog">
<header class="gdx-modal-header">   
<a class="gdx-close-modal" aria-label="close modal" data-close="">✕</a>  
</header>  
<section class="gdx-modal-content">
//Form would go here instead of the image (image just an example)
<img src="https://gdxdesigns.com/wp-content/uploads/2020/11/little-frog.jpg">  </section> 
<footer class="gdx-modal-footer"> <h3 class="gdx-modal-image-title"></h3></footer> 
</div> 
</div>

CSS:

/* RESET RULES
–––––––––––––––––––––––––––––––––––––––––––––––––– */
:root {
    --lightgray: #efefef;
    --blue: steelblue;
    --white: #fff;
    --black: rgba(0, 0, 0, 0.8);
    --bounceEasing: cubic-bezier(0.51, 0.92, 0.24, 1.15);
  }

  * {
    padding: 0;
    margin: 0;
  }

  .gdx-body {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100vh;
    font: 16px/1.5 sans-serif;
  }

  .lightbox-link, a.lightbox-link {
    cursor: pointer;
  margin-left: 2.5%;
  }

  .gdx-lightbox-tooltip-open-modal img {
      width: 20px;
      height: 20px;
  }

  .gdx-lightbox-button {
    padding: 10px 20px;
    background: #000;
    padding: 10px 20px;
    font-weight: normal;
    border: 2px solid #000;
    color: #94c93b;
  }

  .gdx-lightbox-button:hover {
    background: #FFF;
    color: #000;
  }

  /* MODAL
  –––––––––––––––––––––––––––––––––––––––––––––––––– */
  .gdx-modal {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: var(--black);
    cursor: pointer;
    visibility: hidden;
    opacity: 0;
    transition: all 0.35s ease-in;
    z-index: 9999 !important;
  }

  .gdx-modal.is-visible {
    visibility: visible;
    opacity: 1;
  }

  .gdx-modal-dialog {
    position: relative;
    max-width: 100vw;
    max-height: 100vh;
    border-radius: 5px;
    background: var(--white);
    overflow: auto;
    cursor: default;
    margin-top: 5%;
  }

  .gdx-modal-dialog > * {
    padding: 1rem;
  }

  .gdx-modal-header,
  .gdx-modal-footer {
    background: #FFF;
  }

  .gdx-modal-header .gdx-close-modal {
    font-size: 1.5rem;
  }

  .gdx-modal-header a {
      font-size: 2em;
  }

  .gdx-modal-content {
      text-align: center;
  }

  .gdx-modal-content img {
    margin: 0 !important;
  }

  .gdx-close-modal {
      float: right;
      cursor: pointer;
  }

  .gdx-modal p + p {
    margin-top: 1rem;
  }

  .gdx-modal-image-title {
      text-align: center;
      font-size: 1em;
      margin: 0;
  }

  /* ANIMATIONS
  –––––––––––––––––––––––––––––––––––––––––––––––––– */
  [data-animation] .gdx-modal-dialog {
    opacity: 0;
    transition: all 0.5s var(--bounceEasing);
  }

  [data-animation].is-visible .gdx-modal-dialog {
    opacity: 1;
    transition-delay: 0.2s;
  }

  [data-animation="slideInOutDown"] .gdx-modal-dialog {
    transform: translateY(100%);
  }

  [data-animation="slideInOutTop"] .gdx-modal-dialog {
    transform: translateY(-100%);
  }

  [data-animation="slideInOutLeft"] .gdx-modal-dialog {
    transform: translateX(-100%);
  }

  [data-animation="slideInOutRight"] .gdx-modal-dialog {
    transform: translateX(100%);
  }

  [data-animation="zoomInOut"] .gdx-modal-dialog {
    transform: scale(0.2);
  }

  [data-animation="rotateInOutDown"] .gdx-modal-dialog {
    transform-origin: top left;
    transform: rotate(-1turn);
  }

  [data-animation="mixInAnimations"].is-visible .gdx-modal-dialog {
    animation: mixInAnimations 2s 0.2s linear forwards;
  }

  [data-animation="slideInOutDown"].is-visible .gdx-modal-dialog,
  [data-animation="slideInOutTop"].is-visible .gdx-modal-dialog,
  [data-animation="slideInOutLeft"].is-visible .gdx-modal-dialog,
  [data-animation="slideInOutRight"].is-visible .gdx-modal-dialog,
  [data-animation="zoomInOut"].is-visible .gdx-modal-dialog,
  [data-animation="rotateInOutDown"].is-visible .gdx-modal-dialog {
    transform: none;
  }

  @keyframes mixInAnimations {
    0% {
      transform: translateX(-100%);
    }

    10% {
      transform: translateX(0);
    }

    20% {
      transform: rotate(20deg);
    }

    30% {
      transform: rotate(-20deg);
    }

    40% {
      transform: rotate(15deg);
    }

    50% {
      transform: rotate(-15deg);
    }

    60% {
      transform: rotate(10deg);
    }

    70% {
      transform: rotate(-10deg);
    }

    80% {
      transform: rotate(5deg);
    }

    90% {
      transform: rotate(-5deg);
    }

    100% {
      transform: rotate(0deg);
    }
  }

  /* Backend Instructions
–––––––––––––––––––––––––––––––––––––––––––––––––– */
.lightbox-instructions-heading {
    font-size: 1.8em !important;
}
.lightbox-instructions strong {
    font-size: 1.2em !important;
}
.gdx-lightbox-tooltip-open-modal img {
    margin: -0.3em;
    margin-left: 0.25em;
}
xmp {
    white-space: normal;
}
.lightbox-tooltip-instructions-content xmp{
    margin-bottom: 2em;
}

Javascript


    const openEls = document.querySelectorAll("[data-open]");
    const closeEls = document.querySelectorAll("[data-close]");
    const isVisible = "is-visible";

    for (const el of openEls) {
      el.addEventListener("click", function() {
        const modalId = this.dataset.open;
        document.getElementById(modalId).classList.add(isVisible);
      });
    }

    for (const el of closeEls) {
      el.addEventListener("click", function() {
        this.parentElement.parentElement.parentElement.classList.remove(isVisible);
      });
    }

    document.addEventListener("click", e => {
      if (e.target == document.querySelector(".gdx-modal.is-visible")) {
        document.querySelector(".gdx-modal.is-visible").classList.remove(isVisible);
      }
    });

    document.addEventListener("keyup", e => {
      // if we press the ESC
      if (e.key == "Escape" && document.querySelector(".gdx-modal.is-visible")) {
        document.querySelector(".gdx-modal.is-visible").classList.remove(isVisible);
      }
    });

JSFiddle 示例可以在这里看到。

如果您想将其下载为 Wordpress 插件(当然是免费的),您可以在此处进行

如果您想查看带有按钮模式弹出窗口的插件演示,请在此处查看

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM