文档章节

JavaScript实现鼠标拖拽效果

IceRainYWC
 IceRainYWC
发布于 2015/11/24 15:30
字数 786
阅读 21
收藏 0
点赞 0
评论 0
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
<html>
<head>
    <title> 弹出层 </title>
    <style type="text/css">
        #container div {
            margin-top: 6px;
        }
        #select_city h3 {
            float: left;
        }
        #main_city, #all_province {
            clear: both;
        }
        #main_city div, #all_province div {
            width: 588px;
            clear: left;
        }
        #main_city h4, #all_province h4 {
            float: left;
            display: inline;
            font-size: 16px;
        }
        #main_city div span, #all_province div span {
            margin: 0 9px;
            cursor: pointer;
            font-size: 14px;
        }
        #float_lay {
            width: 220px;
            height: 122px;
            border: 1px #787878 solid;
            position: absolute;
            background: #fff;
            z-index: 999;
            display: none;
        }
    </style>
    <script type="text/javascript">
        //弹出层
        function openLayer(objId, conId) {
            var arrayPageSize = getPageSize();//调用getPageSize()函数
            var arrayPageScroll = getPageScroll();//调用getPageScroll()函数
            if (!document.getElementById("popupAddr")) {
                //创建弹出内容层
                var popupDiv = document.createElement("div");
                //给这个元素设置属性与样式
                popupDiv.setAttribute("id", "popupAddr")
                popupDiv.style.position = "absolute";
                popupDiv.style.border = "1px solid #ccc";
                popupDiv.style.background = "#fff";
                popupDiv.style.zIndex = 99;
                //创建弹出背景层
                var bodyBack = document.createElement("div");
                bodyBack.setAttribute("id", "bodybg")
                bodyBack.style.position = "absolute";
                bodyBack.style.width = "100%";
                bodyBack.style.height = document.documentElement.scrollHeight + "px";
                bodyBack.style.zIndex = 98;
                bodyBack.style.top = 0;
                bodyBack.style.left = 0;
                bodyBack.style.filter = "alpha(opacity=50)";
                bodyBack.style.opacity = 0.5;
                bodyBack.style.background = "#ddf";
                //实现弹出(插入到目标元素之后)
                var mybody = document.getElementById(objId);
                insertAfter(popupDiv, mybody);//执行函数insertAfter()
                insertAfter(bodyBack, mybody);//执行函数insertAfter()
            }
            //显示背景层
            document.getElementById("bodybg").style.display = "";
            //显示内容层
            var popObj = document.getElementById("popupAddr")
            popObj.innerHTML = document.getElementById(conId).innerHTML;
            popObj.style.display = "";
            //让弹出层在页面中垂直左右居中(统一)
            // popObj.style.width  = "600px";
            // popObj.style.height = "400px";
            // popObj.style.top  = arrayPageScroll[1] + (arrayPageSize[3] - 35 - 400) / 2 + 'px';
            // popObj.style.left = (arrayPageSize[0] - 20 - 600) / 2 + 'px';
            //让弹出层在页面中垂直左右居中(个性)
            var arrayConSize = getConSize(conId);
            popObj.style.top = arrayPageScroll[1] + (arrayPageSize[3] - arrayConSize[1]) / 2 - 50 + 'px';
            popObj.style.left = (arrayPageSize[0] - arrayConSize[0]) / 2 - 30 + 'px';
        }
        //获取内容层内容原始尺寸
        function getConSize(conId) {
            var conObj = document.getElementById(conId)
            conObj.style.position = "absolute";
            conObj.style.left = -1000 + "px";
            conObj.style.display = "";
            var arrayConSize = [conObj.offsetWidth, conObj.offsetHeight]
            conObj.style.display = "none";
            return arrayConSize;
        }
        function insertAfter(newElement, targetElement) {//插入
            var parent = targetElement.parentNode;
            if (parent.lastChild == targetElement) {
                parent.appendChild(newElement);
            } else {
                parent.insertBefore(newElement, targetElement.nextSibling);
            }
        }
        //获取滚动条的高度
        function getPageScroll() {
            var yScroll;
            if (self.pageYOffset) {
                yScroll = self.pageYOffset;
            } else if (document.documentElement && document.documentElement.scrollTop) {
                yScroll = document.documentElement.scrollTop;
            } else if (document.body) {
                yScroll = document.body.scrollTop;
            }
            arrayPageScroll = new Array('', yScroll)
            return arrayPageScroll;
        }
        //获取页面实际大小
        function getPageSize() {
            var xScroll, yScroll;
            if (window.innerHeight && window.scrollMaxY) {
                xScroll = document.body.scrollWidth;
                yScroll = window.innerHeight + window.scrollMaxY;
            } else if (document.body.scrollHeight > document.body.offsetHeight) {
                sScroll = document.body.scrollWidth;
                yScroll = document.body.scrollHeight;
            } else {
                xScroll = document.body.offsetWidth;
                yScroll = document.body.offsetHeight;
            }
            var windowWidth, windowHeight;
            if (self.innerHeight) {
                windowWidth = self.innerWidth;
                windowHeight = self.innerHeight;
            } else if (document.documentElement && document.documentElement.clientHeight) {
                windowWidth = document.documentElement.clientWidth;
                windowHeight = document.documentElement.clientHeight;
            } else if (document.body) {
                windowWidth = document.body.clientWidth;
                windowHeight = document.body.clientHeight;
            }
            var pageWidth, pageHeight
            if (yScroll < windowHeight) {
                pageHeight = windowHeight;
            } else {
                pageHeight = yScroll;
            }
            if (xScroll < windowWidth) {
                pageWidth = windowWidth;
            } else {
                pageWidth = xScroll;
            }
            arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight)
            return arrayPageSize;
        }
        //关闭弹出层
        function closeLayer() {
            document.getElementById("popupAddr").style.display = "none";
            document.getElementById("bodybg").style.display = "none";
            return false;
        }
    </script>
    <script type="text/javascript">
        //对“拖动点”定义:onMousedown="StartDrag(this)" onMouseup="StopDrag(this)" onMousemove="Drag(this)"即可
        var move = false, oldcolor, _X, _Y;
        function StartDrag(obj) {  //定义准备拖拽的函数
            obj.setCapture(); //对当前对象的鼠标动作进行跟踪
            oldcolor = obj.style.backgroundColor;
            obj.style.background = "#999";
            obj.style.cursor = "move";
            move = true;
            //获取鼠标相对内容层坐标
            var parentwin = document.getElementById("popupAddr");
            _X = parentwin.offsetLeft - event.clientX;
            _Y = parentwin.offsetTop - event.clientY;
        }
        function Drag(obj) { //定义拖拽函数
            if (move) {
                var parentwin = document.getElementById("popupAddr");
                parentwin.style.left = event.clientX + _X + "px";
                parentwin.style.top = event.clientY + _Y + "px";
            }
        }
        function StopDrag(obj) {   //定义停止拖拽函数
            obj.style.cursor = "default";
            obj.style.background = oldcolor;
            obj.releaseCapture(); //停止对当前对象的鼠标跟踪
            move = false;
        }
    </script>
</head>
<body>
<input name="Input" id="openBtn" value="可拖动层" type="button" onclick="openLayer('openBtn','contentContainer')"/>
<div id="contentContainer" style="display:none">
    <div id="tab3" style="width:360px;height:200px;background:#fee;">
        <div id="tabtop3">
            <div id="tabtop-L3" style="cursor:default;background:#DBDEDE" onMousedown="StartDrag(this);"
                 onMouseup="StopDrag(this);" onMousemove="Drag(this);">
                <center><strong style="color:red;font-size:20px">填写内容</strong></center>
            </div>
        </div>
        <div id="tabcontent3" style="padding:8px">
            <center><br/><br/>
                内容:<textarea name='_content' id='_content' cols='20' rows='10'
                             style='width:200px;height:70px;border:1px solid #CDCDCD;color:blue;'
                             onpropertychange='if(this.value.length>100){this.value=this.value.slice(0,100)}'></textarea>
            </center>
        </div>
        <div id="tabtop-R" style="bottom:5px;">
            <center><input type="button" value="确定" onclick="alert(document.getElementById('_content').value);"/>
                <input type="button" value="取消" onclick="closeLayer();"/></center>
        </div>
    </div>
</div>
</body>
</html>

© 著作权归作者所有

共有 人打赏支持
IceRainYWC
粉丝 13
博文 106
码字总数 47690
作品 0
石家庄
程序员
cxwithyxy/Axure_Js_Inject

AxureJsInject v1.0 可以在产品原型(RP)中加入你想要的js代码,这些js代码会用浏览器浏览产品原型的时候执行 支持 目前支持 Axure rp 8.1.0.3372 其他版本有待测试 开始 在元件库中导入 Ax...

陈轩大魔王
04/15
0
0
67 个节省开发者时间的实用工具、库与资源(前端向)

在这篇文章中,我不会与大家谈论大型的前端框架,如 React、Angular、Vue 等,也没有涉及那些流行的代码编辑器,如 Atom、VS Code、Sublime,我只想与大家分享一个有助于提升开发人员效率的工...

张孝国
06/26
0
0
Stream上传插件(文件夹上传支持)

HTML5文件夹上传,目前支持的浏览器有Chrome21+, Opera15+。是实现文件夹上传的功能时,主要参考两段JS文件,地址:http://protonet.github.io/plupload/src/javascript/plupload.html5.js(...

java_speed
2014/01/03
0
0
和我一起学 Selenium WebDriver(7)——基础篇

昨天我们已经可以轻松移动鼠标了,距离拖拽只有一步之遥。 其实这就是一层窗户纸,捅破它就搞定了,之前做的操作可以说都是单步操作:移动鼠标、点击页面元素、弹出窗口等等;而拖拽操作就不...

zTree
2012/12/20
0
0
基于HTML5的Drag and Drop生成图片Base64信息

HTML5的Drag and Drop是很不错的功能,网上使用例子较多如 http://html5demos.com/drag ,但这些例子大部分没实际用途,本文将搞个有点使用价值的例子,通过Drag and Drop生成图片的Base64的...

xhload3d
2014/12/19
0
0
浏览器兼容的实现table中通过拖拽改变列宽的最佳实践

在企业级应用中,表格是非常常见的展现方式,这时当列数据较长时,一种比较自然,体验也较好的处理方式就是通过拖拽改变列宽,这个功能在一些重量级JS组件库中都有提供,实现原理各有不同,但...

李玉珏
2015/04/01
0
1
XX网防盗链,恶意抓取解决方案.xlsx

解决方案 危害性 预防效果 参考代码 防止被frame 使用JavaScript屏蔽 较小 好 if(self!=top){top.location=self.location;} 防止简单复制 使用JavaScript屏蔽右键,复制,拖拽 小 简单,不能...

晨曦之光
2012/03/09
0
0
Google HTML5训练营:图片旋转墙

六月末,第一次去参加Google的HTML5训练营,估计其他同学多少都接触过。从下午一点到晚上10点,将近9个小时的时间里,首先由杜欢、寒蕊、胡坤做了一些技术上的分享,我对Google工程师寒蕊MM的...

冯尚实
2011/07/15
0
0
Google chrome 浏览器试用后简单的比较

转自http://tryonmind.javaeye.com/blog/235954 Google 的浏览器面世了,下载下来用了一下,界面简洁明快,地址栏又可以当搜索栏用倒是省了不少事。直接点击小五星添加标签也方便,新打开的标...

晨曦之光
2012/03/09
0
0
javascript 使用btoa和atob来进行Base64转码和解码

javascript原生的api本来就支持,Base64,但是由于之前的javascript局限性,导致Base64基本中看不中用。当前html5标准正式化之际,Base64将有较大的转型空间,对于Html5 Api中出现的如FileReade...

IamOkay
2014/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

崛起于Springboot2.X之开发拦截器(21)

序言:几乎所有项目都需要拦截器,所以小伙伴们必须要掌握这门技术哦,不然只会mybaits增删改查那是实习生干的活呀。 1、创建拦截器类,implements HandlerInterceptor public class MyInce...

木九天
16分钟前
1
0
(转)SQL语句的执行顺序

(7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_type> JOIN <right_table> (2) ON <join_condition> (4) WHERE <where_condition> (5) GROUP BY <group_by_list> (......

Avner
25分钟前
0
0
1.14 救援模式

确保开机启动时连接镜像文件,如果是真机服务器,就需要:U盘或光盘镜像启动进入BIOS 不同主板进入bios按键不同,一般是F12或Esc 光标:移动到Boot(开机启动项) 减号移动:光标选中行,按-...

小丑鱼00
32分钟前
0
0
ES11-全文检索

高级别全文检索通常用于在全文本字段(如电子邮件正文)上运行全文检索。 他们了解如何分析被查询的字段,并在执行之前将每个字段的分析器(或search_analyzer)应用于查询字符串。 1.term查...

贾峰uk
36分钟前
0
0
java 复制对象有哪些方式

java 复制对象有哪些方式 Apache的 Common beanutils库 org.apache.commons.beanutils.BeanUtils.copyProperties(dest,origin); Springframework 的BeanUtil 依赖: <dependency> ......

黄威
51分钟前
2
0
jstack的简单使用

公司测试反应, 一个java应用的机器, 即使不做交易, cpu始终是30%多, 于是想到了jstack, 实践步骤记录一下: 1, 找出java应用的进程号 ps -ef|grep 应用名|grep -v grep 2, 找出pid下的cpu占用...

零二一七
58分钟前
1
0
导入CSV文件就行数据整理分析

#-*-coding:utf-8-*-import csv,os,re,mathlocalPath=input("请输入所有群文件的根目录:") #所有QQ群文件的物理根目录路径def info(): info_dic=[] dirList=os.listdi...

Kefy
今天
5
0
CoreText进阶(六)-内容大小计算和自动布局

CoreText进阶(六)-内容大小计算和自动布局 其它文章: CoreText 入门(一)-文本绘制 CoreText入门(二)-绘制图片 CoreText进阶(三)-事件处理 CoreText进阶(四)-文字行数限制和显示更...

aron1992
今天
1
0
一个Unity高人的博客,涉猎范围很广,深度也很深。

https://blog.csdn.net/ecidevilin/article/list/

爽歪歪ES
今天
0
0
Spring Cloud Config-Git后端

EnvironmentRepository的默认实现使用Git后端,这对于管理升级和物理环境以及审核更改非常方便。要更改存储库的位置,可以在Config Server中设置“spring.cloud.config.server.git.uri”配置...

itcloud
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部