返回顶部
首页 > 资讯 > 精选 >好程序员web前端教程分享默认行为和拖拽思路
  • 837
分享到

好程序员web前端教程分享默认行为和拖拽思路

2023-06-03 10:06:16 837人浏览 八月长安
摘要

好程序员web前端分享默认行为和拖拽思路,默认行为:什么是默认行为:默认行为就是浏览器自己触发的事件。比如:a链接的跳转,fORM提交时的跳转,鼠标右键跳转;oncontexmenu当点击右键菜单的时候; return 

程序员web前端分享默认行为和拖拽思路,默认行为:什么是默认行为:默认行为就是浏览器自己触发的事件。比如:a链接的跳转,fORM提交时的跳转,鼠标右键跳转;

oncontexmenu当点击右键菜单的时候;

 

return false 阻止默认行为 if(e.preventDefault) {    e.preventDefault(); }else {     window.event.returnValue = false; }事件移除。document.onmouseover=null;

拖拽

拖拽事件:

onmousedown  onmousemove onmouseup

拖拽思路:


1.给目标元素添加onmousedown事件,拖拽的前提是在目标元素按下鼠标左键

 

当onmousedown发生以后,此刻给document添加onmousemove事件,意味着此刻鼠标在网页的移动都将改变目标元素的位置

 

在onmousemove事件中,设定目标元素的left和top,

公式

目标元素的left = 鼠标的clientX – (鼠标和元素的横坐标差,即offsetX)

目标元素的top = 鼠标的clientY– (鼠标和元素的纵坐标差,即offsetY)

 

当onmousedown发生以后,此刻给document添加onmouseup事件,意味着此刻鼠标在网页的任意位置松开鼠标,都会放弃拖拽的效果

在onmouseup事件中,取消document的onmousemove事件即可。

 

事件触发阶段主要由于事件流:DOM0级事件处理阶段和DOM2级事件处理;

 

DOM0级事件处理,是一种赋值方式,是被所有浏览器所支持的,简单易懂容易操作;

 

DOM2级事件处理是所有DOM节点中的方法,可以重复绑定,但是浏览器兼容存在问题;

 

非IE下:(这里的事件名不带on),第三个参数表示是在捕获阶段还是冒泡阶段。可以重复绑定事件,执行顺序按照绑定顺序来执行。

 

 oDiv.addEventListener('click',chick,false);

 

oDiv.removeEventListener('click',chick ,false);

 

 

IE下:

 

只有冒泡阶段,所以没有第三个参数;(这里的事件名需要加on)

 

oDiv.attachEvent();

 

oDiv.detachEvent() ;

 

兼容问题解决:

 

var EventUtil={        addHandler:function(DOM,EventType,fn){            if(DOM.addEventListener){                DOM.addEventListener(EventType,fn,false);            }else if(DOM.attachEvent){                DOM.attachEvent('on'+EventType,fn)            }else{                DOM['on'+EventType]=fn            }        },        removeHandler:function(DOM,EventType,fn){            if(DOM.removeEventListener){                DOM.removeEventListener(EventType,fn,false)            }else if(DOM.detachEvent){                DOM.detachEvent('on'+EventType,fn)            }else{                DOM['on'+EventType]=null;            }        }    }

写一个完美拖拽的案例:

 

<!DOCTYPE html><html><title>完美拖拽</title><style type="text/CSS">html,body{overflow:hidden;}body,div,h3,p{margin:0;padding:0;}body{color:#fff;background:#000;font:12px/2 Arial;}p{padding:0 10px;margin-top:10px;}span{color:#ff0;padding-left:5px;}#box{position:absolute;width:300px;height:150px;background:#333;border:2px solid #ccc;top:50%;left:50%;margin:-75px 0 0 -150px;}#box h3{height:25px;cursor:move;background:#222;border-bottom:2px solid #ccc;text-align:right;padding:0 10px;}#box h3 a{color:#fff;font:12px/25px Arial;text-decoration:none;outline:none;}</style><script type="text/javascript">window.onload=function(){var positionArray = [];var box = document.getElementById("box");box.onmousedown = function(evt){positionArray = [];var x = evt.offsetX;var y = evt.offsetY;document.onmousemove = function(evt){box.style.left = evt.clientX - x + "px";box.style.top = evt.clientY - y + "px";console.log({left:box.offsetLeft, top: box.offsetTop})positionArray.push({left:box.offsetLeft, top: box.offsetTop});}}box.onmouseup = function(){document.onmousemove = null;}box.children[0].firstChild.onmousedown = function(evt){evt.stopPropagation();}box.children[0].firstChild.onclick = function(){console.log(positionArray.length);var index = positionArray.length-1;var timer = setInterval(function(){if(index < 0) {clearInterval(timer);return;}box.style.left = positionArray[index--].left+"px";box.style.top = positionArray[index--].top+"px";},30);}};</script></head><body><div id="box" style="margin-left: 0px; margin-top: 0px; left: 533px; top: 231px;">    <h3><a href="javascript:;">点击回放拖动轨迹</a></h3>    <p><strong>Drag:</strong><span>false</span></p>    <p><strong>offsetTop:</strong><span>231</span></p>    <p><strong>offsetLeft:</strong><span>533</span></p></div>  </body></html>

--结束END--

本文标题: 好程序员web前端教程分享默认行为和拖拽思路

本文链接: https://lsjlt.com/news/234073.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 好程序员web前端教程分享默认行为和拖拽思路
    好程序员web前端分享默认行为和拖拽思路,默认行为:什么是默认行为:默认行为就是浏览器自己触发的事件。比如:a链接的跳转,form提交时的跳转,鼠标右键跳转;oncontexmenu当点击右键菜单的时候; return ...
    99+
    2023-06-03
  • 好程序员web前端分享WebSocket协议
         好程序员web前端分享WebSocket协议,WebSocket协议简介WebSocket协议简介WebSocket是html5规范新引入的功能,用于解决浏览器与后台服务器双向通讯的问题,使用WebS...
    99+
    2023-06-03
  • 好程序员web前端分享HTML表单和输入
     好程序员web前端分享HTML表单用于搜集不同类型的用户输入。   表单   表单是一个包含表单元素的区域。   表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输入信息的元素。&nb...
    99+
    2023-06-03
  • 好程序员分享Web前端知识之HTML
      今天好程序员分享Web前端知识之HTML。Web前端技术由HTML、CSS和Javascript三大部分构成,而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构。  1...
    99+
    2023-06-03
  • 好程序员web前端分享高度自适应
    好程序员web前端分享高度自适应一、宽高自适应网页布局中经常要定义元素的宽和高。但很多时候我们希望元素的大小能够根据窗口或子元素自动调整,这就是自适应。它能够使网页显示更灵活,可以适应在不同设备、不同窗口和不同分辨率下显示。(1)宽度自适应...
    99+
    2023-06-03
  • 好程序员web前端培训分享学习JavaScript
    好程序员web前端教程分享学习JavaScript,我试着总结自己学习JavaScript的方法 JavaScript给人那种感觉的原因多半是因为它如下的特点: 本身知识很抽象、晦涩难懂,如:闭包、内置对象、DOM。本身...
    99+
    2023-06-03
  • 好程序员web前端分享JS引擎的执行机制
      好程序员web前端分享JS引擎的执行机制,请先着重牢记两点!JS是单线程语言。   JS的EventLoop是JS的执行机制。深入了解JS的执行,就等于深入了解JS里的eventloop。   1、灵魂三问:JS为什...
    99+
    2023-06-03
  • 好程序员web前端分享HTML元素强制不换行
    好程序员web前端分享HTML元素强制不换行,HTML 中 nowrap是用来强制不换行的   在排版中   对包裹plain text的标签使用nowrap属性即刻实现强制不换行.   如:   强...
    99+
    2023-06-03
  • 好程序员web前端培训分享怎样学好css?
      好程序员web前端培训分享怎样学好css?我推荐题主的学习方法就是:善用调试工具。  使用谷歌浏览器进行调试,在属性不理解时可以直接在浏览器里进行数值调节  css在书写时由于选择器权重问题经常出现样式覆盖的问题  如果你的选择器书写正...
    99+
    2023-06-03
  • 好程序员web前端教程分享js文件引用编码方式
    好程序员web前端教程分享js文件引用编码方式,js外部文件编码由这些因素决定:1.如果Apache有DefaultCharset,则js文件解析用服务器指定的编码;2.如果PHP header声明charset为编码utf-8,则文件编码...
    99+
    2023-06-03
  • 好程序员web前端技术分享css盒模型
    web前端技术分享css盒模型学习目标1、认识盒子模型2、盒子模型的组成部分3、学习盒子模型的相关元素 margin padding一、css盒模型的概念及组成概念:盒模型是css布局的基石,它规定了网页元素如何显示以及元素间相互关系。cs...
    99+
    2023-06-03
  • 好程序员web前端教程分享JavaScript学习笔记之Event事件二
      好程序员web前端教程分享JavaScript学习笔记之Event事件二,今天来聊一聊事件的执行机制。  什么是事件的执行机制呢?  思考一个问题?  当一个大盒子嵌套一个小盒子的时候,并且两个盒子都有点击事件你点击里面的小盒子,外面的...
    99+
    2023-06-03
  • 好程序员web前端教程分享CSS预编译器的再次理解
      好程序员web前端教程分享CSS预编译器的再次理解:我所理解的css预编译器   基于css的,能让css也有一种编程语言范。解决了css的诸多问题,如css模块化、无法嵌套书写、没有变量。   css模块化&nbs...
    99+
    2023-06-03
  • 好程序员web前端分享CSS基础知识之position
     好程序员web前端分享CSS基础知识之position    CSS定位机制   标准文档流(Normal flow)   浮动定位(Floats)   绝对定位(Absolute position...
    99+
    2023-06-03
  • 好程序员web前端分享web测试之Js中的变量
      好程序员web前端分享web测试之Js中的变量,JavaScript的变量与其他语言的变量有很大区别。JavaScript变量是松散型的(不强制类型)本质,决定了它只是在特定时间用于保存特定值的一个名字而已。由于不存在定义某个变量必须要...
    99+
    2023-06-03
  • 好程序员web前端分享如何理解JS的单线程
    好程序员web前端分享如何理解JS单线程,JS本质是单线程的。也就是说,它并不能像JAVA语言那样,两个线程并发执行。 但我们平时看到的JS,分明是可以同时运作很多任务的,这又是怎么回事呢? 首先,JS的代码,大致分为两...
    99+
    2023-06-03
  • 好程序员web前端分享HTML基本结构和基本语法
    好程序员web前端分享HTML基本结构和基本语法HTML基本结构HTML的基本语法<常规标记><标记 属性=“属性值” 属性=“属性值”></标记>标记也可叫标签或叫元素例如:<head>&l...
    99+
    2023-06-03
  • 好程序员web前端学习路线分享CSS浮动-清除浮动篇
    好程序员web前端学习路线分享CSS浮动-清除浮动篇,为什么要清除浮动  这里所说的清除浮动,并不是不要浮动了,而是清除浮动与浮动之间的影响。那么到底会有什么影响呢?1.高度塌陷  举个例子我们看一下。    我们在这里设置了div0是外容...
    99+
    2023-06-03
  • 好程序员web前端分享CSS学习:HSLA颜色模式
    好程序员web前端分享CSS学习:HSLA颜色模式一、理论:1.HSLA颜色模式a.HSLA在HSL基础上增加了不透明度,值越大透明度越低b.HSLA颜色模式的浏览器兼容性和HSL一样,只有较新版本的主流浏览器才支持2.RGBA和HSLA颜...
    99+
    2023-06-03
  • 好程序员web前端培训分享JavaScript学习笔记SASS
      好程序员web前端培训分享JavaScript学习笔记SASS,世界上最成熟、最稳定、最强大的专业级CSS扩展语言!· sass 是一个 css 的预编译工具· 也就是能够 更优雅 的书...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作