요소를 대각선으로 / 경로에서 드래그 할 수 있도록 만들기

rickey.minor

다음과 같이 jQuery UI를 사용하기 전에 요소를 직선 경로에서 드래그 할 수 있고 축에 고정했습니다.

$('#element').draggable({
    axis:'y'
});

그러나 본질적으로 드래그 가능한 선인 특정 경로를 따라 가면서 요소를 드래그 할 수있게 만드는 방법이 궁금합니다.

기본적으로 시작 부분에 요소의 스타일 / 위치가 하나 있고 끝 위치의 다른 스타일 / 위치가 있으며이 두 위치 사이의 경로를 따라 드래그 할 수 있기를 원합니다.

javascript 또는 jQuery로 어떻게 할 수 있습니까?

Derek I know kung fu

나는 jQuery가 그런 종류의 기능을 제공한다고 생각하지 않는다. 그러나 순수한 자바 스크립트로 할 수도 있고 내가 만든이 플러그인을 사용할 수도 있습니다.

$.fn.dragBetween = function(eles) {
    var dragEle = this,
        md = false, offset, a, b, ab;
    eles[0] = $(eles[0])[0];
    eles[1] = $(eles[1])[0];
    dragEle.on("mousedown", function(e) {
        if (e.which == 1) {
            mD = true;
            offset = new Vector(
                e.clientX - this.offsetLeft,
                e.clientY - this.offsetTop
            );
            a = new Vector(eles[0].offsetLeft, eles[0].offsetTop);
            b = new Vector(eles[1].offsetLeft, eles[1].offsetTop);
            ab = b.sub(a);
        }
    });
    $(window).on("mousemove", function(e) {
        if (!mD) return false;

        var cursor = new Vector(e.clientX, e.clientY).sub(offset).sub(a),
            mag = cursor.dot(ab) / ab.dot(ab),
            proj = ab.times(Math.max(0, Math.min(1, mag)));
        var final = proj.add(a);
        dragEle.css({
            top: final._arr[1],
            left: final._arr[0]
        });
        e.preventDefault();
    }).mouseup(function() {
        mD = false;
    });
};

그리고 이것은 Vector내가 서둘러 쓴 수업입니다.

function Vector(x, y) {
    this._arr = [x, y];
}
Vector.prototype.dot = function(v2) {
    var v1 = this;
    return v1._arr[0] * v2._arr[0] + v1._arr[1] * v2._arr[1];
}
Vector.prototype.add = function(v2) {
    var v1 = this;
    return new Vector(v1._arr[0] + v2._arr[0], v1._arr[1] + v2._arr[1]);
}
Vector.prototype.sub = function(v2) {
    var v1 = this;
    return new Vector(v1._arr[0] - v2._arr[0], v1._arr[1] - v2._arr[1]);
}
Vector.prototype.times = function(n) {
    var v = this;
    return new Vector(v._arr[0] * n, v._arr[1] * n);
}

호출하려면 다음을 수행하십시오.

$("#drag").dragBetween(["#a", "#b"]);

데모 : http://jsfiddle.net/DerekL/0j6e60d8/
공식 설명은 https://www.desmos.com/calculator/tpegbbk8gt를 참조하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

toggleClass 후 요소를 드래그 할 수 있도록 만들기

분류에서Dev

Delphi : 구성 요소에서 창을 드래그 할 수 있도록 만들기

분류에서Dev

서버에서로드 할 때 Unity에서 Texture2D를 읽을 수 있도록 만들기

분류에서Dev

KineticJS : 드롭 된 요소를 Kinetic.Group으로 드래그 할 수 있도록합니다.

분류에서Dev

동적으로 추가 된 목록 요소를 jquery에서 드래그 할 수있게 만드는 방법은 무엇입니까?

분류에서Dev

모델 자체를 JSON으로 변환 할 수 있도록 만들기

분류에서Dev

패널 바를 각도로 드래그 할 수있게 만드는 방법

분류에서Dev

Python에서 소켓 서버에 모든 속성 및 메서드를 사용할 수 있도록 만들기

분류에서Dev

두 선 사이에 어떤 각도로 선을 그릴 수 있습니까? 나중에 선을 드래그하여 각도를 변경할 수 있습니다.

분류에서Dev

고정 div를 가로로 스크롤 할 수 있도록 만들기

분류에서Dev

구성 요소가 둘 이상의 분할을 포함 할 수 있도록 Angular에서 그리드 시스템을 만들기위한 아이디어

분류에서Dev

내 MVC 비동기 컨트롤러 메서드를 비동기로 만들어 동시에 처리 할 수 있도록합니다.

분류에서Dev

iPhone에서 glyphicon 요소를 프로그래밍 방식으로 어떻게 변경할 수 있습니까?

분류에서Dev

Google지도 V3에서 사용자 지정 오버레이를 드래그 할 수 있도록 만들 수 있습니까?

분류에서Dev

소스 코드없이 Android 테스트 프로젝트를 사용할 수 있도록합니다 ( "테스트 프로젝트의 APK 만들기").

분류에서Dev

angularjs에서 새로 만들기를 클릭하면 사용할 수 있도록 텍스트 상자가 변경되었습니다.

분류에서Dev

각도기의 드롭 다운 목록에서 숨겨진 요소를 선택할 수 없습니다.

분류에서Dev

LaTeX에서 회고록 클래스를 사용할 때 어떻게 참조를 기본 장 대신 섹션으로 만들 수 있습니까?

분류에서Dev

에디터에서 드래그 할 수 있도록 프리 팹에 대한 필드를 어떻게 선언 할 수 있습니까?

분류에서Dev

웹 구성 요소에서 프로그래밍 방식으로 요소를 슬롯 할 수 있습니까?

분류에서Dev

여러 변수로 Like 쿼리 만들기. 쿼리를 더 짧게 만들 수 있도록 도와주세요.

분류에서Dev

어떻게 프로그래밍 방식으로 숫자 필드를 Graylog에 기록 할 수 있습니까?

분류에서Dev

목록보기를 스크롤 할 수 없게 만들거나 목록보기를 스크롤보기에서 세로로 확장하도록 만들기

분류에서Dev

속성을 기반으로 목록에서 파이썬 객체를 인덱싱 할 수 있도록 클래스 메서드 오버로딩

분류에서Dev

Logstash-데이터를 기반으로 로그를 전달하지 않도록 선택할 수 있습니까?

분류에서Dev

사용자 지정 클래스를 LINQ 쿼리에 사용할 수 있도록 만들기

분류에서Dev

iPhone에서 프로그래밍 방식으로 시스템 경고음을 재생하는 방법 리소스를 번들로 추가하지 않고도 시스템 사운드를 재생할 수 있습니까?

분류에서Dev

Scala에서 인접한 배열 요소를 교체하도록 코드를 개선 할 수 있습니까?

분류에서Dev

각도 구성 요소 선택기를 해당 구성 요소의 속성으로 사용할 수 있습니까?

Related 관련 기사

  1. 1

    toggleClass 후 요소를 드래그 할 수 있도록 만들기

  2. 2

    Delphi : 구성 요소에서 창을 드래그 할 수 있도록 만들기

  3. 3

    서버에서로드 할 때 Unity에서 Texture2D를 읽을 수 있도록 만들기

  4. 4

    KineticJS : 드롭 된 요소를 Kinetic.Group으로 드래그 할 수 있도록합니다.

  5. 5

    동적으로 추가 된 목록 요소를 jquery에서 드래그 할 수있게 만드는 방법은 무엇입니까?

  6. 6

    모델 자체를 JSON으로 변환 할 수 있도록 만들기

  7. 7

    패널 바를 각도로 드래그 할 수있게 만드는 방법

  8. 8

    Python에서 소켓 서버에 모든 속성 및 메서드를 사용할 수 있도록 만들기

  9. 9

    두 선 사이에 어떤 각도로 선을 그릴 수 있습니까? 나중에 선을 드래그하여 각도를 변경할 수 있습니다.

  10. 10

    고정 div를 가로로 스크롤 할 수 있도록 만들기

  11. 11

    구성 요소가 둘 이상의 분할을 포함 할 수 있도록 Angular에서 그리드 시스템을 만들기위한 아이디어

  12. 12

    내 MVC 비동기 컨트롤러 메서드를 비동기로 만들어 동시에 처리 할 수 있도록합니다.

  13. 13

    iPhone에서 glyphicon 요소를 프로그래밍 방식으로 어떻게 변경할 수 있습니까?

  14. 14

    Google지도 V3에서 사용자 지정 오버레이를 드래그 할 수 있도록 만들 수 있습니까?

  15. 15

    소스 코드없이 Android 테스트 프로젝트를 사용할 수 있도록합니다 ( "테스트 프로젝트의 APK 만들기").

  16. 16

    angularjs에서 새로 만들기를 클릭하면 사용할 수 있도록 텍스트 상자가 변경되었습니다.

  17. 17

    각도기의 드롭 다운 목록에서 숨겨진 요소를 선택할 수 없습니다.

  18. 18

    LaTeX에서 회고록 클래스를 사용할 때 어떻게 참조를 기본 장 대신 섹션으로 만들 수 있습니까?

  19. 19

    에디터에서 드래그 할 수 있도록 프리 팹에 대한 필드를 어떻게 선언 할 수 있습니까?

  20. 20

    웹 구성 요소에서 프로그래밍 방식으로 요소를 슬롯 할 수 있습니까?

  21. 21

    여러 변수로 Like 쿼리 만들기. 쿼리를 더 짧게 만들 수 있도록 도와주세요.

  22. 22

    어떻게 프로그래밍 방식으로 숫자 필드를 Graylog에 기록 할 수 있습니까?

  23. 23

    목록보기를 스크롤 할 수 없게 만들거나 목록보기를 스크롤보기에서 세로로 확장하도록 만들기

  24. 24

    속성을 기반으로 목록에서 파이썬 객체를 인덱싱 할 수 있도록 클래스 메서드 오버로딩

  25. 25

    Logstash-데이터를 기반으로 로그를 전달하지 않도록 선택할 수 있습니까?

  26. 26

    사용자 지정 클래스를 LINQ 쿼리에 사용할 수 있도록 만들기

  27. 27

    iPhone에서 프로그래밍 방식으로 시스템 경고음을 재생하는 방법 리소스를 번들로 추가하지 않고도 시스템 사운드를 재생할 수 있습니까?

  28. 28

    Scala에서 인접한 배열 요소를 교체하도록 코드를 개선 할 수 있습니까?

  29. 29

    각도 구성 요소 선택기를 해당 구성 요소의 속성으로 사용할 수 있습니까?

뜨겁다태그

보관