用HTML+CSS+JavaScript偷偷做一个浏览器里的弹窗吧!然后惊艳所有(不会做弹窗的)人!

目录

一、wHat?

二、wHy?

三、hOw?

四、gO!

(1)在HTML中的标签里找到你要绑定弹窗的按钮:

(2)在HTML中的标签内插入弹窗model,并添加唯一标识符(id):

(3)在CSS文件中分别添加“隐藏弹窗”和“弹窗内容”的指定设置:

(4)在JavaScript中设置弹窗显示事件:

(5)在CSS中添加class类名为close的设置(即“×”):

(6)在JavaScript中添加关闭事件一(点击“×”关闭):

(7)在JavaScript中添加关闭事件二(点击任意位置关闭):

五、非正经总结



一、wHat?

自己要做什么……要为自己设计的浏览器做一个弹窗。 

二、wHy?

为什么做这个……别人有的我也要有!

三、hOw?

使用语言:HTML+CSS+JavaScript

开发工具:Visual Studio Code

编写时间:我(边学边做)50分钟,你(看了这篇)5分钟。(你就跟不懂代码的人说做这个要50分钟,剩下45分钟摸鱼)


四、gO!

找到已经编写好的页面,我用的是我之前编写的一个登录界面。

决定一下弹窗该如何出现,我是点击相关按钮跳出弹窗。

如图1,点击“忘记密码”和“注册”就要弹出窗口。

图1


实现代码如下:

(1)在HTML中的<body>标签里找到你要绑定弹窗的按钮:

我的是这句,

<div class="links">
                <a type="forgetedpassword" href="#">忘记密码</a>
                <a type="signup" href="#">注册</a>
            </div>

然后在两个标签<a>里添加“id”,这个id必须是唯一的,是“唯一识别符”,后面JavaScript要用到 。比如我添加的,“忘记密码”是[id = "forgetPassword"]、“注册”是[id = "signUp"],

<div class="links">
                <a type="forgetedpassword" id="forgetPassword" href="#">忘记密码</a>
                <a type="signup" id="signUp" href="#">注册</a>
            </div>

(2)在HTML中的<body>标签内插入弹窗model,并添加唯一标识符(id):

如下,这边列出的是“忘记密码”的弹窗model,“注册”的model可以依葫芦画瓢,并不难~

<!--更改密码model-->
            <div id="changepswModel" class="psw-model">

                <div class="forgetedpsw-model">
                    <span class="close">&times;</span>
                    <p>这里可以更改密码,但在建设中<br \>loading...</p>
                </div>

            </div>

 解释:

<span>标签内的[&times;]是符号“×”的字符,也就是关闭按钮。

<p>标签里内容只是我做的简单的弹窗展示内容。

现在点进网页是这样的:(看不清就算了……)


<span>标签内容带着<p>标签内容在页面上肆意妄为,那怎么行!那么用CSS和javaScript来约束一下!


(3)在CSS文件中分别添加“隐藏弹窗”和“弹窗内容”的指定设置:

/*弹窗设置*/
/*隐藏弹窗*/
.psw-model{
    display: none;/*默认隐藏*/
    position: fixed;/*固定位置*/
    z-index: 1;/*确保弹窗在顶层*/
    left: 0;
    top: 0;
    width: 100%;/*全屏*/
    height: 100%;
    overflow: auto;/*允许滚动*/
    background-color: #00000050;/*半透明黑色背景*/
}

/*弹窗内容*/
.forgetedpsw-model {
    position: relative;
    background-color: #f0f8ff;
    margin: 15% auto;/*居中 */
    padding: 160px;/*弹窗大小设置*/
    border: 1px solid #888;
    width: 30%;
}

解释:

①颜色后面的数字是透明度百分比,比如“background-color: #00000050;”就是#000000颜色透明度50%的意思。

(4)在JavaScript中设置弹窗显示事件:

//forgetpsw弹窗
var forgetPassword = document.getElementById("forgetPassword");
var changeModel = document.getElementById("changepswModel");

//点击相关按钮时显示弹窗forgetpswModel
forgetPassword.onclick = function() {
    changeModel.style.display = "block";
}

解释:

①声明两个变量,一个读取“忘记密码”文本按钮,另一个读取弹窗;

②设置事件,当执行点击操作时触发事件,弹窗changeModel的显示为“block”,即出现。

注意:唯一标识符id很重要!


做完以上步骤弹窗就有雏形了,如图2。

图2

但是没有办法关闭,而且不好看。

不好看先不说,因为还没正式设计,现在只要能把“×”移到右上角,然后能实现关闭的功能就可以了。


(5)在CSS中添加class类名为close的设置(即“×”):

/*关闭按钮*/
.close {
    position: absolute;
    color: #aaa;
    top: 1px;
    right: 10px;
    float: right;
    font-size: 28px;
    font-weight: bold;
}

.close:hover,
.close:focus {
    color: #000000;
    text-decoration: none;
    cursor: pointer;
}

解释:

.close{}的内容是设置“×”的颜色、位置和大小 。

②下面是设置鼠标移到“×”处的颜色变化等。


做完以上步骤,就看到弹窗变得能看了(只是移动了“×”的位置T_T),此时点开了还不能关闭,如图3所示。

图3

接下来,要实现关闭功能。

我的设想是点击“×”或者点击弹窗以外任意位置(页面内),均可以关闭弹窗。 


(6)在JavaScript中添加关闭事件一(点击“×”关闭):

本段语句是执行点击“×”操作时关闭弹窗。

//当用户点击关闭按钮时,关闭弹窗forgetpswModel
var pswcloseBtn = document.getElementsByClassName("close")[0];
pswcloseBtn.onclick = function() {
    changeModel.style.display = "none";
}

解释:

①声明变量获取网页中class名为“close”的元素 ,并且因为“[0]”的约束,为第一个“close”类。

②设置点击触发事件,事件展示为“none”,也就是弹窗消失,从而达到关闭弹窗的目的。

(7)在JavaScript中添加关闭事件二(点击任意位置关闭):

本段语句是执行点击网页弹窗非白框处任意位置操作时,关闭弹窗。

//当用户点击弹窗中间白框外任意位置时,关闭弹窗
window.onclick = function(event) {
    if(event.target == changeModel) {
        changeModel.style.display = "none";
    }
}

解释:

①给window添加一个点击事件监听器,当使用者在设定的位置点击时这个事件就会被触发。

②因为之前在CSS中设定弹窗是占满全屏的:.psw-model { width: 100%; height: 100%; },所以这里if的条件就是当点击事件的值为“changeModel”时候,也就是点击changeModel的任意位置()。 

注意:if条件逻辑有点难理解且不够优雅,但是毕竟每月税前3000(苦笑),Done is better than perfect~


至此,基本已经完成啦!

“注册”是相同语句,套公式就行~

不过要注意的是,在JavaScript中事件的触发要有顺序的,所以当两件事都会被触发时就要给他们排个序!

比如有两个弹窗都会触发点击“×”关闭时,就给它们添加一个顺序,如图4所示。

图4
 

 以及点击任意位置关闭弹窗,由于一次只会打开一个占满屏幕的弹窗,所以可以公用一个点击事件,如图5所示。

图5


五、非正经总结

前端是不是很简单!

只要能够构想出网页大致模块,知道自己要做什么,该怎么做,理解逻辑基本就差不多了。句子什么的都是公式,记不住也没事,百●度G●●gle任君挑选。

不过我这种科班四年出来仍是小白任重道远……


六、小彩蛋/小事故

我在摸索期间发现一个很好玩的事情,当时给弹窗写CSS的时候没把握好位置,导致字符“×”跑到了整个弹窗右上角,而不是白框右上角,于是……如图6所示。

图6

很眼熟……

这不就是……

一些网页弹窗广告爱用的招数嘛……

掌握了一个流氓技能(?)


OK!

结束!下次有好玩的有用的技能,我再来记录~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值