js 提示框的实现---组件开发之(二)
接着第上一个,在js文件里再增加一个 popModal 模块,实现弹框效果
css 代码:
.alert {
padding: 15px;
margin-bottom: 20px;
border: 1px solid transparent;
border-radius: 4px;
}
.alert-warning {
color: #8a6d3b;
background-color: #fcf8e3;
border-color: #faebcc;
}
.alert-success {
color: #3c763d;
background-color: #dff0d8;
border-color: #d6e9c6;
}
.alert .close {
text-decoration: none;
float: right;
font-size: 21px;
font-weight:;
line-height:;
color: #000;
text-shadow: 0 1px 0 #fff;
filter: alpha(opacity=20);
opacity: .2;
}
.alert-info {
color: #31708f;
background-color: #d9edf7;
border-color: #bce8f1;
}
.alert-danger {
color: #a94442;
background-color: #f2dede;
border-color: #ebccd1;
}
.modal.fade .modal-dialog {
-webkit-transform: translate(0, -25%);
-ms-transform: translate(0, -25%);
transform: translate(0, -25%);
-webkit-transition: -webkit-transform 0.3s ease-out;
-moz-transition: -moz-transform 0.3s ease-out;
-o-transition: -o-transform 0.3s ease-out;
transition: transform 0.3s ease-out;
}
.modal-backdrop {
position: fixed;
top:;
right:;
bottom:;
left:;
z-index:;
background-color: #000000;
}
.modal-backdrop.fade {
opacity:;
filter: alpha(opacity=0);
}
.modal-backdrop.in {
opacity: 0.5;
filter: alpha(opacity=50);
}
.fade {
opacity:;
-webkit-transition: opacity 0.15s linear;
transition: opacity 0.15s linear;
}
.fade.in {
opacity:;
}
.modal.fade .modal-dialog {
-webkit-transform: translate(0, -25%);
-ms-transform: translate(0, -25%);
transform: translate(0, -25%);
-webkit-transition: -webkit-transform 0.3s ease-out;
-moz-transition: -moz-transform 0.3s ease-out;
-o-transition: -o-transform 0.3s ease-out;
transition: transform 0.3s ease-out;
}
.modal.in .modal-dialog {
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
transform: translate(0, 0);
}
.modal-dialog {
position: relative;
z-index:;
width: auto;
padding: 10px;
margin-right: auto;
margin-left: auto;
}
.modal-content {
position: relative;
background-color: #ffffff;
border: 1px solid #999999;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 6px;
outline: none;
-webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
background-clip: padding-box;
}
.modal-header {
min-height: 16.428571429px;
padding: 15px;
border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
margin-top: -2px;
}
.close:focus, .close:hover {
color: #000;
text-decoration: none;
cursor: pointer;
filter: alpha(opacity=50);
opacity: .5;
}
button.close {
-webkit-appearance: none;
padding:;
cursor: pointer;
background: 0 0;
border:;
}
.close {
float: right;
font-size: 21px;
font-weight:;
line-height:;
color: #000;
text-shadow: 0 1px 0 #fff;
filter: alpha(opacity=20);
opacity: .2;
}
.modal-title {
margin:;
line-height: 1.428571429;
}
.modal-body {
position: relative;
padding: 20px;
}
.modal-footer {
padding: 19px 20px 20px;
margin-top: 15px;
text-align: right;
border-top: 1px solid #e5e5e5;
}
.modal-footer:before,
.modal-footer:after {
display: table;
content: " ";
}
.modal-footer:after {
clear: both;
}
.modal-footer:before,
.modal-footer:after {
display: table;
content: " ";
}
.modal-footer:after {
clear: both;
}
.modal-footer .btn + .btn {
margin-bottom:;
margin-left: 5px;
}
.modal-footer .btn-group .btn + .btn {
margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
margin-left:;
}
@media screen and (min-width: 768px) {
.modal-dialog {
width: 600px;
padding-top: 30px;
padding-bottom: 30px;
}
.modal-content {
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
}
}
html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="./css/layout1.css">
<script src="./js/layout.js"></script>
<script>
window.onload = function(){
// 新对象实例化及调用show函数
var oModal = new huanying2015.popModal({
title : '你好',
content : '这是模态框的内容,这是模态框的内容这是模态框的内容'
});
oModal.show();
}
</script>
</head>
<body>
</body>
</html>
js代码:
;(function(window,undefined){
//构造一个函数,参数为一个对象,实例化时,有值则进行传值,没有则赋值一个空对象
function popAlert( opt ){
this.opt = opt || {};
};
// 显示函数的设置
popAlert.prototype.show = function(){
// 创建一个div元素
var Odiv = document.createElement('div');
var that = this;
var aclose ;
// 给div添加class属性,这里使用的是多个属性的添加,同时将opt的class传递过来
Odiv.classList.add('alert',this.opt['class']||'' );
// 设定div包含的内容
Odiv.innerHTML = this.opt['content'] || '';
Odiv.innerHTML += "<a href='javascript:;' class='close'> X </a>";
// 把div元素整体插入body内,appendChild是插在最后面
document.body.appendChild(Odiv);
aclose = document.querySelectorAll('.alert > .close');
// 点击close按钮,则影藏此按钮的父级元素
aclose.forEach(function(val){
val.addEventListener( 'click',function(){
that.hide( this.parentNode );
});
});
};
// 影藏函数设置
popAlert.prototype.hide = function( obj ){
obj.style.display = 'none';
};
function popModal( opt ){
this.opt = opt || {};
};
popModal.prototype.show = function(){
var modalHtml = "<div class='modal fade'>";
modalHtml += "<div class='modal-dialog'>";
modalHtml += "<div class='modal-content'>";
modalHtml += "<div class='modal-header'>";
modalHtml += "<button type='button' class='close'> X </button>";
modalHtml += "<h4 class='modal-title'>" + (this.opt['title']||'') + "</h4>";
modalHtml += "</div>";
modalHtml += "<div class='modal-body'>" + (this.opt['content']||'') + "</div>";
modalHtml += "<div class='modal-footer'><button type='button'> 确认 </button></div>";
modalHtml += "</div>";
modalHtml += "</div>";
modalHtml += "</div>";
modalHtml += "<div class='modal-backdrop in'></div>";
document.body.innerHTML = modalHtml;
var oModal = document.querySelector(".modal");
oModal.classList.add('in');
oModal.style.display = 'block';
var oClose = document.querySelector(".modal .close");
var obtn = document.querySelector('.modal .modal-dialog .modal-content .modal-footer button');
var that = this ;
oClose.addEventListener('click',function(){
that.hide(this);
});
obtn.addEventListener('click',function(){
that.hide(this);
});
}
popModal.prototype.hide = function( obj ){
var objParents = findNode(obj);
objParents.style.display = 'none';
document.body.removeChild(document.querySelector(".modal-backdrop"));
};
function findNode( obj ){
var aClass ;
while( obj = obj.parentNode){
aClass = Array.prototype.slice.call( obj.classList );
if( aClass.length && /modal/.test( aClass[0] )&& aClass[0].length ==5 ){
break;
}
};
return obj;
};
// 设置一个空对象:huanying2015
var huanying2015 = {};
// 把popAlert和popModal 挂在huanying2015下面
huanying2015 = {
'popAlert' : popAlert,
'popModal' : popModal
};
// 然后把huanying2015挂在window 对象下面,这样就可以在外面使用huanying2015调用popAlert 了
window.huanying2015 = huanying2015;
})(window,undefined);
运行结果:

对于js部分,还可以再次进行封装:调用时直接填入模态框的内容进行调用
css部分:与上面的一样,不动
js部分:在原先的立即执行表达式函数后面封装一个函数 show_popModal();
;(function(window,undefined){
//构造一个函数,参数为一个对象,实例化时,有值则进行传值,没有则赋值一个空对象
function popAlert( opt ){
this.opt = opt || {};
};
// 显示函数的设置
popAlert.prototype.show = function(){
// 创建一个div元素
var Odiv = document.createElement('div');
var that = this;
var aclose ;
// 给div添加class属性,这里使用的是多个属性的添加,同时将opt的class传递过来
Odiv.classList.add('alert',this.opt['class']||'' );
// 设定div包含的内容
Odiv.innerHTML = this.opt['content'] || '';
Odiv.innerHTML += "<a href='javascript:;' class='close'> X </a>";
// 把div元素整体插入body内,appendChild是插在最后面
document.body.appendChild(Odiv);
aclose = document.querySelectorAll('.alert > .close');
// 点击close按钮,则影藏此按钮的父级元素
aclose.forEach(function(val){
val.addEventListener( 'click',function(){
that.hide( this.parentNode );
});
});
};
// 影藏函数设置
popAlert.prototype.hide = function( obj ){
obj.style.display = 'none';
};
function popModal( opt ){
this.opt = opt || {};
};
popModal.prototype.show = function(){
var modalHtml = "<div class='modal fade'>";
modalHtml += "<div class='modal-dialog'>";
modalHtml += "<div class='modal-content'>";
modalHtml += "<div class='modal-header'>";
modalHtml += "<button type='button' class='close'> X </button>";
modalHtml += "<h4 class='modal-title'>" + (this.opt['title']||'') + "</h4>";
modalHtml += "</div>";
modalHtml += "<div class='modal-body'>" + (this.opt['content']||'') + "</div>";
modalHtml += "<div class='modal-footer'><button type='button'> 确认 </button></div>";
modalHtml += "</div>";
modalHtml += "</div>";
modalHtml += "</div>";
modalHtml += "<div class='modal-backdrop in'></div>";
document.body.innerHTML = modalHtml;
var oModal = document.querySelector(".modal");
oModal.classList.add('in');
oModal.style.display = 'block';
var oClose = document.querySelector(".modal .close");
var obtn = document.querySelector('.modal .modal-dialog .modal-content .modal-footer button');
var that = this ;
oClose.addEventListener('click',function(){
that.hide(this);
});
obtn.addEventListener('click',function(){
that.hide(this);
});
}
popModal.prototype.hide = function( obj ){
var objParents = findNode(obj);
objParents.style.display = 'none';
document.body.removeChild(document.querySelector(".modal-backdrop"));
};
function findNode( obj ){
var aClass ;
while( obj = obj.parentNode){
aClass = Array.prototype.slice.call( obj.classList );
if( aClass.length && /modal/.test( aClass[0] )&& aClass[0].length ==5 ){
break;
}
};
return obj;
};
// 设置一个空对象:huanying2015
var huanying2015 = {};
// 把popAlert 挂在huanying2015下面
huanying2015 = {
'popAlert' : popAlert,
'popModal' : popModal
};
// 然后把huanying2015挂在window 对象下面,这样就可以在外面使用huanying2015调用popAlert 了
window.huanying2015 = huanying2015;
})(window,undefined);
// 这里再次进行封装 popModal
function show_popModal( content ){
var Opop = new huanying2015.popModal({
'title':"huanying2015 提示您",
'content':content
});
return Opop.show();
};
html部分: 注意,下面是直接调用show_popModal()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="./css/layout1.css">
<script src="./js/layout.js"></script>
<script>
window.onload = function(){ show_popModal('这里是地球,火星人,欢迎您们来旅游!');
}
</script>
</head>
<body>
</body>
</html>
运行结果:

js 提示框的实现---组件开发之(二)的更多相关文章
- js 提示框的实现---组件开发之(一)
自己做了一个简单的提示框,供自己使用,也可以供他人参考,看懂此文,是理解组件开发的入门 思路比较简单: 1.常规写法: 1.1. 创建一个构造函数 1.2. 给构造函数的原型对象添加show 和hid ...
- 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发
每天记录一点:NetCore获得配置文件 appsettings.json 用NetCore做项目如果用EF ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...
- 弹出JS提示框
弹出JS提示框Page.ClientScript.RegisterStartupScript(typeof(string), "msg", "<script> ...
- [UIKit学习]04.关于HUD提示框,定时任务、开发关于资源常见问题
提示框的背景透明此时要设置background的Alpha值 定时任务 方法1:performSelector // 1.5s后自动调用self的hideHUD方法 [self performSele ...
- 【js+jquery】通用、简单的JS 提示框
1.该插件不需要依赖 jquery,仅仅使用了原生js 2.简单.通用.可自定义修改样式.支持等待N秒消失.支持消失后跳转其他url , 功能还是比较完善的. 3.不废话,上代码: (我存放的位置在 ...
- js面向对象(三)---组件开发
一.对象的多种表现形式 1.提高对象的复用性 2.如何配置参数和默认参数 不知道该怎么描述,就直接上代码吧,下面做了2个例子,重点看整个组件的大体结构 用组件的方式做拖拽窗口,你可以狠狠的点击这里进行 ...
- JS 提示框 alert()、confirm()、prompt()的三者的区别
使用消息框 使用警告.提示和确认 可以使用警告.确认和提示消息框来获得用户的输入.这些消息框是 window 对象的接口方法.由于 window 对象位于对象层次的顶层,因此实际应用中不必使用这些消息 ...
- 简单的js提示框,仅仅用jq和css就可以
首先定义一个盒子 1 .pop { 2 position: fixed; 3 top: 20%; 4 left: 50%; 5 transform: translate(-50%); 6 width: ...
- JS添加MD5,JS提示框
http://pan.baidu.com/s/1kTmSp9t
随机推荐
- jQuery插件制作之全局函数用法实例
原文地址:http://www.jb51.net/article/67056.htm 本文实例讲述了jQuery插件制作之全局函数用法.分享给大家供大家参考.具体分析如下: 1.添加新的全局函数 所谓 ...
- SwipeRefreshLayout 和RecyclerView 使用
使用是布局 <android.support.v4.widget.SwipeRefreshLayout android:id="@id/id_swiperefreshlayout&qu ...
- Fibonacci数列的两种实现方式
斐波那契数列的形式为:1,1,2,3,5,8,13,21......从第三项开始,后面的每一项都是前面两项的和. 实现的方式有一下 两种: 一:递归方式实现 def fib(n): if n < ...
- json--处理框架
1.Android 中的Json解析工具fastjson .序列化.反序列化 2.Android Gson的使用总结 可以处理含有内部类的类,或包含集合内部类的类: 3.Android-JSONToo ...
- [UE4]更通用的接口,将UserWidget作为图标添加到小地图
将图标改成UserWidget添加到小地图,UserWidget支持动画特效,更丰富小地图的功能. 一.在小地图图标结构体中,将Flag数据类型改成UserWidget,删除ImageWidget(类 ...
- 在Docker中安装配置Oracle12c并实现数据持久化
在Docker中安装配置Oracle12c并实现数据持久化 选定镜像,并pull到系统中,一定要先配置加速,不然超级慢 eric@userver:~$ docker pull sath89/oracl ...
- JavaScript、CSS样式收集
JS集: //给from一个名字然后在JavaScript的地方就可以用form的名字来调用form表单里input元素的value属性可以得到值 var val=form_name.input_na ...
- crm 2016 tabstatechange event
1 tabstatechange事件在窗体中定义 2 问题是如果选项卡默认为折叠的.且选项卡中包含了iFrame网页. 3 在网页内容加载完成之后,点击选项卡 折叠/展开 按钮, iFrame网页没有 ...
- 文本adversarial examples
对文本对抗性样本的研究极少,近期论文归纳如下: 文本对抗三个难点: text data是离散数据,multimedia data是连续数据,样本空间不一样: 对text data的改动可能导致数据不合 ...
- boost 学习笔记 2: timer
boost 学习笔记 2: timer copy from:http://einverne.github.io/post/2015/12/boost-learning-note-2.html 1:ti ...