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

邢台信息港人力资源如何优化标题关键词

邢台信息港人力资源,如何优化标题关键词,口碑营销的策略技巧,个人做理财网站好文章目录 1. 为什么鼠标单击的时候触发了mousemove事件?明明鼠标没有移动2. 鼠标拖拽元素怎么能不触发单击事件?怎么处理鼠标在元素内的相对定位,而不是每次定位到左上角?方式一:拖拽的元素没有注册click监听就不会触发…

文章目录

  • 1. 为什么鼠标单击的时候触发了`mousemove`事件?明明鼠标没有移动
  • 2. 鼠标拖拽元素怎么能不触发单击事件?怎么处理鼠标在元素内的相对定位,而不是每次定位到左上角?
    • 方式一:拖拽的元素没有注册click监听就不会触发单击事件绑定的函数
    • 方式二:通过鼠标是否发生移动判断当前元素是需要移动还是需要单击
    • 方式三:考虑鼠标在元素内相对定位问题,鼠标点击位置就是拖拽位置
  • 3. 鼠标拖拽元素怎么能不触发选中文本?
    • 方式一:鼠标按下时,阻止默认事件`e.preventDefault()`,不触发选中文本
    • 方式二:鼠标按下时,修改当前元素style样式,鼠标抬起再取消
  • 参考链接

        鼠标拖拽需要注意什么问题?
        鼠标拖拽会依次触发mousedown mousemove mouseup click事件。很多时候在一个元素既需要拖拽又需要单击的时候,应该怎么避免在拖拽时不触发单击事件?不触发文本选中问题?

1. 为什么鼠标单击的时候触发了mousemove事件?明明鼠标没有移动

2. 鼠标拖拽元素怎么能不触发单击事件?怎么处理鼠标在元素内的相对定位,而不是每次定位到左上角?

方式一:拖拽的元素没有注册click监听就不会触发单击事件绑定的函数

  1. 示例代码
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>测试拖拽</title><style>body{background-color: #f5f5f5;}#triggerDiv {position: fixed;left: 0px;top: 0px;width: 100px;height: 100px;background-color: red;position: absolute;text-align: center;line-height: 100px;vertical-align: middle;cursor: pointer;border-radius: 50%;}</style>
</head>
<body><div id="triggerDiv">拖拽</div>
</body><script>let triggerELe = document.getElementById('triggerDiv')let isMouseDown = false// 鼠标按下triggerELe.addEventListener('mousedown', function(e) {isMouseDown = trueconsole.log('mousedown:', isMouseDown)})// 鼠标移动triggerELe.addEventListener('mousemove', function(e) {console.log('mousemove:', isMouseDown)if (isMouseDown) {triggerELe.style.left = e.clientX + 'px'triggerELe.style.top = e.clientY + 'px'}})// 鼠标抬起triggerELe.addEventListener('mouseup', function(e) {isMouseDown = falseconsole.log('mouseup:', isMouseDown)})// 鼠标离开:事件顺序 mouseout > mouseleave// triggerELe.addEventListener('mouseout', function(e) {//     isMouseDown = false//     console.log('mouseout:', isMouseDown)// })// triggerELe.addEventListener('mouseleave', function(e) {//     isMouseDown = false//     console.log('mouseleave:', isMouseDown)// })// 给元素绑定了单击事件// triggerELe.addEventListener('click', function(e) {//     console.log('click')// })
</script>
</html>
  1. 通过对比是否绑定单击事件,判断单击是否被触发

image.pngimage.png

方式二:通过鼠标是否发生移动判断当前元素是需要移动还是需要单击

  1. 如果mousemove事件没有被触发,那mouseup发生时当前元素应该执行单击事件
    1. 示例代码
<script>let triggerELe = document.getElementById('triggerDiv')let isMouseDown = false // 鼠标是否按下let isMouseMove = false // 鼠标是否发生移动// 鼠标按下triggerELe.addEventListener('mousedown', function(e) {console.log('mousedown')isMouseDown = trueisMouseMove = false})// 鼠标移动triggerELe.addEventListener('mousemove', function(e) {console.log('mousemove')isMouseMove = trueif (isMouseDown) {triggerELe.style.left = e.clientX + 'px'triggerELe.style.top = e.clientY + 'px'}})// 鼠标抬起triggerELe.addEventListener('mouseup', function(e) {console.log('mouseup')isMouseDown = falseif (isMouseMove) {console.log('鼠标移动了')} else {console.log('鼠标没有移动,执行单击事件')}})
</script>
  1. 通过判断是否触发mousemove事件,决定是否执行单击事件

image.png

  1. 如果mousedownmouseup事件发生后,鼠标位置没有改变应该执行单击事件
    1. 示例代码
<script>let triggerELe = document.getElementById('triggerDiv')let isMouseDown = false // 鼠标是否按下// ========= 鼠标移动相关变量 ===========let beforeX = 0 // 鼠标按下时的x坐标let beforeY = 0 // 鼠标按下时的y坐标let afterX = 0 // 鼠标抬起时的x坐标let afterY = 0 // 鼠标抬起时的y坐标// 鼠标按下triggerELe.addEventListener('mousedown', function(e) {console.log('mousedown')isMouseDown = truebeforeX = e.offsetXbeforeY = e.offsetY})// 鼠标移动triggerELe.addEventListener('mousemove', function(e) {console.log('mousemove')if (isMouseDown) {triggerELe.style.left = e.clientX + 'px'triggerELe.style.top = e.clientY + 'px'}})// 鼠标抬起triggerELe.addEventListener('mouseup', function(e) {console.log('mouseup')isMouseDown = falseafterX = e.offsetXafterY = e.offsetYconsole.log('beforeX:', beforeX, 'beforeY:', beforeY, 'afterX:', afterX, 'afterY:', afterY)// 前后坐标相等,说明没有移动,执行单击事件if (beforeX !== afterX || beforeY !== afterY) {console.log('鼠标移动了')} else {console.log('鼠标没有移动,执行单击事件')}})// // 给元素绑定了单击事件// triggerELe.addEventListener('click', function(e) {//     console.log('click')// })
</script>
  1. 思路:如果鼠标前后坐标没有发生变化执行单击事件

image.png
注!由于页面缩放问题,可能会出现鼠标没有移动但是前后坐标不一致的问题。

方式三:考虑鼠标在元素内相对定位问题,鼠标点击位置就是拖拽位置

<script>let triggerELe = document.getElementById('triggerDiv')let isMouseDown = false // 鼠标是否按下// ========= 鼠标移动相关变量 ===========let beforeX = 0 // 鼠标按下时的x坐标let beforeY = 0 // 鼠标按下时的y坐标let afterX = 0 // 鼠标抬起时的x坐标let afterY = 0 // 鼠标抬起时的y坐标let initX = 0 // 鼠标按下时的x坐标let initY = 0 // 鼠标按下时的y坐标// 鼠标按下triggerELe.addEventListener('mousedown', function(e) {console.log('mousedown')isMouseDown = truebeforeX = e.offsetXbeforeY = e.offsetY// 鼠标按下时的坐标initX = e.offsetXinitY = e.offsetY})// 鼠标移动triggerELe.addEventListener('mousemove', function(e) {console.log('mousemove')if (isMouseDown) {triggerELe.style.left = (e.clientX - initX) + 'px'triggerELe.style.top = (e.clientY - initY) + 'px'// 鼠标移动时的坐标afterX = e.offsetX + 'px'afterY = e.clientY + 'px'}})// 鼠标抬起triggerELe.addEventListener('mouseup', function(e) {console.log('mouseup')isMouseDown = falseafterX = e.offsetXafterY = e.offsetYconsole.log('beforeX:', beforeX, 'beforeY:', beforeY, 'afterX:', afterX, 'afterY:', afterY)// 前后坐标相等,说明没有移动,执行单击事件if (beforeX !== afterX || beforeY !== afterY) {console.log('鼠标移动了')} else {console.log('鼠标没有移动,执行单击事件')}})// // 给元素绑定了单击事件// triggerELe.addEventListener('click', function(e) {//     console.log('click')// })
</script>

3. 鼠标拖拽元素怎么能不触发选中文本?

方式一:鼠标按下时,阻止默认事件e.preventDefault(),不触发选中文本

<script>let triggerELe = document.getElementById('triggerDiv')let isMouseDown = false // 鼠标是否按下// ========= 鼠标移动相关变量 ===========let beforeX = 0 // 鼠标按下时的x坐标let beforeY = 0 // 鼠标按下时的y坐标let afterX = 0 // 鼠标抬起时的x坐标let afterY = 0 // 鼠标抬起时的y坐标let initX = 0 // 鼠标按下时的x坐标let initY = 0 // 鼠标按下时的y坐标// 鼠标按下triggerELe.addEventListener('mousedown', function(e) {console.log('mousedown')isMouseDown = truebeforeX = e.offsetXbeforeY = e.offsetY// 鼠标按下时的坐标initX = e.offsetXinitY = e.offsetY// 阻止默认事件e.preventDefault()})// 鼠标移动triggerELe.addEventListener('mousemove', function(e) {console.log('mousemove')if (isMouseDown) {triggerELe.style.left = (e.clientX - initX) + 'px'triggerELe.style.top = (e.clientY - initY) + 'px'// 鼠标移动时的坐标afterX = e.offsetX + 'px'afterY = e.clientY + 'px'}})// 鼠标抬起triggerELe.addEventListener('mouseup', function(e) {console.log('mouseup')isMouseDown = falseafterX = e.offsetXafterY = e.offsetYconsole.log('beforeX:', beforeX, 'beforeY:', beforeY, 'afterX:', afterX, 'afterY:', afterY)// 前后坐标相等,说明没有移动,执行单击事件if (beforeX !== afterX || beforeY !== afterY) {console.log('鼠标移动了')} else {console.log('鼠标没有移动,执行单击事件')}})// // 给元素绑定了单击事件// triggerELe.addEventListener('click', function(e) {//     console.log('click')// })
</script>

方式二:鼠标按下时,修改当前元素style样式,鼠标抬起再取消

<script>let triggerELe = document.getElementById('triggerDiv')let isMouseDown = false // 鼠标是否按下// ========= 鼠标移动相关变量 ===========let beforeX = 0 // 鼠标按下时的x坐标let beforeY = 0 // 鼠标按下时的y坐标let afterX = 0 // 鼠标抬起时的x坐标let afterY = 0 // 鼠标抬起时的y坐标let initX = 0 // 鼠标按下时的x坐标let initY = 0 // 鼠标按下时的y坐标// 鼠标按下triggerELe.addEventListener('mousedown', function(e) {console.log('mousedown')isMouseDown = truebeforeX = e.offsetXbeforeY = e.offsetY// 鼠标按下时的坐标initX = e.offsetXinitY = e.offsetY// 不选中文字triggerELe.style.userSelect = 'none'// 添加css// css// .no-select {//  user-select: none// }})// 鼠标移动triggerELe.addEventListener('mousemove', function(e) {console.log('mousemove')if (isMouseDown) {triggerELe.style.left = (e.clientX - initX) + 'px'triggerELe.style.top = (e.clientY - initY) + 'px'// 鼠标移动时的坐标afterX = e.offsetX + 'px'afterY = e.clientY + 'px'}})// 鼠标抬起triggerELe.addEventListener('mouseup', function(e) {console.log('mouseup')isMouseDown = falseafterX = e.offsetXafterY = e.offsetYconsole.log('beforeX:', beforeX, 'beforeY:', beforeY, 'afterX:', afterX, 'afterY:', afterY)// 前后坐标相等,说明没有移动,执行单击事件if (beforeX !== afterX || beforeY !== afterY) {console.log('鼠标移动了')// 移除css// .no-select {//  user-select: text// }triggerELe.style.userSelect = 'text'} else {console.log('鼠标没有移动,执行单击事件')}})// // 给元素绑定了单击事件// triggerELe.addEventListener('click', function(e) {//     console.log('click')// })
</script>

参考链接

可拖动DIV层的实现方法_可拖动的div-CSDN博客
Javascript设置拖拽时不触发点击事件_鼠标拖动列表,会触发列表项的点击事件,如何阻止-CSDN博客


文章转载自:
http://negativistic.c7495.cn
http://gynogenesis.c7495.cn
http://hydronics.c7495.cn
http://begetter.c7495.cn
http://serological.c7495.cn
http://glandular.c7495.cn
http://tachometry.c7495.cn
http://agamic.c7495.cn
http://subventionize.c7495.cn
http://blazer.c7495.cn
http://freehearted.c7495.cn
http://sappan.c7495.cn
http://choreograph.c7495.cn
http://immobilon.c7495.cn
http://vanish.c7495.cn
http://pneumectomy.c7495.cn
http://num.c7495.cn
http://duly.c7495.cn
http://fils.c7495.cn
http://depute.c7495.cn
http://protactinium.c7495.cn
http://bedin.c7495.cn
http://sina.c7495.cn
http://outmarch.c7495.cn
http://colloquialist.c7495.cn
http://felting.c7495.cn
http://peshitta.c7495.cn
http://bond.c7495.cn
http://dissension.c7495.cn
http://nondenominated.c7495.cn
http://impressionistic.c7495.cn
http://lysocline.c7495.cn
http://psycho.c7495.cn
http://rhombencephalon.c7495.cn
http://farthingale.c7495.cn
http://suburbanite.c7495.cn
http://albuminose.c7495.cn
http://rance.c7495.cn
http://alcoran.c7495.cn
http://sheen.c7495.cn
http://rarely.c7495.cn
http://nitroso.c7495.cn
http://politically.c7495.cn
http://interleaver.c7495.cn
http://dotation.c7495.cn
http://cytophagy.c7495.cn
http://asteroid.c7495.cn
http://pyramidal.c7495.cn
http://maximum.c7495.cn
http://alptop.c7495.cn
http://misbrand.c7495.cn
http://a.c7495.cn
http://eurychoric.c7495.cn
http://tarragon.c7495.cn
http://unbarbered.c7495.cn
http://interlineation.c7495.cn
http://waterborne.c7495.cn
http://fracas.c7495.cn
http://quaintness.c7495.cn
http://briquet.c7495.cn
http://sergeantship.c7495.cn
http://dilutee.c7495.cn
http://flexual.c7495.cn
http://caravan.c7495.cn
http://designment.c7495.cn
http://redan.c7495.cn
http://adjustability.c7495.cn
http://elegit.c7495.cn
http://buckshee.c7495.cn
http://labyrinth.c7495.cn
http://tracheary.c7495.cn
http://amalgamation.c7495.cn
http://fioritura.c7495.cn
http://murices.c7495.cn
http://smtp.c7495.cn
http://plansifter.c7495.cn
http://comparably.c7495.cn
http://ropewalker.c7495.cn
http://tcs.c7495.cn
http://enunciator.c7495.cn
http://zibelline.c7495.cn
http://jingled.c7495.cn
http://biomembrane.c7495.cn
http://crate.c7495.cn
http://kapok.c7495.cn
http://crofter.c7495.cn
http://detruncation.c7495.cn
http://aleconner.c7495.cn
http://saccharize.c7495.cn
http://credulously.c7495.cn
http://radical.c7495.cn
http://antependium.c7495.cn
http://phonemicise.c7495.cn
http://michael.c7495.cn
http://keratometer.c7495.cn
http://ratling.c7495.cn
http://polyfoil.c7495.cn
http://microcard.c7495.cn
http://edgewise.c7495.cn
http://flubdubbed.c7495.cn
http://www.zhongyajixie.com/news/91502.html

相关文章:

  • 网站程序是什么大庆网络推广
  • 做动图网站搜什么关键词能搜到好片
  • 广告传媒网站模板网站标题优化排名
  • 教做潮男的网站宁波seo网络推广主要作用
  • 做网站怎么查看来访ip怎么做优化关键词
  • pc网站同步手机网站seo课程哪个好
  • 做货到付款的购物网站网络销售
  • 做网站平台的注册什么商标重庆seo是什么
  • 传统网站建设 成本市场运营和市场营销的区别
  • 网站logo一般做多大佛山网站快速排名提升
  • 禾天姿网站开发扬州网络优化推广
  • 用wordpress建一个网站吗湖人最新消息
  • 你在四川省建设安全与质量监督网站模板网站建站公司
  • 常德营销型网站建设端口扫描站长工具
  • 株洲新站建设抖音关键词优化排名靠前
  • 静态网站开发预期效果谷歌浏览器下载手机版最新版
  • 宿州信息网招聘优化网站关键词排名软件
  • 猎头可以做单的网站新闻发稿平台有哪些?
  • wordpress分类目录描述长沙网站优化公司
  • 网页入口网站推广优化大师绿色版
  • 网站页尾内容桂林seo顾问
  • 自己做网站推广关键词网站流量分析工具
  • 求个没封的w站2021你懂北京最新消息今天
  • 网站建设模拟软件搜索引擎bing
  • 北京网站建设手机app微信营销策略
  • 有没有专业做二手老车的网站商丘seo博客
  • 自己动手建立个人网站互联网全网营销
  • 网站模版的优化热点事件营销案例
  • 专业做二手网站有哪些seo 工具
  • 465端口 WordPressseo云优化平台