基于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 相关文章推荐
Jquery插件写法笔记整理
Sep 06 Javascript
自己写了一个展开和收起的多更能型的js效果
Mar 05 Javascript
使用javascipt---实现二分查找法
Apr 10 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
Jul 28 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
Jun 12 Javascript
JS实现列表的响应式排版(推荐)
Sep 01 Javascript
js判断手机系统是android还是ios
Mar 07 Javascript
详解如何配置vue-cli3.0的vue.config.js
Aug 23 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
Dec 05 Javascript
小程序绑定用户方案优化小结
May 15 Javascript
Vue.js路由实现选项卡简单实例
Jul 24 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
Apr 14 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 strtok()函数的优点分析
2010/03/02 PHP
TMDPHP 模板引擎使用教程
2012/03/13 PHP
php中hashtable实现示例分享
2014/02/13 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
jquery入门必备的基本认识及实例(整理)
2013/06/24 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
理解AngularJs指令
2015/12/10 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
使用 Python 实现文件递归遍历的三种方式
2018/07/18 Python
python模块导入的方法
2019/10/24 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
Python实现扫码工具的示例代码
2020/10/09 Python
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
行政助理的职责
2013/11/14 职场文书
幼儿园实习自我鉴定
2013/12/15 职场文书
健康教育评估方案
2014/05/25 职场文书
读《教育心理学》心得体会
2016/01/22 职场文书
Redis高级数据类型Hyperloglog、Bitmap的使用
2021/05/24 Redis
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js
MySQL深分页问题解决思路
2022/12/24 MySQL