在编程实践过程中,需要实现在 Web 页面实现一个“制定闹钟”的功能,而且我希望这个功能能够以弹窗的方式实现。由于毫无 Web 端开发的经验,所以难免地查了类似“HTML实现自定义弹窗”、“JS实现定闹钟功能”等等关键词。由日常的搜索引擎经验可知,这时候得到的检索结果很多,所以本篇博客的意义在于帮助解决这样的问题,即 HTML如何实现简易弹窗,当然,这里采用的样例问题就是 实现一个弹窗实现定闹钟功能。
解决途径
在学习 HTML 的过程中,页面部件的显示位置是由 HTML 文件的布局来控制的,所以该如何看待“弹窗”?不妨把它看做是一个部件(这样来设计实现它的布局自然直接使用HTML来实现即可)。 那如何让这个“部件”拥有“弹窗的效果”?把待显示部件放到页面最前方即可。那如何让弹窗在该弹出来的时候弹出来,用户点击关闭之后即可关闭呢?当该部件不需要显示的时候的设置为“none”,在需要它显示的时候,设置为“block”即可。
由此,已经捋清了实现的途径(原理)。在这样的实现原理下,就需要说一下实现的细节问题了。
HTML 对于部件来说,在该部件的 div 标签下实现布局、class 标签下指定 css 样式即可。同时,css 内可以设定样式 z-index 值,这就有点像是空间直角坐标系一般:将屏幕横向看做 x 轴、纵向看做 y 轴,这样就可以确定屏幕上的每个像素点;那么引入 z 轴呢?即可实现部件堆叠的效果!这也就是 z-index 的作用,z-index 的值越大,堆叠的部件就越排在上面。也就是说,要实现的弹窗,让它的 z-index 值足够大,就可以满足弹窗的需求了。
然而,常常看到的弹窗,会使得页面其余部分变为浅色(或是灰色),这个效果该如何实现?只需要再添加一层“遮罩层”即可!可以让遮罩层的颜色设置为想要的颜色(比如灰色),这样,在弹窗出现的时候,弹窗“堆在最上层”,遮罩层“堆在相邻层”,原页面“堆在最下层”,这样层次分明,自然就可以实现弹窗的效果了。这时的弹窗,本质上还是 HTML 部件,自然布局就可以用 HTML 来写了。
//获取元素 // var oBox = document.querySelector(".alarmbox"); // var oTime = document.querySelector(".time"); var oBox = document.getElementById("alarm_box");
var oHour = document.getElementById("hour"); var oMin = document.getElementById("min"); var oSec = document.getElementById("sec"); var oBtn = document.getElementById("btn");
//设置定时器 var timer; timer = setInterval(function() { clock(); }, 500);
// 必须定义在此处,以避免被回收 var uh, um, us;
functionclock() { var curr_date = newDate(); var curr_hour = curr_date.getHours(); var curr_minute = curr_date.getMinutes(); var curr_second = curr_date.getSeconds();
//修改时分秒的格式 var sh = (curr_hour < 10) ? '0'+curr_hour : ''+curr_hour; var sm = (curr_minute < 10) ? '0'+curr_minute : ''+curr_minute; var ss = (curr_second < 10) ? '0'+curr_second : ''+curr_second; //修改innertext oBox.innerText = "当前时间:\n" + sh + " : " + sm + " : " + ss;