一、bootstrap的使用,参照官方文档。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- Bootstrap -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
</head>
<body>
<h1>你好,世界!</h1>
<!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
<script src="https://cdn.jsdelivr.cn/npm/jquery@1.12.4/dist/jquery.min.js" integrity="sha384-nvAa0+6Qg9clwYCGGPpDQLVpLNn0fRaROjHqs13t4Ggj3Ez50XnGQqc/r8MhnRDZ" crossorigin="anonymous"></script>
<!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
</body>
</html>
官方文档的jquery路径可能无法访问,建议将jquery下载到本地进行引入。
二、添加mny-alert.css,用于改变弹出框在页面中的样式,这里主要用于定位。
/**
用于自定义的弹出框自动消失的页面样式定位等
*/
.mny-alert-position{
position:fixed;
top:4rem;
left:50%;
/*margin-left: -81px;*/
z-index: 999999;
}
这里使用的是fixed进行定位,通过js获取弹出框的实际宽度来进行外边距的偏移以达到始终居中显示的目的。
三、添加mny-alert.js
"use strict";
var interval; //定时器变量
/**
* 封装的自定义bootstrap警示框弹出自动消失效果
* @param type 1:成功 2:危险
* @param msg
* @param time 默认的是2000,即2秒
*/
function mnyAlert(type,msg,time=2000){
//判断页面中是否有#mny-width的dom元素,有的话将其去除
if($('#mny-width').length > 0){
$('#mny-width').remove();
}
// 先将其插入到body下
if(type == '1'){
$('body').append(`
<div id="mny-width" class="alert alert-success mny-alert-position" role="alert">
`+msg+`
</div>
`);
}else if(type == '2'){
$('body').append(`
<div id="mny-width" class="alert alert-danger mny-alert-position" role="alert">
`+msg+`
</div>
`);
}
//计算长度
const mny_width = $('#mny-width').innerWidth() + 2;
//向元素中添加内嵌样式
$('#mny-width').css('marginLeft','-'+mny_width/2+'px');
// console.log(time);
//清除已存在的定时器
clearInterval(interval)
//将元素定时去除
interval = window.setInterval(function () {
$('#mny-width').remove();
}, time);
}
注意点:1、需要处理定时器重叠的问题,所以需要清除定时器;2、弹出框可能会弹出多个,所以每次在执行弹出前需要清除在页面中已有的弹出框。3、仔细比较width()、innerWidth()、outerWidth()等方法那个更适用。
四、调用执行以及效果
mnyAlert(1,'成功弹出框!');
最后希望大家关注我下吧,会时常更新技术博文。