Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>RxJS</title>
</head>
<body>
    <div class="container">
        <div id="box"><span>Drag Me</span></div>
    </div>
    <script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/gsap/1.11.7/TweenMax.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/rxjs/2.3.22/rx.all.js"></script>
</body>
</html>
 
$box = $('#box')
mouseup_events = Rx.Observable.fromEvent($box, 'mouseup')
mousemove_events = Rx.Observable.fromEvent(document, 'mousemove')
mousedown_events = Rx.Observable.fromEvent($box, 'mousedown')
source = mousedown_events.flatMap (event)->
    start_pageX = event.pageX
    start_pageY = event.pageY
    start_left = parseInt($box.css('left'))
    start_top = parseInt($box.css('top'))
    $box.addClass('hovering')
    mousemove_events.map (e)->
        return {
        left: start_left + (e.pageX - start_pageX)
        top: start_top + (e.pageY - start_pageY)
        }
    .takeUntil(mouseup_events)
mouseup_events.subscribe -> $box.removeClass('hovering')
source.subscribe (pos)-> TweenLite.set($box, left: pos.left, top: pos.top)
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
xipxpro
0viewers