zoukankan      html  css  js  c++  java
  • jquery拖拽(最浅显易懂的分析)

    如何实现一个可以拖拽的div?

    其实很简单,我们捋清思路,很快便能实现。

    首先div的拖拽,如果把div当作一件物品,我们拖拽的时候是因为手抓住了这件物品,因此我们走到哪里,东西就到了哪里。

    但是鼠标是没有办法抓住div的,写代码不会那么直来直去,有时候像魔术,需要使用一些障眼法,使最终看起来达到了效果。

    抛开过程不谈,只看结果,拖拽实现的最终效果是,鼠标到哪里,div就跟到哪里

    知道了这一点,那就继续分析,这不就是位移的问题嘛。你往前走1m,我就往前走1m,你往后退多少我也往后退多少,上下左右都一样。

    这里边存在一个问题,那就是距离,二者的距离始终都是固定的。

    还有一个问题,什么样的div才能 自由移动?必须是具有position定位的div,并且不是static

    那么css可以这样写:

    div {
           position: absolute;
           top: 0;
           left: 0;
           width: 100px;
           height: 100px;
           background-color: red;
         }

    既然是拖拽div,那么鼠标必须放在div上拖拽才有用,js得这样:

    $('div').mousedown(function(e) {
           //鼠标在div上按下的时候,记录div的位置
    var divPosition = $(this).offset();
           //鼠标与div在x轴的距离
    var distanceX = e.pageX - divPosition.left
           //鼠标与div在y轴的距离
    var distanceY = e.pageY - divPosition.top
            //鼠标开始移动了 $(document).mousemove(
    function(e) {
              //鼠标的位置减去与div的固定距离,就是div需要移动的位置
    var x = e.pageX - distanceX var y = e.pageY - distanceY
              //给div设置位移 $(
    'div').css({ left: x + 'px', top: y + 'px' }) })
            //鼠标抬起,取消mousemove事件,拖拽失效 $(document).mouseup(
    function() { $(document).off('mousemove') }) })
  • 相关阅读:
    C++中的名字重整技术
    Linux下C++开发常用命令
    《Effective C++(第三版)》 的55条建议
    我也介绍下sizeof与strlen的区别
    POJ
    HDU
    HDU-1754-I Hate It(单点更新+区间查询)
    HDU多校1003-Divide the Stones(构造)
    Just an Old Puzzle(2019多校1007)
    Idiomatic Phrases Game(最短路+注意坑点)
  • 原文地址:https://www.cnblogs.com/pixelk/p/7395829.html
Copyright © 2011-2022 走看看