array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 手机端touch事件实现元素拖拽效果 2 - 爱码网

经上次的手机端拖拽事件,再次经过完善修改,加入了元素不能拖出屏幕范围功能,并做了一个小的函数接口

ps:经落雨大神指点。

代码如下:

            var touchEvent = (function(){
				 
			var oDiv = document.getElementsByTagName('div')[0],   //获取可拖动元素     
				oIpt = document.getElementsByTagName('input')[0],    	//记录拖动元素位置    
				oIpt1 = document.getElementsByTagName('input')[1];     //记录触点位置  
				
			var touchSatrtFunc,touchMoveFunc,getTouchEvent;   

			var _this = this;     

		    var opinion = {      //所需变量集
				oDiv : oDiv,
				oIpt : oIpt,
				oIpt1 : oIpt1,
				startX : "",
		    	startY : "",
		    	startPositionX : "",
		    	startPositionY : "",
		    	elemWidth : "",
		    	elemHeight : "",
		    	byWidth : "",
		    	byHeight : ""
			}

			//触摸点下事件
			touchSatrtFunc = function(e){
				e.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等  
			    var touch = e.touches[0]; //获取第一个触点  
			    var x = Number(touch.pageX); //页面触点X坐标  
			    var y = Number(touch.pageY); //页面触点Y坐标
			    //记录触点初始位置  
			    startX = x;
			    startY = y;

			    //可拖动元素距离页面顶部的距离
			    startPositionY = oDiv.offsetTop;
			    //可拖动元素距离页面左侧的距离
			    startPositionX = oDiv.offsetLeft;
			    //可拖动元素的宽度
			    elemWidth = oDiv.offsetWidth;
			    //可拖动元素的高度
			    elemHeight = oDiv.offsetHeight;
			    //网页可见区域宽
			    byWidth = document.documentElement.clientWidth ;
			    //网页可见区域高
			    byHeight = document.documentElement.clientHeight  ;
			}

			//触摸点下移动事件
			touchMoveFunc = function(e){
				e.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等
			    var touch = e.touches[0]; 	//获取第一个触点  
			    var x = Number(touch.pageX); //页面触点X坐标  
			    var y = Number(touch.pageY); //页面触点Y坐标 

			    var fnyTop = startPositionY + (y-startY),
			    	fnyLeft = startPositionX + (x-startX);

			    oIpt.value = "元素位置:" +startPositionX +":"+startPositionY;
			    oIpt1.value = "触点位置:" +x +":"+y;

			    //判断移动到边缘情况
			    if(fnyLeft <= 0){
			    	oDiv.style.left = 0;

			    	if(fnyTop <= 0){
			    		oDiv.style.top = 0;
			    	}else if(fnyTop > 0 && fnyTop < (byHeight - elemHeight) ){
			    		oDiv.style.top = fnyTop + 'px';
			    	}else if(fnyTop >= (byHeight - elemHeight) ){
			    		oDiv.style.top = byHeight - elemHeight + 'px';
			    	}
			    }else if(fnyLeft >= (byWidth - elemWidth) ){
			    	oDiv.style.left = byWidth - elemWidth + 'px';

			    	if(fnyTop <= 0){
			    		oDiv.style.top = 0;
			    	}else if(fnyTop > 0 && fnyTop < (byHeight - elemHeight) ){
			    		oDiv.style.top = fnyTop + 'px';
			    	}else if(fnyTop >= (byHeight - elemHeight) ){
			    		oDiv.style.top = byHeight - elemHeight + 'px';
			    	}
			    }else if(fnyLeft > 0 &&  fnyLeft < (byWidth - elemWidth) ){
			    	oDiv.style.left = fnyLeft + 'px';

			    	if(fnyTop <= 0){
			    		oDiv.style.top = 0;
			    	}else if(fnyTop > 0 && fnyTop < (byHeight - elemHeight) ){
			    		oDiv.style.top = fnyTop + 'px';
			    	}else if(fnyTop >= (byHeight - elemHeight) ){
			    		oDiv.style.top = byHeight - elemHeight + 'px';
			    	}
		     	}
			}

			var touchs = function(){
				oDiv.addEventListener('touchstart',touchSatrtFunc,false); 
    			oDiv.addEventListener('touchmove',touchMoveFunc,false);
			}

			return {
				getTouch:touchs,
				touchSatrtFunc : touchSatrtFunc,
				touchMoveFunc : touchMoveFunc
			}
	    })();        

  调用此方法时只需加入  touchEvent.getTouch();  即可

然而此代码还有局限性,目前需要去原js中修改所需要的拖动的元素

 

相关文章: