D3拖动效果

Posted 个子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了D3拖动效果相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="file:///G|/1/js/d3.js" type="text/javascript" charset="utf-8"></script>
		<style>
			* {
				margin: 0px;
				padding: 0px;
			}
			
			body {
				background: rgb(0, 18, 22);
			}
			
			#header {
				color: rgb(21, 172, 216);
				width: 100%;
				height: 50px;
			}
			
			#main {
				position: absolute;
				height: 350px;
				width: 65px;
				color: rgb(21, 172, 216);
				font-family: "微软雅黑";
			}
			
			button {
				background: rgb(163, 144, 15);
				border: none;
				border-radius: 5px;
				width: 100px;
				height: 30px;
			}
			
			.color {
				background: rgb(9, 84, 106);
				color: black;
				border-radius: 5px 0px 0px 5px;
			}
			
			.color:hover {
				background: rgb(21, 172, 216);
				color: black;
			}
			
			#main,
			#shuxing {
				display: inline;
				float: left;
			}
			
			#shuxing {
				background: rgb(9, 84, 106);
				position: absolute;
				border: 1px solid white;
				width: 80%;
				height: 350px;
				left: 65px;
				color: black;
			}
			
			#mid {
				position: absolute;
				width: 100%;
				height: 50px;
				color: rgb(21, 172, 216);
				top: 410px;
			}
			
			#shuju {
				position: absolute;
				top: 460px;
				width: 100%;
				color: rgb(21, 172, 216);
			}
			
			#im,
			#tab {
				display: inline;
				float: left;
			}
			
			th {
				border: 1px solid yellow;
				height: 38px;
				width: 110px;
			}
			
			.tablediv {
				height: 100%;
				width: 100%;
			}
			
			.inputsty {
				height: 100%;
				border: none;
				width: 100%;
				background: rgb(0, 18, 22);
				color: rgb(21, 172, 216);
				text-align: center;
			}
			
			td {
				height: 38px;
				border: 1px solid rgb(21, 172, 216);
				width: 110px;
				background: rgb(0, 18, 22);
				color: rgb(21, 172, 216);
				text-align: center;
			}
			.spansty{
				margin-top: 10px;
				margin-left: 10px;
				display: block;
				display: inline; 
				float: left; 
				width: 100px; 
				height: 40px; 
				background: url(file:///G|/1/img/spanbg1.png); 
				text-align: center;
			}
		</style>
	</head>

	<body>
		<div id="header">
			<h1>结构定义</h1>
		</div>
		<div>

			<div id="main">
				<a><span class="color">人物属性</span></a><br /><br />
				<a><span class="color">虚拟属性</span></a><br /><br />
				<a><span class="color">社会属性</span></a>

			</div>
			<div id="shuxing">
				<span draggable="true" class="spansty">姓名<br/>name</span>
				<span draggable="true" class="spansty">年龄<br/>age</span>
				<span draggable="true" class="spansty">性别<br/>sex</span>
			</div>
		</div>
		<div id="mid">
			<span style="font-weight: bold;font-size: 2em;">样本数据</span> <span style="color: red;"></span>
		</div>
		<div id="shuju">
			<div id="im">
				<img src="file:///G|/1/img/ziduan.png" style="margin-left: 0px; margin-top: 10px;" /><br />
				<img src="file:///G|/1/img/ziduanname.png" style="margin-left: 0px; margin-top: 10px;" /><br />
				<img src="file:///G|/1/img/yangben.png" style="margin-left: -4px; margin-top: 10px;" />
			</div>
			<div id="tab">
				<table border="0px ">
					<tr>
						<th>
							<input class="inputsty" type="text" value="" />
						</th>
						<th>
							<input class="inputsty" type="text" value="" />
						</th>
						<th>
							<input class="inputsty" type="text" value="" />
						</th>
						<th>
							<input class="inputsty" type="text" value="" />
						</th>
						<th>
							<input class="inputsty" type="text" value="" />
						</th>
						<th>
							<input class="inputsty" type="text" value="" />
						</th>
						<th>
							<input class="inputsty" type="text" value="" />
						</th>
						<th>
							<input class="inputsty" type="text" value="" />
						</th>
					</tr>
					<tr>
						<td><input class="inputsty" type="text" value="orderno" /></td>
						<td><input class="inputsty" type="text" value="sendname" /></td>
						<td><input class="inputsty" type="text" value="sendphone" /></td>
						<td><input class="inputsty" type="text" value="sendadress" /></td>
						<td><input class="inputsty" type="text" value="recvname" /></td>
						<td><input class="inputsty" type="text" value="orderno" /></td>
						<td><input class="inputsty" type="text" value="recvphone" /></td>
						<td><input class="inputsty" type="text" value="srtime" /></td>
					</tr>
					<tr>
						<td>No18</td>
						<td>张三</td>
						<td>1308</td>
						<td>山东济南历区</td>
						<td>李四</td>
						<td>1308</td>
						<td>济南高新区</td>
						<td>2016-7-20</td>
					</tr>
				</table>
				<button><img src="file:///G|/1/img/but.png"/></button>
			</div>

		</div>
	</body>

	<script>
		//获取目标元素
		var target = document.querySelectorAll(‘th input‘);
		var ta = document.querySelectorAll(‘td input‘);
		//获取需要拖放的元素
		var dragElements = document.querySelectorAll(‘#shuxing span‘);
		//临时记录被拖放的元素
		var elementDragged = null;
		//循环监听被拖放元素的开始拖放和结束拖放事件
		for(var i = 0; i < dragElements.length; i++) {
			//开始拖放事件监听
			dragElements[i].addEventListener(‘dragstart‘, function(e) {
				//设置当前拖放元素的数据参数
				e.dataTransfer.setData(‘text‘, this.innerHTML);
				//保存当前拖放对象
				elementDragged = this;
			});
			//结束拖放事件监听
			dragElements[i].addEventListener(‘dragend‘, function(e) {
				//注销当前拖放对象
				elementDragged = null;
			});
		}
		for(var i = 0; i < target.length; i++) {

			target[i].addEventListener(‘dragover‘, function(e) {
				//阻止浏览器默认行为
				e.preventDefault();
				//设置鼠标样式
				e.dataTransfer.dropEffect = ‘move‘;
				return false;
			});
			target[i].addEventListener(‘drop‘, function(e) {
				//阻止默认行为
				e.preventDefault();
				//阻止默认行为
				e.stopPropagation();
				//获取当前被拖放元素的存放数据参数
				da=e.dataTransfer.getData(‘text‘).substring(0,e.dataTransfer.getData(‘text‘).indexOf(‘<‘));
				this.value = da;
				//删除被拖放元素     "<img src="+e.dataTransfer.getData(‘text‘)+"/>"
				for(var i = 0; i < target.length; i++) {
					if(target[i].value == "姓名") {
						ta[i].value = "name";
					} if(target[i].value == "年龄") {
						ta[i].value = "age";
					} if(target[i].value == "性别") {
						ta[i].value = "sex";
					} 
				}
				return false;

			});

		}
	</script>

</html>

  

以上是关于D3拖动效果的主要内容,如果未能解决你的问题,请参考以下文章

d3 js拖动事件侦听器没有收到事件-(d3,反应)

如何在 d3.js 中拖动路径

d3.js v5.4.0 中的拖动问题

Android从地图片段底部拖动回收器视图

D3 js对Android Webview中的拖动事件没有反应

D3.js 力导向图的拖拽(drag)与缩放(zoom)