美国人有一句常用的俗语—“Re-inventing the Wheel”,从字面上来解释就是“重新发明轮子”.可是轮子早已问世,再要去发明岂非劳而无功? 产品经理发下需求,实施者再到网上搜索代码,也许很快就搜到对应的代码.简单的交互和提交常用的交互,很容易的网上找到相应的代码.一些复杂的交互.定制行比较强的交互,网上找代码就有些困难的.所有复杂交互都是简单交互的组成,所以搜索别人的代码是以学习为主,把别人的基础方法掌握了.拿到需求就不必要到网上搜代码,这样永远也不能提升自己的能力. 业余时间写的…
今天我们来看看如何让拖拽的物体不能拖出某个div之外和拖拽的吸附功能 上次讲到我们的拖拽是不可拖出可视区范围的,在这基础上我们加个父级的div,不让他拖出父级.原理和之前的一样,简单吧. <div id="div2"> <div id="div1"> </div> </div> <style type="text/css"> #div1 { width: 100px; height: 1…
第一步 首先简单分析下需求吧,我们就是想实现鼠标拖拽带颜色的方块时,让方块停留在鼠标松开的位置,需要计算的就是拖拽前的坐标和拖拽后的坐标,鼠标移动后相对于原位置的偏移量=目标元素的偏移量,根据这个等式和几个属性实现拖拽(下面会介绍到这几个属性,莫急哈,后面还会遇到一个小问题,一会详细描述),鼠标的状态事件有三种,鼠标按下时的事件(mousedown),鼠标移动时的事件(mousemove),鼠标松开时的事件(mouseup) 第二部 这里就是撸代码了,首先新建一个html页面 <!DOCTYPE…
我们看看之前的拖拽在周围有东西的时候会出现什么问题? 在高级浏览器中不会有啥问题,我们放到IE7下面测试一下,问题就出来了.如图 我们可以很清楚的看到,文字都已经被选中了.那这个用户体验很不好,用起来也不方便.顺便提一下,我们之前加了一个return false;帮我们解决了很多问题,如果去掉这个的话,chrome也会出现一样的问题.那么也就是说这个return false;可以解决chrome ff IE9+ 这些浏览器的问题. 实际上在我们开发中,页面上会有许多的元素组成,不可能就一个div…
今天我们就来解决上一次拖拽雏形中的一些问题.下面看看有哪些问题? 附上上期的Javascript代码,方便大家查看问题. <script type="text/javascript"> window.onload = function() { var oDiv = document.getElementById("div1"); var disX = 0; var disY = 0; oDiv.onmousedown = function(ev) { v…
拖拽,是JS经常会用到的效果,在网上有很多的这样那样的拖拽效果,但其中往往大多有各种各养的问题,功能不全,无法兼容,而且修改的时候 也是十分麻烦. 其实拖拽的原理很简单,无非是鼠标的三个动作的解析,以及对事件控制的理解.在此去繁化简,还原原汁原味的最易理解的拖拽原理. 实现鼠标需要三个事件,其实所以的拖拽都是围绕着 onmousedown(点击) onmousemove (移动) onmouseup( 松开),然后是一个最简单事件捕获,IE中位setCapture()方法 -----IE自身独有…
在Android4.0源码自带的Launcher中,拖拽是由DragController进行控制的. 1) 先来看看类之间的继承关系 2)再来看看Launcher拖拽流程的时序图   1.基本流程: 相应的View在检测到用户操作后进行判断,若可以触发拖拽,则设置自身的相应状态,然后将待拖拽对象的Bitmap对象.当前位置.拖拽源.待拖拽对象等信息传给DragController的startDrag方法启动拖拽. 接下来,DragLayer的onInterceptTouchEvent拦截触屏事件…
拖拽的原理: 其实就是鼠标与左上角的距离保持不变.我们来看下图, 这红点就是鼠标. 拖拽拖拽实际上来说就是通过鼠标的位置来计算物体的位置,就是这么简单,就是这么任性. 那这个距离怎么求呢?? 鼠标的位置-物体位置的差值就是那个距离 是吧.那这个斜线就是横线和竖线组成的. 我们距离看下程序怎么做. <div id="div1"> </div> 实际上他改的就是某个div 的left top ,那他就动起来了. 那样式中肯定要有绝对定位是吧. <style t…
拖拽功能主要是用在让用户做一些自定义的动作,比如拖动排序,弹出框拖动移动等等,效果还是蛮不错的.下面讲解一下拖拽的原理,希望可以帮助到有需要的朋友! 一.拖拽的流程动作①鼠标按下②鼠标移动③鼠标松开 二.拖拽流程中对应的JS事件①鼠标按下会触发onmousedown事件 obj.onmousedown = function(e) { //.......... } ②鼠标移动会触发onmousemove事件 obj.onmousemove = function(e) { //...... } ③鼠…
拖拽的原理onmousedown 选择元素onmousemove 移动元素onmouseup 释放元素 1:如果拖拽的时候有文字:被选中,会产生问题原因:当鼠标按下的时如果页面中有文字或者图片被选中的时候,则会发生文字默认可以被拖动,因此标准 :e.preventDefalut(); 阻止他的默认行为 非标准的阻止默认行为 非标准:window.event.returnValue=false; 2:给某元素设置全局捕获,当我们给一个元素设置全局捕获,那么这个元素会监听后续发生的所有事件,当有事件…