一個隨意改變形狀JS插件:interact.js

jopen 10年前發布 | 29K 次閱讀 前端技術 interact.js

一個隨意改變形狀JS插件:interact.js
interact.js是一個隨意改變形狀插件,它非常強大的,靈活拖放,改變大小,支持現代瀏覽器的多點觸摸手勢,基于SVG的運用,能運行在包括在IE8+的瀏覽器.

  • inertia
  • snapping to a grid, custom anchors or paths.
  • cross browser and device, supporting the desktop and mobile versions of Chrome, Firefox and Opera as well as Internet Explorer 8+
  • interaction with SVG elements
  • being lightweight and standalone (not yet another jQuery plugin)
  • not modifying anything it doesn't own (except to support IE8 and to change the cursor (but you can disable that))
  • </ul>

    示例:

    var // x and y to keep the position that's been dragged to
        x = 0,
        y = 0,
        // vendor prefixes (prefices?)
        transformProp = 'transform' in document.body.style?
                    'transform': 'webkitTransform' in document.body.style?
                        'webkitTransform': 'mozTransform' in document.body.style?
                            'mozTransform': 'oTransform' in document.body.style?
                                'oTransform': 'msTransform';
    
    // make an Interactable of the document body element
    interact(document.body)
        // make a draggable of the Interactable
        .draggable({
            // on(drag)move
            // could also have done interact(document.body).draggable(true).ondragmove = function...
            onmove: function (event) {
                x += event.dx;
                y += event.dy;
    
                // translate the document body by the change in pointer position
                document.body.style[transformProp] = 'translate(' + x + 'px, ' + y + 'px)';
            }
        })
        // you should really add listeners like this if you want to add multiple listeners
        .on('dragend', function (event) {
            console.log('dragged a distance of ' + 
                Math.sqrt(event.dx*event.dx + event.dy*event.dy) + 
                ' pixels to ' + event.pageX + ', ' + event.pageY);
        })
        // allow inertia throwing
        .inertia({
            resistance: 15,
            zeroResumeDelta: true
        })
        // snap to the corners of the specified grid
        .snap({
            mode: 'grid',
            grid: {
                x: 100,
                y: 5
            },
            gridOffset: {
                x: 20,
                y: 10
            },
            range: Infinity // can also use -1 which gets changed to Infinity
        });
    
    
    // you can also listen to InteractEvents for every Interactable
    interact.on('dragstart', function (event) {
        console.log('starting drag from ' + event.x0 + ', ' + event.y0);
    });

    項目主頁:http://www.baiduhome.net/lib/view/home/1417057975159

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!