JS实现拖拽效果------Sestid

客官°小女子只卖身不卖艺 2024-04-18 10:50 171阅读 0赞

实现拖拽效果的实现思路以及演示代码:

实现思路:

1、在CSS中设置你要进行拖拽的图片或者元素的样式
2、在JS中获取元素,以及他的宽高和浏览器的宽高
3、在要被拖拽的元素上绑定鼠标按下事件
4、阻止浏览器默认行为
5、获取光标在元素按下时的坐标
6、绑定元素移动事件
7、获取光标在可视窗口的坐标
8、计算拖动的图片定位位置
9、判断是否在窗口范围内
10、设置拖动过程中图片的定位
11、绑定鼠标弹起事件

演示代码:

  1. 要被拖拽的元素或者图片.onmousedown = function() {
  2. //获取光标在事件源元素坐标系中的坐标
  3. /* 。。。获取坐标的代码。。。 */
  4. document.onmousemove = function() {
  5. /* 。。。获取光标在可见视口中的坐标。。。 */
  6. //而后利用光标在可视窗口的坐标减去光标在拖动的事件源元素坐标系中的坐标,计算出拖动元素的定位位置。
  7. //而后设置CSS样式中的定位
  8. }
  9. document.onmouseup = function() {
  10. 取消mousemove事件的绑定
  11. }
  12. }

实现让图片在浏览器可视窗口内移动:

html,css,js完整代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <style type="text/css">
  7. #box {
  8. width: 200px;
  9. height: 200px;
  10. background: orange;
  11. position: absolute;
  12. top: 0;
  13. left: 0;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <!-- 可以替换成图片 -->
  19. <div id="box"></div>
  20. <script>
  21. //待拖拽的元素
  22. let _img = document.getElementById('box');
  23. //获取元素与浏览器的宽高
  24. let winWidth = window.innerWidth,
  25. winHeight = window.innerHeight,
  26. imgWidth = _img.offsetWidth,
  27. imgHeight = _img.offsetHeight;
  28. //在待拖拽的元素上绑定鼠标按下事件
  29. _img.onmousedown = function(event) {
  30. //兼容IE
  31. event = event || window.event;
  32. //阻止浏览器默认行为兼容IE的写法
  33. event.preventDefault ? event.preventDefault() : event.returnValue = false;
  34. //记录光标在图片按下时的坐标
  35. let _offsetX = event.offsetX,
  36. _offsetY = event.offsetY;
  37. //绑定鼠标移动事件
  38. document.onmousemove = function(event) {
  39. //获取光标在可视窗口中的坐标
  40. let _x = event.clientX,
  41. _y = event.clientY;
  42. //计算拖动的图片的定位的位置
  43. let _left = _x - _offsetX,
  44. _top = _y - _offsetY;
  45. //判断是否在窗口范围内
  46. if (_top < 0) { //上
  47. _top = 0;
  48. } else if (_top >= winHeight - imgHeight) { //下
  49. _top = winHeight - imgHeight;
  50. }
  51. if (_left < 0) { //左
  52. _left = 0;
  53. } else if (_left >= winWidth - imgWidth) { //右
  54. _left = winWidth - imgWidth;
  55. }
  56. //设置拖动过程中图片的定位
  57. _img.style.top = _top + 'px';
  58. _img.style.left = _left + 'px';
  59. }
  60. //绑定鼠标弹起事件
  61. document.onmouseup = function() {
  62. document.onmousemove = null;
  63. }
  64. }
  65. </script>
  66. </body>
  67. </html>

发表评论

表情:
评论列表 (有 0 条评论,171人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaScript 效果实现

      我们在访问一些网站时,会发现有些内容是可以拖拽的,比较方便,那么使用JS怎么实现呢?今天结合代码展示下拖拽效果的实现。  这里需要先熟悉下几个JS事件: onmouse