BoonKiong.com2026™

人气 74

HTML Popover 弹窗

文***已获得官方认证 2026-2-24 12:41

HTML Popover API 已于2024年正式成为浏览器标准弹出窗口,它允许用户无需通过繁琐的设计就能轻松创建标准的弹出窗口。试看代码和效果:

<button popovertarget="popover1">点我打开弹出窗口</button>
<div id="popover1" popover>
    <p>我是 Popover 弹出窗口!</p>
    <p>点击我以外的任何地方,或者按键盘上的 ESC 键关闭我</p>
</div>

我是 Popover 弹出窗口!

点击我以外的任何地方,或者按键盘上的 ESC 键关闭我……

一切就是这么简单。关键点是:一,需要一个按钮来激活弹窗,不论是 button 还是 input type="button" 都可以,按钮一定使用属性 popovertarget 绑定弹窗的 id;二,弹窗元素可以是 div 或其他 block 元素,设置唯一的 id,并使用 popover 属性。

popover 属性默认值是 auto,它允许按 ESC 键或点击弹出以外的任意地方将其关闭。可以设置 popover 属性为手动,manual,若此,弹窗应该提供关闭操作入口。看下面的代码和演示效果:

<button popovertarget="popover2">点我打开弹出窗口</button>
<div id="popover2" popover="manual">
    <p>我是 Popover 弹出窗口!</p>
    <p>点击我下面的关闭按钮才能将我关闭……</p>
    <p><button popovertarget="popover2" popovertargetaction="hide">❌</button></p>
</div>

我是 Popover 弹出窗口!

点击我下面的关闭按钮才能将我关闭……

手动关闭 popover 弹窗的要点:弹窗上面的关闭按钮(button或input type="button")同样需要绑定弹窗的 id,而且使用属性 popovertargetaction="hide" 来设置点击行为为隐藏(hide)。

使用 Popover API 可以一句JS代码都不用写就能实现弹窗。这不等于说JS对 popover 窗口就无能为力,恰恰相反,结合JS可以让 popover 弹窗做更多的事情,当然,JS不必去处理弹窗的实现细节,可以将精力更多地专注于实现弹窗的业务层面。以下示例模拟复制提示,不真正复制什么,只是模拟复制成功后的提示弹窗,提示用户复制成功,三秒后自动关闭:

<button id="btnCopy" popovertarget="popover3">复制源码</button>
<div id="popover3" popover="manual">源码成功复制!祝你好运!</div>

<script>
    var btnCopy = document.getElementById('btnCopy');
    var ppv = document.getElementById('popover3');
    
    btnCopy.onclick = () => copyDone(ppv);
    
    const copyDone = (popoElment) => setTimeout( () => ppv.hidePopover(), 3000 );
</script>
源码成功复制!祝你好运!

这里,自定义函数 copyDone(弹窗元素) 只做一件事情:管理弹窗,使用 setTimeout 定时器在弹窗弹出三秒后将其关闭。该函数是在复制按钮点击时触发。这里需要熟悉JS基于 Popover 弹窗的操作指令,可以查阅手册了解更多的属性、事件等知识。

【小结】Popover 弹窗需要拥有唯一 id 且需要设置 popover 属性,通过按钮(button或input type="button")其 id 实现弹窗管理,若弹窗的 popover 属性设置为手动(manual),则应在弹窗中安置关闭按钮。如果愿意,弹窗的管理也可以使用JS操作。

【附】现代浏览器基本都已经完美支持 HTML Popover API,仅火狐略微滞后(到目前止支持度还不完美)。


文章来源:马黑PHP整站系统




<
您需要登录后才可以回帖 登录 | 立即注册

您还未登录

随手拍~~:

热门推荐~~:

论坛表情分享...

1、洋葱头 ...

Discuz! X3.5 解决小图标不显示的方法...

我发现大多数使用Discuz! X3.5 都有小图标不能显示的问题,提问的时候大家给的回答都是说跨域的问题, ...

如何在 discuz 帖子里添加 APlayer 音乐播...

1、首先将下边的 APlayer.css 和 APlayer.js 代码下载然后解压上传到服务器。 2、单曲音乐的代 ...

Discuz! 相关帖子功能修改随机显示不依赖标...

打开 source/module/forum/forum_viewthread.php 文件,查找: 换行添加: 再查找: 换行添 ...

Discuz! X3.5 手机版 logo 的路径...

打开以下的模板文件,搜索 logo_m.svg 1.template/default/touch/portal/index.htm 2.template/def ...

热度会员~~:

文強berrybkboonkiongadmin老谟深虑TaC9528huaekinteresabitchJCYSORALINc.t.teo

免责声明~~:


本站内容来源于合作伙伴及网络搜集,版权归原作者所有。如有侵犯版权,请立刻和本站联系,我们将在三个工作日内予以改正。
Email:hsbk@hotmail.com

手机App~~:

服务与条款|隐私政策|免责声明|手机版|小黑屋|网站地图|友链申请| 文强阁

Powered by Discuz! X3.5|© 2001-2026 Discuz! Team. |本站总访问量已经运行: