基于JavaScript实现弹出框效果


Posted in Javascript onFebruary 19, 2016

弹出框在网站页面中是必不可少的一部分,今天借助三水点靠木平台给大家分享使用js实现简单的弹出框效果,本文写不好,还请见谅!

基于JavaScript实现弹出框效果 

首先我们来分析弹出框的部件.简单弹出框分为头,内容,尾部. 头部中有标题和关闭按钮,内容就可以图文,媒体,iframe,flash等等,尾部就是按钮(确认,取消等等),这个例子尾部我就不加入按钮了,这个例子主要是实现弹出框的核心部分.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
body, div{
padding: 0;
margin: 0;
}
html, body {
width: 100%;
height: 100%;
}
a {
text-decoration: none;
}
.pop {
border-radius: 5px;
background-color: #fff;
border: #eee 1px solid;
position: absolute;
width: 350px;
left: 35%;
top: 25%;
}
.pop-title {
background-image: linear-gradient(#eee,#efefef);
position: relative;
cursor: pointer;
}
.pop-title h3,.pop-title a{
display: inline-block;
}
.pop-title h3{
font-size: 14px;
margin: 0;
padding: 5px;
}
.pop-title a {
position: absolute;
top: 5px;
right: 5px;
}
.pop-content {
padding: 10px;
}
</style>
</head>
<body>
<div>
<div>
<h3>消息</h3>
<a href="javascript:;">X</a>
</div>
<div>
弹出框已显示
</div>
<div></div>
</div>
</body>
</html>

弹出框,在头部按下的时候,开启移动模式,在头部松开的时候就禁止移动.其实就这么一句的意思. 当然逻辑也是比较简单的.

这里我们就可能想到了几个变量,移动的X,Y坐标,移动的开关和禁止. 然后就是给title加入onmousedown 和 onmouseup事件.

onmousedown事件中主要是开启移动.

onmouseup 事件中逻辑主要是关闭移动,禁止移动弹出框.

接着需要移动,而移动需要时在某个范围内移动.这里我们是在body里面移动. 所以给body加入onmousemove事件. 这里面做的事情就是移动弹出框的位置处理.

在这三个事件中主要是配合了CSS中的position属性和JS中的Event事件中的属性的坐标.

var pop = document.getElementsByClassName("pop")[0];
var pop_title = pop.getElementsByClassName("pop-title")[0];
var bd = document.body;
var x = 0;
var y = 0;
var ismove = false; // 是否开启移动
var downx = 30;
var downy = 30;
pop_title.onmousedown = function (e) {
x = e.pageX;
y = e.pageY;
downx = e.offsetX;
downy = e.offsetY;
ismove = true;
}
bd.onmousemove = function (e) {
if (ismove) {
var cx = e.pageX - downx;
var cy = e.pageY - downy;
pop.style.left = cx + "px";
pop.style.top = cy + "px";
x = e.x;
y = e.y;
}
e.preventDefault();
}
pop_title.onmouseup = function (e) {
x = e.pageX;
y = e.pageY;
ismove = false;
console.log("移动完成")
}

移动弹出框完成后,我们给关闭按钮加入关闭事件.

//关闭 
var pop_close = pop.getElementsByClassName("pop-close")[0];
pop_close.onclick = function () {
pop.parentNode.removeChild(pop);
}

好了,简单的弹出框就实现了.同样代码自己可以优化封装,加入其它的功能.兼容性问题可能需要自己去处理一下(IE9以前的版本).

基于JavaScript实现弹出框效果 

js实现弹出框效果就给大家介绍这么多,希望对大家有所帮助!

Javascript 相关文章推荐
js 单击式的下拉菜单效果实例
Aug 13 Javascript
JavaScript中奇葩的假值示例应用
Mar 11 Javascript
简介AngularJS的HTML DOM支持情况
Jun 17 Javascript
jquery实现ajax加载超时提示的方法
Jul 23 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
Aug 24 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
Jul 30 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
Oct 16 Javascript
vue拖拽组件使用方法详解
Dec 01 Javascript
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
微信小程序获取用户绑定手机号方法示例
Jul 21 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
Nov 26 Javascript
解决vue-cli输入命令vue ui没效果的问题
Nov 17 Javascript
jQuery on()绑定动态元素出现的问题小结
Feb 19 #Javascript
学习javascript文件加载优化
Feb 19 #Javascript
初识angular框架后的所思所想
Feb 19 #Javascript
复杂的javascript窗口分帧解析
Feb 19 #Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
Feb 19 #Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
Feb 19 #Javascript
谈一谈javascript中继承的多种方式
Feb 19 #Javascript
You might like
随机头像PHP版
2006/10/09 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
JavaScript 学习笔记(六)
2009/12/31 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
js仿微博实现统计字符和本地存储功能
2015/12/22 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
JavaScript Ajax编程 应用篇
2016/07/02 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
js实现AI五子棋人机大战
2020/05/28 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python删除列表内容
2015/08/04 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
简单了解Python变量作用域正确使用方法
2020/06/12 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
HTML5学习笔记之History API
2015/02/26 HTML / CSS
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
幼儿如何来做好自我评价
2013/11/05 职场文书
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
《满井游记》教学反思
2014/02/26 职场文书
借款协议书
2014/04/12 职场文书
县委务虚会发言材料
2014/10/20 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
运动员入场前导词
2015/07/20 职场文书