当我单击对话框元素外部显示的按钮时,如何触发单击事件?
P粉116654495
P粉116654495 2023-08-31 23:33:50
[Vue.js讨论组]
<p>我在我的 Vue 3 应用程序中使用原生 HTML 对话框元素作为模式,并且通过使用绝对定位成功在模式的侧面/外部显示了一个按钮。但是,由于对话框元素的性质以及它们在顶层的放置方式,当我单击对话框元素外部的按钮时,我无法触发单击事件 (displayNextModal)。调整任一元素的 z-index 都没有效果,因为默认情况下对话框始终位于顶层。我想知道是否有任何解决方法,或者触发此单击事件的唯一方法是将按钮放在对话框元素内。</p> <pre class="brush:php;toolbar:false;">&lt;template&gt; &lt;dialog class=&quot;modal-post&quot; ref=&quot;postModalRef&quot;&gt; &lt;div&gt;Modal screen&lt;/div&gt; &lt;/dialog&gt; &lt;button class=&quot;next-modal-button&quot; @click=&quot;displayNextModal&quot;&gt;Next&lt;/button&gt; &lt;/template&gt;</pre> <pre class="brush:php;toolbar:false;">.modal-post { width: 500px; height: 600px; } .next-modal-button { position: absolute; width: 60px; height: 30px; color: black; top: 50%; right: 10px; z-index: 1000; }</pre></p>
P粉116654495
P粉116654495

全部回复(1)
P粉986028039

尽管它可能无法将按钮放置在您想要的确切位置,但您始终可以将对话框的边框和背景设置为透明。然后在里面有一个 div,你将其设置为看起来像一个对话框。并将按钮放在对话框本身内。这将使按钮看起来像在对话框之外,但仍然允许您访问它。不过,您将需要弄乱尺寸和绝对定位。

const favDialog = document.querySelector('.modal-post');
const showButton = document.querySelector('#showButton');
const nextButton = document.querySelector('.next-modal-button');


showButton.addEventListener('click', () => {
    favDialog.showModal();
});

nextButton.addEventListener('click', () => {
    console.log("NEXT");
});
.modal-post {
  border:0;
  background:transparent;
  height:100%
}

.next-modal-button {
  position: absolute;
  width: 60px;
  height: 30px;
  color: black;
  bottom: 20px;
  right: 10px;
  z-index: 1000;
}

.modal-body{
  background:#fff;
  border:1px solid #000;
  padding:10px;
  width: 500px;
  height: 280px;
}
<dialog class="modal-post" ref="postModalRef">
    <div class="modal-body">Modal screen</div>
    <button class="next-modal-button" @click="displayNextModal">Next</button>
  </dialog>  
  <button id="showButton">Show</button>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号