JavaScript实现弹窗效果代码分析


Posted in Javascript onMarch 09, 2017

效果图:

JavaScript实现弹窗效果代码分析

话不多说,请看代码:

每个弹窗的标识
var x =0;
var idzt = new Array();
var Window = function(config){
 ID不重复
 idzt[x] = "zhuti"+x; 弹窗ID
 初始化,接收参数
 this.config = {
  width : config.width || 300, 宽度
  height : config.height || 200, 高度
  buttons : config.buttons || '', 默认无按钮
  title : config.title || '标题', 标题
  content : config.content || '内容', 内容
  isMask : config.isMask == false?false:config.isMask || true, 是否遮罩
  isDrag : config.isDrag == false?false:config.isDrag || true, 是否移动
  };
 加载弹出窗口
 var w = ($(window).width()-this.config.width)/2;
 var h = ($(window).height()-this.config.height)/2;
 var nr = "<div class='zhuti' id='"+idzt[x]+"' bs='"+x+"' style='width:"+this.config.width+"px; height:"+this.config.height+"px; left:"+w+"px; top:"+h+"px;'></div>";
 $("body").append(nr);
 加载弹窗标题
 var content ="<div id='title"+x+"' class='title' bs='"+x+"'>"+this.config.title+"<div id='close"+x+"' class='close' bs='"+x+"'>×</div></div>";
 加载弹窗内容
 var nrh = this.config.height - 75;
 content = content+"<div id='content"+x+"' bs='"+x+"' class='content' style='width:100%; height:"+nrh+"px;'>"+this.config.content+"</div>";
 加载按钮
 content = content+"<div id='btnx"+x+"' bs='"+x+"' class='btnx'>"+this.config.buttons+"</div>";
 将标题、内容及按钮添加进窗口
 $('#'+idzt[x]).html(content);
 创建遮罩层
 if(this.config.isMask)
 {
  var zz = "<div id='zz'></div>";
  $("body").append(zz);
  $("#zz").css('display','block');
 }
 最大最小限制,以免移动到页面外
 var maxX = $(window).width()-this.config.width;
 var maxY = $(window).height()-this.config.height;
 var minX = 0,
  minY = 0;
 窗口移动
 if(this.config.isDrag)
 {
  鼠标移动弹出窗
  $(".title").bind("mousedown",function(e){
   var n = $(this).attr("bs"); 取标识
   使选中的到最上层
   $(".zhuti").css("z-index",3);
   $('#'+idzt[n]).css("z-index",4);
   取初始坐标
   var endX = 0, 移动后X坐标
    endY = 0, 移动后Y坐标
    startX = parseInt($('#'+idzt[n]).css("left")), 弹出层的初始X坐标
    startY = parseInt($('#'+idzt[n]).css("top")), 弹出层的初始Y坐标
    downX = e.clientX, 鼠标按下时,鼠标的X坐标
    downY = e.clientY; 鼠标按下时,鼠标的Y坐标
   绑定鼠标移动事件
   $("body").bind("mousemove",function(es){
    endX = es.clientX - downX + startX; X坐标移动
    endY = es.clientY - downY + startY; Y坐标移动
    最大最小限制
    if(endX > maxX)
    {
     endX = maxX;
    } else if(endX < 0)
    {
     endX = 0;
    }
    if(endY > maxY)
    {
     endY = maxY;
    } else if(endY < 0)
    {
     endY = 0;
    }
    $('#'+idzt[n]).css("top",endY+"px");
    $('#'+idzt[n]).css("left",endX+"px");
    window.getSelection ? window.getSelection().removeAllRanges():document.selection.empty(); //取消选中文本
    });
   });
  鼠标按键抬起,释放移动事件
  $("body").bind("mouseup",function(){
   $("body").unbind("mousemove");
   });
 }
 关闭窗口
 $(".close").click(function(){
   var m = this.getAttribute("bs"); 找标识
   $('#'+idzt[m]).remove(); 移除弹窗
   $('#zz').remove(); 移除遮罩 

  })
  x++; 标识增加
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
Jul 25 Javascript
js 代码优化点滴记录
Feb 19 Javascript
JS实现动态添加DOM节点和事件的方法示例
Apr 28 Javascript
node.js操作mysql简单实例
May 25 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
Oct 31 Javascript
three.js中3D视野的缩放实现代码
Nov 16 Javascript
微信小程序按钮去除边框线分享页面功能
Aug 27 Javascript
简单通过settimeout看javascript的运行机制
May 10 Javascript
React中使用外部样式的3种方式(小结)
May 28 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
Nov 01 Javascript
如何在wxml中直接写js代码(wxs)
Nov 14 Javascript
JavaScript实现简单进度条效果
Mar 25 Javascript
详解Vue方法与事件
Mar 09 #Javascript
Vue实现自带的过滤器实例
Mar 09 #Javascript
Vue中fragment.js使用方法详解
Mar 09 #Javascript
JavaScript编写一个贪吃蛇游戏
Mar 09 #Javascript
canvas压缩图片转换成base64格式输出文件流
Mar 09 #Javascript
Bootstrap笔记之缩略图、警告框实例详解
Mar 09 #Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
Mar 09 #Javascript
You might like
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
php对mongodb的扩展(初出茅庐)
2012/11/11 PHP
深入PHP异步执行的详解
2013/06/03 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
php多线程并发实现方法
2016/09/30 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
Prototype 工具函数 学习
2009/07/23 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
js实现随机点名小功能
2017/08/17 Javascript
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
用Python中的字典来处理索引统计的方法
2015/05/05 Python
python连接MySQL数据库实例分析
2015/05/12 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
使用Python进行目录的对比方法
2018/11/01 Python
如何基于Python爬虫爬取美团酒店信息
2020/11/03 Python
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
RetroStage德国:复古服装
2019/02/03 全球购物
Internet主要有哪些网络群组成
2015/12/24 面试题
生日寿宴答谢词
2014/01/19 职场文书
论文指导教师评语
2014/04/28 职场文书
师范毕业生求职信
2014/07/11 职场文书
给医院的感谢信
2015/01/21 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
2019求职信大礼包
2019/05/15 职场文书