`

弹出框的封装-dialog

 
阅读更多

 

 

 

	
	
var basic = {};
	
	/**
	 * 对话框内 关闭按钮调用  , 作用关闭对话框
	 */
	basic.closeDialog =  function (){
			var dialog = document.getElementById('dialog');
			var zhezhao = document.getElementById('zhezhao');
			dialog.parentNode.removeChild(dialog );
			zhezhao.parentNode.removeChild(zhezhao );
	}
	 
	/**
	 * ajax 加载的 弹出层
	 * ajax 的形式加载所需要的对话框
	 * width :弹出框的 宽度
	 * height :弹出框的 高度
	 */
	basic.tanchuCeng = function(url ,width ,height ){
		basic.showBackground();
		 $.ajax({
			   type: "POST",
			   url: url ,
			   success: function(pageHtml ){
				   //创建对话框
				   var diaObj = basic.createDialog(pageHtml ,width ,height);
				   document.body.appendChild( diaObj );
				   
				   //添加动画
				   var pos = basic.getViewData(); 
				   var h = (pos.height-height)/2+pos.scrollTop ; 
			       var dialog = document.getElementById('dialog');
			       basic.scrollDialog(dialog,  h );
			   }
			});
	 }

	/**
	 * 本页面 弹出层
	 * 对话框在页面上 
	 * width :弹出框的 宽度
	 * height :弹出框的 高度
	 */
	basic.tanchuCengLocal = function( dialogId ,width ,height ){
		basic.showBackground();
		
		//取出对话框副本的html代码 
		var diaLogHtml = $('#'+dialogId ).clone().show().htmlCode();
		 
	   //创建对话框
	   var diaObj = basic.createDialog(  diaLogHtml  ,width ,height);
	   document.body.appendChild( diaObj );
	   
	   //添加动画
	   var pos = basic.getViewData(); 
	   var h = (pos.height-height)/2+pos.scrollTop ; 
       var dialog = document.getElementById('dialog');
       basic.scrollDialog(dialog,  h );
	       
	 }
	
	/**
	 * 创建一个对话框
	 * pageHtml 是对话框的html   
	 * width 对话框的宽度  
	 * heigth 对话框的高度 这两参数决定对话框的显示位置是否正确
	 */
	basic.createDialog=  function ( pageHtml, width ,height  ){
		 var pos = basic.getViewData(); 
		 var dialogDiv = document.createElement('div');
		 dialogDiv.setAttribute('id','dialog');
		 var w = ((pos.width-width)/2  ); //40 滚动条的宽度 
		 var h = (pos.height-height)/2+pos.scrollTop ; 
		  
		 dialogDiv.style.cssText = "position: absolute;z-index:110;left:"+w+"px;top:0px;background:red";
		 dialogDiv.innerHTML = pageHtml ;
		 return dialogDiv;
	 }
	 
	 //显示背景 透明层 
	basic.showBackground= function (){
		 var pos = basic.getViewData(); 
		 var bj = document.createElement('div');
		 bj.setAttribute('id','zhezhao');
		 //alert(pos.scrollTop  );
		 bj.style.cssText="position: absolute;height:"+ (pos.scrollHeight  )+"px;width:"+pos.width+"px;z-index:100;background:#fff;left:0px;top:0px";
		 if(!+"\v1"){
			 bj.style.filter="alpha(opacity=67)";
		 }else{
			 bj.style.cssText +="background:rgba(164,173,183,.65)";		 
		 }
		 document.body.appendChild(bj);
	 }
	 
	 //得到屏幕的宽高 ,以及位置
	basic.getViewData = function (){
		  var position = {};
		  //滚动条的顶部
		  position.scrollTop = window.pageYOffset  //用于FF
	      	 || document.documentElement.scrollTop   // 有w3c说明的
	     	 || document.body.scrollTop    //w3c 为0 
	     	 || 0;
		  
		  var scrollHeight1 =  document.documentElement.scrollHeight   // 有w3c说明的
		  	 || document.body.scrollHeight    //w3c 为0 
		  	 || 0;
		  //整个页面的高度
		  position.scrollHeight = Math.max(scrollHeight1,position.scrollTop );
		  //滚动条左边位置
		  position.scrollLeft = window.pageXOffset 
		  	 || document.documentElement.scrollLeft
		  	 || document.body.scrollLeft
		  	 || 0;
		  //页面宽度
		  position.width = document.documentElement.clientWidth
		  	 || document.body.clientWidth
		  	 || window.innerWidth
		  	 || 0;
		  //页面高度
	 	  position.height = document.documentElement.clientHeight
	 	  	 || document.body.clientHeight
	 	  	 || window.innerHeight ; // 兼容 opera 
	 	  
		  return position;
	 }
	
	//对话框滚动的动画
	basic.scrollDialog= function(moveObj , maxTop){
		//moveObj.style.top = "0px" ;
		var speed = 2 ;
		var top;
		setTimeout(function(){
			//speed = speed*1.5;
			top = Math.max(parseFloat( moveObj.style.top )+ speed, maxTop);
			moveObj.style.top =  top+"px";
			if(top>maxTop){
				return ;
			}else{
				
				setTimeout(arguments.callee,10); 
			}
			
		},10);
		
	} 
	
	//扩展 jquery ,获取jquery对象对应的html  
	$.extend($.prototype, {
		htmlCode:function(){ 
			var div = $('<div>'); 
			this.appendTo(div); 
			return div.html(); 
		}
	 }); 
	 
	 
	 

 

使用

 var url = "tanchu/弹出框.shtml";

 basic.tanchuCeng(url,493,134 );

 basic.showBackground();

分享到:
评论

相关推荐

    仿 qq 弹出框效果

    - 考虑使用Web Components技术,将弹出框封装成自定义元素,方便在整个项目中复用。 通过以上步骤,我们可以创建一个具有QQ风格的弹出框,并将其嵌套在网页中。这个弹出框可以用来显示通知、提示用户输入信息,...

    jQuery弹出层插件三种简单遮罩弹出框效果

    例如,一款名为`jQuery.dialogBox`的插件,只需几行代码即可创建具有遮罩效果的弹出框,并支持自定义标题、内容、按钮等元素。 实现这些效果的具体步骤如下: 1. **HTML结构** 创建一个包含弹出框内容的元素,并...

    java的弹出框

    在这个项目中,开发者已经对`AlertDialog`和`Dialog`进行了封装,创建了多种样式的弹出框,以适应不同的UI需求。这些样式可能包括但不限于简单的信息提示、单选按钮、多选按钮、输入框等。 描述中提到的"提供各种...

    封装JQuery Dialog实现Dialog、Tip、alert和confirm

    在IT行业中,jQuery Dialog是一种广泛使用的插件,用于创建弹出式对话框,提示框,警告框和确认框。这个“封装JQuery Dialog实现Dialog、Tip、alert和confirm”的主题聚焦于如何通过自定义代码来封装jQuery Dialog的...

    vue-dialog的弹出层组件

    本文将详细介绍如何创建一个名为 "vue-dialog" 的弹出层组件,并讲解如何将其发布到 npm 以便在其他项目中使用。 首先,我们关注的是“多层弹出时,只有一个背景层”的实现。这通常通过使用两个组件来完成:一个...

    bootstrap3 dialog 更强大、更灵活的模态框

    4.ajax加载远程页面弹出框 5.ajax加载自定义页面弹出框 三、使用方法 bootstrap3-dialog的demo中已有很详细的介绍,但对于初学者来说是个麻烦,还要一个一个方法和注释去看。但我对这些常用的方法进行了新的

    Android代码-Dialog

    空祖家的对话框2.0拥有提供最简单的调用方式以实现消息框、选择框、输入框、等待提示、警告提示、完成提示、错误提示等弹出样式。以下是目前包含的所有对话框样式预览图: 试用版可以前往 http://fir.im/kDialog ...

    弹出层封装_1

    在“弹出层封装_1”中,CSS3可能被用来实现弹出层的样式设计,包括但不限于边框圆角、阴影效果、背景渐变、多角度提示(可能通过变换属性如`transform: rotate()`实现)以及过渡动画,使弹出层更加动态和美观。...

    Android 一款安卓弹框封装框架

    "Android一款安卓弹框封装框架"是一个专门为Android平台设计的弹框组件库,旨在帮助开发者更高效、灵活地创建各种类型的弹框,提升应用的界面交互体验。 这个框架的主要目标是将弹框的实现细节进行抽象和封装,让...

    android弹出框和加载等待

    在你提到的`TDialog-master`压缩包中,可能包含了一个名为"TDialog"的库项目,它可能是开发者为了方便快速实现自定义弹出框和加载等待效果而封装的一个工具类库。通过导入这个库,开发者可以简化相关功能的代码实现...

    原生js Dialog对话框插件制作19种对话框弹出层拖动

    通过以上这些知识点的实践,你可以构建出一个功能齐全且具有拖动功能的原生JavaScript Dialog对话框插件,满足各种场景下的用户交互需求。同时,这样的项目也将有助于提升你的JavaScript编程技能和对Web前端开发的...

    仿IOS弹出框

    将这个仿iOS弹出框封装成一个可复用的库,便于在多个项目中快速集成。压缩包中的"library"可能包含了实现这一功能的源代码、资源文件以及相关的构建配置。 10. **测试与调试**: 在不同设备和Android版本上进行...

    根据element+vue 自定义dialog+drawer组件 弹窗+抽屉 无覆盖 + 可拖拽.7z

    这样可以保持用户对背景内容的感知,同时突出弹出窗口的重要性。 可拖拽功能则需要用到JavaScript或者Vue中的事件监听和计算位置的逻辑。开发者需要监听鼠标移动事件,动态更新组件的位置,确保它始终跟随用户的...

    Dlg 弹出框

    在C++中,Dlg弹出框主要基于对话框(Dialog)类实现,通常使用MFC(Microsoft Foundation Classes)库。MFC是微软提供的一套C++类库,用于简化Windows应用程序开发,它封装了Windows API,提供了对话框、视图、框架...

    仿QQ底部弹出框

    2. **自定义Dialog**:仿QQ底部弹出框是Dialog的一种自定义实现。在Android中,可以通过继承`android.app.Dialog`或`androidx.appcompat.app.AlertDialog`类,重写`onCreateView()`方法来创建自己的布局,并设置所需...

    Android从下到上弹出透明弹出框

    在Android开发中,创建一个从下到上弹出的透明弹出框是一项常见的需求,它通常用于显示一些临时的通知或用户交互。这个过程涉及到多个关键知识点,包括自定义视图、动画效果、触摸事件处理以及布局设计。接下来,...

    自定义Dialog封装.rar

    4. **弹出框内容显示动态传入**: 为了使Dialog内容能够根据需求动态变化,我们可以在Dialog的构造函数中添加参数,接收需要显示的数据。然后在`onCreate()`方法中,使用这些数据动态设置各个View的文本、图片等...

    jQuery弹出框代码封装DialogHelper

    总结来说,DialogHelper作为一个简洁的jQuery弹出框封装类,展示了如何通过面向对象的方式优化和组织代码,提高开发效率。通过理解并运用这种思路,开发者可以更好地应对各种前端交互需求,构建更加灵活和健壮的前端...

    安卓两种底部弹出窗dialog实现方式

    在实际开发中,`KxBottomDialog`可能是实现这两种底部弹出窗的一个库或框架,它可能封装了上述提到的实现方式,提供了更方便的API供开发者使用。通过集成这样的库,可以快速地在应用中添加底部弹出窗功能,减少代码...

Global site tag (gtag.js) - Google Analytics