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 相关文章推荐
javascript语句中的CDATA标签的意义
May 09 Javascript
Javascript中call的两种用法实例
Dec 13 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
Jun 06 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
Jan 03 Javascript
jquery悬浮提示框完整实例
Jan 13 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
Mar 13 Javascript
JS动态添加选项案例分析
Oct 17 Javascript
jquery实现全选、全不选以及单选功能
Mar 23 jQuery
深入理解Vue父子组件生命周期执行顺序及钩子函数
Aug 12 Javascript
layui关闭层级、简单监听的实例
Sep 06 Javascript
微信小程序返回上一页传参并刷新过程解析
Dec 13 Javascript
jQuery列表动态增加和删除的实现方法
Nov 05 jQuery
详解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
dedecms系统常用术语汇总
2007/04/03 PHP
php中http_build_query 的一个问题
2012/03/25 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
JavaScript中的对象化编程
2008/01/16 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
2020/10/26 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
Python 自动化表单提交实例代码
2017/06/08 Python
python Pandas 读取txt表格的实例
2018/04/29 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
Tesserocr库的正确安装方式
2018/10/19 Python
Python关于excel和shp的使用在matplotlib
2019/01/03 Python
pandas数据集的端到端处理
2019/02/18 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
Python编写一个验证码图片数据标注GUI程序附源码
2019/12/09 Python
python实现随机加减法生成器
2020/02/24 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
C#和SQL Server的面试题
2016/08/12 面试题
大学毕业生通用求职信
2013/09/28 职场文书
动物学专业毕业生求职信
2013/10/11 职场文书
党员入党表决心的话
2014/03/11 职场文书
Pytorch中Softmax和LogSoftmax的使用详解
2021/06/05 Python
Python面向对象之成员相关知识总结
2021/06/24 Python
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技