当前位置: 首页 > wzjs >正文

网页制作与网站建设教程成人再就业技能培训班

网页制作与网站建设教程,成人再就业技能培训班,四川建设人才网证书查询,做商城网站外包概述 本文主要介绍前端中拖拽相关的知识以及如何在 vue3 工程里实现拖拽指令。 前端中的拖拽 前端中的拖拽功能是一种交互设计,允许用户通过鼠标或触摸操作移动页面上的元素到不同的位置。这一功能的实现涉及 HTML、CSS 和 JavaScript 的综合运用。 HTML元素拖拽…

概述

本文主要介绍前端中拖拽相关的知识以及如何在 vue3 工程里实现拖拽指令。

前端中的拖拽

前端中的拖拽功能是一种交互设计,允许用户通过鼠标或触摸操作移动页面上的元素到不同的位置。这一功能的实现涉及 HTMLCSSJavaScript 的综合运用。

HTML元素拖拽
  • 拖拽元素

HTML 元素有一个draggable属性,接受一个布尔值,默认值为false(不可拖拽)。

<div draggable="true">我是可拖动的</div>
  • 事件处理

拖拽功能的实现依赖于几个关键的拖放事件:

  • dragstart: 当用户开始拖动元素时触发,可以在这里设置数据传输(如拖动的数据类型和值)。

  • drag: 元素正在被拖动时连续触发。

  • dragend: 用户释放鼠标,结束拖动时触发。

  • dragenterdragover: 当拖动的元素进入或停留在目标区域时触发。通常需要阻止这两个事件的默认行为,以允许元素被放置。

  • drop: 在拖动元素被释放到有效目标时触发,是接收拖动数据并执行相应操作的地方。

示例效果

效果如下:
在这里插入图片描述

核心代码

代码如下:

dragClass.addEventListener("dragstart", (e) => {const node = e.target.cloneNode(true);e.dataTransfer.setData("cloneNode", node.outerHTML);
});dragClass.addEventListener("dragend", (e) => {e.dataTransfer.clearData();
});dropDom.addEventListener("dragover", (e) => {if (e.target.className == "draggable") {e.preventDefault();}
});dropDom.addEventListener("drop", (e) => {e.preventDefault();const node = e.dataTransfer.getData("cloneNode");e.target.innerHTML = node;const originCellNode = e.dataTransfer.getData("text/html");if (originCellNode) {originCellNode.removeChild(originCellNode);}e.dataTransfer.clearData("cloneNode");
});dragTableCell.addEventListener("dragstart", (e) => {const node = e.target.cloneNode(true);e.dataTransfer.setData("cloneNode", node.outerHTML);e.dataTransfer.setData("text/html", e.target.parentNode.outerHTML);
});
参考地址

参考地址:https://github.com/Jinuss/blog/blob/main/docs/Demo/03.drag.html

vue3 拖拽指令封装

在 vue3 中实现组件的拖拽,可以封装一个拖拽指令,再需要进行拖拽的组件上加上v-drag即可。

拖拽指令实现实现如下:

export const drag = {mounted(el) {el.style.position = "absolute";el.style.cursor = "move";let startX, startY, initialX, initialY;const dragStart = (e) => {startX = e.clientX;startY = e.clientY;initialX = el.offsetLeft;initialY = el.offsetTop;document.addEventListener("mousemove", dragMove);document.addEventListener("mouseup", dragEnd);};const dragMove = (e) => {const dx = e.clientX - startX;const dy = e.clientY - startY;const newX = initialX + dx;const newY = initialY + dy;const maxX = window.innerWidth - el.offsetWidth;const maxY = window.innerHeight - el.offsetHeight;/**边界检查 */el.style.left = `${Math.min(Math.max(newX, 0), maxX)}px`;el.style.top = `${Math.min(Math.max(newY, 0), maxY)}px`;};const dragEnd = () => {document.removeEventListener("mousemove", dragMove);document.removeEventListener("mouseup", dragEnd);};el.addEventListener("mousedown", dragStart);},
};
http://www.dtcms.com/wzjs/348622.html

相关文章:

  • 微网站和app的区别品牌营销策略包括哪些内容
  • 网站建设项目方案模板百度推广手机客户端
  • 我的世界怎么做神器官方网站bing搜索引擎下载
  • 企业网站app制作价格网站建站公司
  • 张家港网站建设培训什么叫网络市场营销
  • 免费一百个空间访客领取网站网址导航浏览器下载
  • 做投融资平台的网站都有哪些?seo网址大全
  • wordpress一栏主题廊坊快速优化排名
  • 网站建设外文文献淄博seo培训
  • node做网站后台qq刷赞网站推广
  • wordpress上传功能十堰seo优化
  • 镇江网站关键词优化预订站长之家查询域名
  • 建网站需要什么语言员工培训
  • 东莞做棋牌网站建设搜索引擎排名优化是什么意思
  • 中国网站建设公司百度浏览器官网入口
  • 景区网站建设方案网站入口百度
  • 建设网站犀牛云站长之家最新域名查询
  • 可以做网站背景音乐的英文歌曲国际新闻网
  • 深圳市龙岗区住房和建设局官网网站站长之家
  • 国内有多少家做网站的企业搜索引擎营销特点
  • 什么是外包公司?优化营商环境应当坚持什么原则
  • 做网站一个月能挣多少c盘优化大师
  • 日报做的地方网站googleplay安卓版下载
  • 网站备案后内容网络营销外包网络推广
  • 榆林网站开发武汉seo公司排名
  • 深圳大鹏住房和建设局网站国际新闻报道
  • 新网站如何做sem南通网站快速收录
  • 众博彩做倍投的网站靠谱吗网络营销广告案例
  • 镇海区住房和建设交通局网站郑州网站制作
  • 设计类专业需要艺考吗成都网站seo外包