效果如图

需求:点击按钮弹出,如果不进行其他操作则弹出层延时消失,点击另一个按钮时清楚其他弹窗

思路:先完成一个具有弹出层的按钮的样式,使用伪元素定位到按钮上方,加入定时器使其自动消失,当点击另一个按钮时重置定时器并移除弹窗节点

HTML参考

<div><a class="download-btn ios" id="ios" href="javascript:;" target="_blank"><img class="download-icon" src="/static/hl/images/icon_ios.svg" alt="ios">iPhone</a><a class="download-btn android" id="android" href="javascript:;"><img class="download-icon" src="/static/hl/images/icon_android.svg" alt="android">Android</a>
</div>

样式参考

 .toast-pc {position: absolute;width: 176px;line-height: 37px;font-size: 16px;font-weight: 400;color: #fff;background: rgba(0, 0, 0, .72);top: -50px;left: 50%;border-radius: 6px;transform: translate(-50%, 0);&::after {position: absolute;bottom: -8px;left: 50%;border-top: 8px solid rgba(0, 0, 0, .72);border-right: 8px solid transparent;border-left: 8px solid transparent;content: '';transform: translate(-50%, 0);}}

JS内容

// 储存定时器
let t;// 弹窗函数
function Toast(msg, duration, fatherId) {duration = Number.isNaN(duration) ? 3000 : duration;const m = document.createElement('div');m.innerHTML = msg;clearTimeout(t);let toast = document.getElementsByClassName('toast');if (toast.length > 0) {for (let i = 0; i < toast.length; i += 1) {toast[i].parentNode.removeChild(toast[i]);}}m.classList.add('toast-pc', 'toast');document.getElementById(fatherId).appendChild(m);setTimeout(() => {const d = 0.5;// 展示指定时间后的渐隐效果m.style.transition = `-webkit-transform ${d}s ease-in, opacity ${d}s ease-in`;m.style.opacity = '0';// 时间结束后移除弹窗节点t = setTimeout(() => {toast = document.getElementsByClassName('toast');if (toast.length > 0) {for (let i = 0; i < toast.length; i += 1) {toast[i].parentNode.removeChild(toast[i]);}}}, d * 1000);}, duration);
}window.onload = () => {// 绑定点击事件document.getElementById('ios').onclick = () => {Toast('即将上线,敬请期待', 2000, 'ios');};// 绑定点击事件document.getElementById('android').onclick = () => {Toast('即将上线,敬请期待', 2000, 'android');};
};

JavaScript:原生js写的一个多按钮Popover 弹出框相关推荐

  1. HTML+CSS实现带按钮的弹出框

    带按钮的弹出框 HTML部分 CSS样式 JS部分 效果图 补充知识:关于rgba属性 HTML部分 <button id="showPopup" onclick=" ...

  2. html自定义js程序,JS中微信小程序自定义底部弹出框

    实现微信小程序底部弹出框效果,代码分为html,css和js两部分,具体代码详情大家参考下本文. html CSS .commodity_screen { width: 100%; height: 1 ...

  3. asp.net中关于点击页面一个控件,弹出框的制作

    先简述一下一下背景,最近有个项目中有一个页面是关于工作人员大致情况的展示页面,展示的信息放在一个gridview控件里面,控件里有一列为工作人员姓名,然后希望能达到点击姓名弹出一个框显示出此工作人员的 ...

  4. 用canvas和原生JS写的一个flappy bird游戏

    为什么80%的码农都做不了架构师?>>>    <!DOCTYPE html> <html> <head>     <title>&l ...

  5. AlertDialog,安卓自带取消确认按钮的弹出框

    private void showMyDialog(){AlertDialog.Builder builder = new AlertDialog.Builder(context);builder.s ...

  6. html 原生弹出框,html、css和js原生写一个模态弹出框,顺便解决父元素半透明子元素不透明效果...

    模态框: html部分: 弹出框 hhhhh 取消 确认 css部分: #box{ width: 80px; height: 40px; background: #fd7430; border:non ...

  7. js 取得input绑定的datalist中的值_原生JS写一个ToDo Demo

    周六加班没什么事,于是乎...上班摸鱼,用原生JS写了一个ToDo Demo,废话少叙,直接看效果: 如图,实现了以下需求(以下的具体实现我会一一道来): 0.页面的基本布局: 1.rem布局.在不同 ...

  8. 原生JS写仿淘宝搜索框(代码+效果),可实现3级搜索哦!

    闲来无事,用原生JS写了一个淘宝搜索框,用的淘宝的接口,可直接进行商品搜索. 写在前面: 1.记得引用jquery啊! 2.有人私信我说css样式不能用,那是因为复制代码的时候,有空格,只需要自己把c ...

  9. [Js插件]使用JqueryUI的弹出框做一个“炫”的登录页面

    引言 查看项目代码的时候,发现项目中用到JqueryUi的弹出框,可拖拽,可设置模式对话框,就想着使用它弄一个登录页面. 弹出框 在Jquery Ui官网可定制下载弹出框,下载和弹出框下载相关的js文 ...

最新文章

  1. windows上通过cmake-gui生成pytorch工程
  2. C语言--测试电脑存储模式(大端存储OR小端存储)
  3. MyBatis延迟加载及在spring中集成配置
  4. UVA 11552——Fewest Flops
  5. 快速部署ldap服务
  6. java随机加法题_Java简单随机加法算式
  7. endnote导入参考文献及国标(Chinese standard)
  8. 数据--第49课 - 线性索引查找
  9. font: 12px/1.5 Tahoma, Helvetica, Arial, sans-serif;
  10. HUAWEI CE6870 IPv6 OSPFv3 配置
  11. Tomcat9的安装以及配置环境
  12. oracle 图片批量导入,【SQL】Oracle BLOB 批量导入导出图片到文件夹相关语句
  13. torch.Longtensor是什么?和torch.Tensor有什么区别?
  14. 电脑显示器连接主机 没反应 no signal!!
  15. seurat使用笔记(数据处理、PCA、聚类)
  16. 《高性能MySQL》(第三版)之一:MySQL架构与基础
  17. 万字长文,会员体系拆解
  18. 09盘点:梦幻诛仙蜀门剑网三的营销启示
  19. dnf修改服务器制裁24,DNF关于对非法第三方软件封号制裁的重申
  20. Android Studio报错:NDK does not contain any platforms

热门文章

  1. 编一段输出“nihao”的c++程序
  2. Vue的plugins插件
  3. 国内率先!南航上线法大大电子合同签章系统
  4. python round(1234.5678、-2)_python数组的使用
  5. 利用Python实现微信自动拉人进群,微商必备脚本
  6. 一个简单的管理系统功能(增加,删除,显示数据)
  7. Jboss 4.2.3配置与优化
  8. CA6140车床831003拨叉铣上端面毕业设计(说明书+CAD图纸+工序卡+过程卡)
  9. php swoft2.*版本(swoole框架)定时任务功能,php定时任务
  10. 2010年8月16安排