最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

利用js实现时尚的拖拽功能

来源:动视网 责编:小采 时间:2020-11-27 20:01:32
文档

利用js实现时尚的拖拽功能

利用js实现时尚的拖拽功能:我们在一些网站中都可以看到很时尚炫酷的图片拖拽,当然这些操作用JavaScript就可以实现,那么我们今天就来讲一下如何使用JavaScript实现拖拽功能的,没有了解过JavaScript实现拖拽功能的或者感兴趣的我们一起来看看吧!需要看的问题:1、怎样在网页中实现拖
推荐度:
导读利用js实现时尚的拖拽功能:我们在一些网站中都可以看到很时尚炫酷的图片拖拽,当然这些操作用JavaScript就可以实现,那么我们今天就来讲一下如何使用JavaScript实现拖拽功能的,没有了解过JavaScript实现拖拽功能的或者感兴趣的我们一起来看看吧!需要看的问题:1、怎样在网页中实现拖


我们在一些网站中都可以看到很时尚炫酷的图片拖拽,当然这些操作用JavaScript就可以实现,那么我们今天就来讲一下如何使用JavaScript实现拖拽功能的,没有了解过JavaScript实现拖拽功能的或者感兴趣的我们一起来看看吧!

需要看的问题:

1、怎样在网页中实现拖曳功能。

2、document.documentElement与document.body的区别。
document.documentElement.clientWidth指整个html文档的宽度,document.body.clientWidth的宽度。这两者是不一样的。可以在console控制台通过console.log(document.documentElement)和console.log(document.body)进行测试。

3、getBoundingClientRect().left与offsetLeft的区别。
(1)getBoundingClientRect()用于获取元素的left、top、right、bottom。

(2)offset获取相对于父级的left和top。getBoundingClientRect()获取相对于窗口的left、top、right、bottom。

4、e.clientX指的是鼠标点相对于窗口的坐标。

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>弹窗</title>
 <style type="text/css">
 #mask {
 position: fixed;
 left:0;
 top:0;
 width:100%;
 height: 100%;
 background-color: hsla(250,100%,50%,0.6);
 display: none;
 }
 #popBox {
 position: absolute;
 background-color: #fff;
 width:200px;
 height: 200px;
 /*left:50%;
 top:50%;*/
 /*margin-top: -100px;
 margin-left: -100px;*/
 }
 </style>
</head>
<body>
 <button id="clickBtn">点击</button>
 <p id="mask">
 <p id="popBox"></p>
 </p>
 <script type="text/javascript">
 var clickBtn = document.getElementById("clickBtn");
 var popBox = document.getElementById("popBox")
 var mask = document.getElementById("mask");
 clickBtn.onclick = function() {
 mask.style.display = "block";
 popBox.style.left = (document.documentElement.clientWidth - popBox.offsetWidth)/2 + "px";
 popBox.style.top = (document.documentElement.clientHeight - popBox.offsetHeight)/2 + "px";

 }
 popBox.onclick = function(e) {
 var e = e || window.event;//e指所有代码的集合,通过它可以获取事件的各种属性。
 e.cancelBubble = true;//阻止事件冒泡,即点击事件不会传递到mask这一层,意味着不会触发点击mask事件代码。
 }
 mask.onclick = function() {
 mask.style.display = "none";
 }

 //拖拽 mousedown->mousemove->mouseup 
 popBox.onmousedown = function(e) {
 var e = e || window.event;
 var pos = popBox.getBoundingClientRect();//getBoundingClientRect()用于获取元素的left、top、right、bottom。offset获取相对于父级的left和top。getBoundingClientRect()获取相对于窗口的left、top、right、bottom。
 var oX = e.clientX - pos.left;//clientX指相对于窗口的坐标。
 var oY = e.clientY - pos.top;
 document.onmousemove = function(e) {
 var e = e || window.event;
 var oLeft = e.clientX - oX;
 var oTop = e.clientY - oY;
 popBox.style.left = oLeft + "px";
 popBox.style.top = oTop + "px";
 if (oLeft<0) {
 popBox.style.left = 0 + "px";
 };
 if (oLeft>document.documentElement.clientWidth - popBox.offsetWidth) {
 popBox.style.left = document.documentElement.clientWidth - popBox.offsetWidth + "px";//document.documentElement.clientWidth指整个html文档的宽度,document.body.clientWidth的宽度。这两者是不一样的。可以在console控制台通过console.log(document.documentElement)和console.log(document.body)进行测试。


 }
 if (oTop<0) {
 popBox.style.top = 0 + "px";
 };
 if (oTop > document.documentElement.clientHeight - popBox.offsetHeight) {
 popBox.style.top = document.documentElement.clientHeight - popBox.offsetHeight + "px";
 }

 }
 popBox.onmouseup = function() {
 document.onmousemove = null;
 }
 }
 </script>
</body>
</html>

结合代码分析,我感觉给了源码自己尝试的去删除、修改,这样的学习进步的很快而且还不会容易忘记。

相关推荐:

js控制文件拖拽及获取拖拽内容

文档

利用js实现时尚的拖拽功能

利用js实现时尚的拖拽功能:我们在一些网站中都可以看到很时尚炫酷的图片拖拽,当然这些操作用JavaScript就可以实现,那么我们今天就来讲一下如何使用JavaScript实现拖拽功能的,没有了解过JavaScript实现拖拽功能的或者感兴趣的我们一起来看看吧!需要看的问题:1、怎样在网页中实现拖
推荐度:
标签: 利用 使用 实现
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top