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 相关文章推荐
jquery下利用jsonp跨域访问实现方法
Jul 29 Javascript
js中各浏览器中鼠标按键值的差异
Apr 07 Javascript
深入探讨javascript中的数据类型
Mar 04 Javascript
JS+CSS实现的拖动分页效果实例
May 11 Javascript
jquery插件ajaxupload实现文件上传操作
Dec 09 Javascript
JS自动生成动态HTML验证码页面
Jun 14 Javascript
微信小程序自定义组件
Aug 16 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
Jan 09 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
Feb 22 Javascript
Layui给switch添加响应事件的例子
Sep 03 Javascript
vue element 关闭当前tab 跳转到上一路由操作
Jul 22 Javascript
微信小程序入门之绘制时钟
Oct 22 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
jQuery timers计时器简单应用说明
2010/10/28 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
JavaScript获取table中某一列的值的方法
2014/05/06 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
javascript初学者常用技巧
2014/09/02 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
Bootstrap3.0学习教程之JS折叠插件
2016/05/27 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
详解JavaScript中分解数字的三种方法
2021/01/05 Javascript
python学习入门细节知识点
2018/03/29 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
python常用函数与用法示例
2019/07/02 Python
对Django url的几种使用方式详解
2019/08/06 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
CSS3 边框效果
2019/11/04 HTML / CSS
Booking.com荷兰:全球酒店网上预订
2017/08/22 全球购物
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
10条PHP编程习惯
2014/05/26 面试题
政法大学毕业生自荐信范文
2014/01/01 职场文书
关于环保的演讲稿
2014/05/10 职场文书
社区平安建设汇报材料
2014/08/14 职场文书
2014年学校国庆主题活动方案
2014/09/16 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
年度考核登记表个人总结
2015/03/06 职场文书
学习委员竞选稿
2015/11/20 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
2022年显卡天梯图(6月更新)
2022/06/17 数码科技