draggabilly一款功能强大的拖动拖拽元素插件

draggabilly一款功能强大的拖动拖拽元素插件:http://download.csdn.net/detail/cometwo/9411895

支持移动触摸设备的纯js元素拖放插件 :http://download.csdn.net/detail/cometwo/9411907

:“`

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>draggabilly一款功能强大的拖动拖拽元素插件|DEMO_爱编程w2bc.com</title>
    <link rel="stylesheet" type="text/css" href="css/normalize.css" />
    <link rel="stylesheet" type="text/css" href="css/default.css">
    <script type="text/javascript" src="js/jquery-2.1.4.min.js"></script>
    <script type="text/javascript" src="js/draggabilly.pkgd.min.js"></script>
    <style type="text/css">
        .box {
            position: relative;
            background: #fa0;
            border-radius: 10px;
            z-index: 10;
            margin: 0 auto;
        }

        .box:hover {
            cursor: move;
        }

        .box.is-pointer-down {
            background: #09F;
        }

        .box.is-dragging {
            opacity: 0.7;
        }

        .box-1 {
            width: 150px;
            height: 150px;
        }

        .box-2 {
            width: 200px;
            height: 100px;
        }

        .box-3 {
            width: 150px;
            height: 150px;
        }

        .box-4 {
            width: 150px;
            height: 150px;
            padding: 20px;
        }

        .total-centered {
            position: absolute;
            width: 100%;
            top: 50%;
            text-align: center;
            -webkit-transform: translateY(-50%);
            -moz-transform: translateY(-50%);
            -ms-transform: translateY(-50%);
            -o-transform: translateY(-50%);
            transform: translateY(-50%);
        }

        .container {
            padding: 10px;
            border: 5px solid #F90;
            width: 800px;
            height: 200px;
            border-radius: 10px;
            margin: 0 auto;
        }

        .draggable {
            width: 140px;
            height: 140px;
            background: #F90;
            border-radius: 10px;
            margin: 0 10px 10px 0;
            float: left;
        }

        .draggable.is-pointer-down {
            background: #09F;
            z-index: 12;
            /* above other draggies */
        }

        .handle {
            background: #555;
            background: hsla(0, 0%, 0%, 0.4);
            width: 60px;
            height: 60px;
            border-radius: 5px;
        }
    </style>
    <!--[if IE]>
    <script src="http://libs.useso.com/js/html5shiv/3.7/html5shiv.min.js"></script>
<![endif]-->
</head>

<body>
    <article class="htmleaf-container">

        <div class="htmleaf-content">
            <h3>下面的矩形可以任意拖动。</h3>
            <div class="box box-1" id="draggable1">
                <div class="total-centered">Drap me</div>
            </div>
            <h3>下面的矩形只能在X轴上拖动。</h3>
            <div class="box box-2" id="draggable2">
                <div class="total-centered">axis:'x'</div>
            </div>
            <h3>下面的矩形只能在父容器中移动。</h3>
            <div class="container">
                <div class="draggable"></div>
                <div class="draggable"></div>
                <div class="draggable"></div>
            </div>
            <h3>以网格的方式拖动。</h3>
            <div class="box box-3" id="draggable3">
                <div class="total-centered">grid[x,y]</div>
            </div>
            <h3>指定拖动交互元素(只有内部小方块区域可以进行拖动)。</h3>
            <div class="box box-4" id="draggable4">
                <div class="handle"></div>
            </div>
        </div>
    </article>

    <!--<script>
        window.jQuery || document.write('<script src="js/jquery-2.1.1.min.js"><\/script>')
    </script>
    -->
    <script type="text/javascript">
        $(function() {
            $('#draggable1').draggabilly();
            $('#draggable2').draggabilly({
                axis: 'x'
            });
            $('.draggable').draggabilly({
                containment: true
            });
            $('#draggable3').draggabilly({
                grid: [100, 100]
            });
            $('#draggable4').draggabilly({
                handle: '.handle'
            });
        });
    </script>
</body>

“`



draggabilly是一款功能强大的网页元素拖动拖拽插件。该元素拖拽插件可以和jQuery结合使用,也可以以纯js的方式使用。它提供了强大的拖拽元素的能力,并且可以支持IE8浏览器和移动触摸设备。

使用方法
安装
可以通过bower或npm来安装该draggabilly插件。

bower install draggabilly
npm install draggabilly

作为jQuery插件来使用
var draggable=(‘.draggable’).draggabilly({
// options…
})

通过纯JS来初始化该拖动元素插件
var elem = document.querySelector(‘.draggable’);
var draggie = new Draggabilly( elem, {
// options…
});

// or pass in selector string as first argument
var draggie = new Draggabilly( ‘.draggable’, {
// options…
});

// if you have multiple .draggable elements
// get all draggie elements
var draggableElems = document.querySelectorAll(‘.draggable’);
// array of Draggabillies
var draggies = []
// init Draggabillies
for ( var i=0, len = draggableElems.length; i < len; i++ ) {
var draggableElem = draggableElems[i];
var draggie = new Draggabilly( draggableElem, {
// options…
});
draggies.push( draggie );
}

CSS样式
插件在拖动元素的时候会附加两个class类:

.is-pointer-down:当用户第一次点击元素(mouse, touch, pointer)是添加的class。
.is-dragging:当元素开始拖动的时候添加的class。
配置参数
axis:类型:String,可用值:’x’ 或 ‘y’。约束元素只能在X或Y轴移动。
containment:类型:Element,Selector String或Boolean。约束元素只能在指定的容器中拖动。如果设置为true,那么约束容器就是该元素的父元素。
grid:类型:Array,可用值:[ x, y ]。元素拖动是会以网格的方式进行吸附。
handle:类型:Selector String。指定拖动交互的元素。
事件
通过jQuery来绑定事件
可以通过标准的jQuery事件:.on(),.off(),.one()来绑定事件,在事件内部,this引用就是Draggabilly元素。

// jQuery
function listener(/* parameters */) {
// 获取Draggabilly对象实例
var draggie = (this).data(‘draggabilly’);  
  console.log( ‘eventName happened’, draggie.position.x, draggie.position.y );  
}  
// 绑定事件监听draggable.on( ‘eventName’, listener );
// 移除事件监听
draggable.off(‘eventName′,listener);//只绑定一次事件,注意是ONCE,而不是ONE或ONdraggable.one( ‘eventName’, function() {
console.log(‘eventName happened just once’);
});

通过纯JS来绑定事件
也可以通过纯JS使用.on(),.off(),.one()方法来绑定事件,在事件内部,this引用就是Draggabilly元素。

// vanilla JS
function listener(/* parameters */) {
console.log( ‘eventName happened’, this.position.x, this.position.y );
}
// 绑定事件监听
draggie.on( ‘eventName’, listener );
// 移除事件监听
draggie.off( ‘eventName’, listener );
// 只绑定一次事件,注意是ONCE,而不是ONE或ON
draggie.once( ‘eventName’, function() {
console.log(‘eventName happened just once’);
});

dragStart
在拖动开始,元素移动的时候触发。

// jQuery
$draggable.on( ‘dragStart’, function( event, pointer ) {…})
// vanilla JS
draggie.on( ‘dragStart’, function( event, pointer ) {…})

event:类型:Event。原生的mousedown或touchstart事件。
pointer:类型:MouseEvent或Touch。有.pageX和.pageY的事件对象。
dragMove
在拖拽元素移动的时候触发。

// jQuery
$draggable.on( ‘dragMove’, function( event, pointer, moveVector ) {…})
// vanilla JS
draggie.on( ‘dragMove’, function( event, pointer, moveVector ) {…})

event:类型:Event。原生的mousemove或touchmove事件。
pointer:类型:MouseEvent或Touch。有.pageX和.pageY的事件对象。
moveVector:类型:Object。鼠标指针移动到距离开始移动位置有多远:{ x: 20, y: -30 }。
dragEnd
当元素拖动结束的时候触发。

// jQuery
$draggable.on( ‘dragEnd’, function( event, pointer ) {…})
// vanilla JS
draggie.on( ‘dragEnd’, function( event, pointer ) {…})

event:类型:Event。原生的mouseup或touchend事件。
pointer:类型:MouseEvent或Touch。有.pageX和.pageY的事件对象。
pointerDown
当用户指针(mouse, touch, pointer)被按下的时候触发。

// jQuery
$draggable.on( ‘pointerDown’, function( event, pointer ) {…})
// vanilla JS
draggie.on( ‘pointerDown’, function( event, pointer ) {…})

event:类型:Event。原生的mousedown或touchstart事件。
pointer:类型:MouseEvent或Touch。有.pageX和.pageY的事件对象。
pointerMove
当用户指针移动的时候触发。

// jQuery
$draggable.on( ‘pointerMove’, function( event, pointer, moveVector ) {…})
// vanilla JS
draggie.on( ‘pointerMove’, function( event, pointer, moveVector ) {…})

event:类型:Event。原生的mousemove或touchmove事件。
pointer:类型:MouseEvent或Touch。有.pageX和.pageY的事件对象。
moveVector:类型:Object。鼠标指针移动到距离开始移动位置有多远:{ x: 20, y: -30 }。
pointerUp
当用户指针被松开的时候触发。

// jQuery
$draggable.on( ‘pointerUp’, function( event, pointer ) {…})
// vanilla JS
draggie.on( ‘pointerUp’, function( event, pointer ) {…})

event:类型:Event。原生的mouseup或touchend事件。
pointer:类型:MouseEvent或Touch。有.pageX和.pageY的事件对象。
staticClick
在用户指针被按下不松开,并且没有移动的时候触发。

// jQuery
$draggable.on( ‘staticClick’, function( event, pointer ) {…})
// vanilla JS
draggie.on( ‘staticClick’, function( event, pointer ) {…})

event:类型:Event。原生的mouseup或touchend事件。
pointer:类型:MouseEvent或Touch。有.pageX和.pageY的事件对象。
方法
disable

// jQuery
$draggable.draggabilly(‘disable’)
// vanilla JS
draggie.disable()

enable

// jQuery
$draggable.draggabilly(‘enable’)
// vanilla JS
draggie.enable()

destroy

// jQuery
$draggable.draggabilly(‘destroy’)
// vanilla JS
draggie.destroy()

jQuery.fn.data(‘draggabilly’):从jQuery对象中获取Draggabilly实例。

var draggie = $(‘.draggable’).data(‘draggabilly’)
// access Draggabilly PRoperties
console.log( ‘draggie at ’ + draggie.position.x + ‘, ’ + draggie.position.y )

Draggabilly官方主页:http://draggabilly.desandro.com/

时间: 2024-10-31 15:25:59

draggabilly一款功能强大的拖动拖拽元素插件的相关文章

jQuery拖拽排序插件制作拖拽排序效果(附源码下载)_jquery

使用jquery拖拽排序插件制作拖拽排序效果是一款非常实用的鼠标拖拽布局插件.效果图如下: 效果演示         源码下载 html代码: <h1>水平拖拽</h1> <div class="demo"> <div class="item item1"><span>1</span></div> <div class="item item2"><

招财猫进销存软件领衔 盘点五款功能强大的进销存管理软件

中介交易 SEO诊断 淘宝客 云主机 技术大厅 目前大多数中小型企业面临一个问题,就是产品内部管理这块,特别是一到销售旺季或者节假日促销,商品的品种太多,记不清型号,规格等,让人手忙脚乱,工作效率也提不上来.而随着店内会员的增多,会员促销如何实施?针对这一系列问题,小编接下来盘点国内五款功能强大的进销存管理软件,其中招财猫进销存软件已经成为进销存软件市场的领航者,市场占有率遥遥领先. Top1.招财猫进销存软件 招财猫通用版界面截图 招财猫进销存管理软件,专注于中小企业进销存管理,并针对每个行业

jQuery实现拖拽效果插件的方法

 这篇文章主要介绍了jQuery实现拖拽效果插件的方法,较为详细的分析了jQuery拖拽效果的实现技巧,需要的朋友可以参考下     本文实例讲述了jQuery实现拖拽效果插件的方法.分享给大家供大家参考.具体如下: 下面的jQuery插件允许你通过鼠标右键点击拖动overflow的元素,这个插件可以在移动设备上运行 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3

jQuery实现拖拽效果插件的方法_jquery

本文实例讲述了jQuery实现拖拽效果插件的方法.分享给大家供大家参考.具体如下: 下面的jQuery插件允许你通过鼠标右键点击拖动overflow的元素,这个插件可以在移动设备上运行 /** * jQuery Drag and Scroll * * Copyright (c) 2012 Ryan Naddy (ryannaddy.com) * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/li

JavaScript实现拖拽元素对齐到网格(每次移动固定距离)_javascript技巧

这几天在做一个拖拽元素的附加功能,就是对齐到网格,实际上就是确定好元素的初始位置,然后拖拽元素时,每次移动固定的距离.让元素都可以在网格内对齐.先上效果图,然后在详细说明一下细节问题 做了一个gif图,可以看到,每次元素的移动都是按照最小单位距离移动的.且每次元素都是对齐到网格的. 先根据demo说明一下思路和细节,后面会给出demo代码. 1. 确定元素的每次移动的最小单位(demo中为10px和10px),也就是每次水平或垂直的位移量都是10px.铺上一层网格背景是为了帮助我们更好的看到效果

javascript拖动(拖拽)之我见 - 简约版

javascript RT,拖动可能是时下比较流行的一个js效果之一,在感叹创造者的神奇之外,我怀作好奇,也来尝试了一把(当然,是在欣赏了不少拖动代码的基础上,并妄想通过最简单的办法实现). 其实,拖动特效可以由3个主要部分组成,开始拖动,拖动,结束拖动. 哎,不说这么多了(摄影的朋友肯定要说, 怎么还不上图了...呵呵),好,我就来点代码吧. 开始拖动之前,先上2个简单的工具方法:  1   var  Utils  =    { 2     " getTarget " : funct

JQuery拖拽元素改变大小尺寸实现代码_jquery

"元素拖拽改变大小"其实和"元素拖拽"一个原理,只是所动态改变的对象不同而已,主要在于 top.left.width.height 的运用,相对实现起来也非常容易.以下附出源码原型,弄明白了原理再扩展其他实际应用,思路就变得简单.清晰得多了 下面是 JavaScript Code 复制代码 代码如下: <script type="text/javascript"> /* * jQuery.Resize by wuxinxi007 *

基于jquery实现的鼠标拖拽元素复制并写入效果_jquery

直接上代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-eq

jquery 拖拽排序插件Sortable使用方法

Sortable是一个独立的JS插件,不需要jquery,Sortable非常轻量,压缩后只有2KB,适用现代浏览器与移动设备.使用Sortable可以轻松实现鼠标拖拽排序,让用户操作更方便,具有极强的体验性. 特点 支持触摸设备和现代浏览器 使用本地化HTML5 API拖拽 简单的API 轻量级的,压缩只有2 kb 无需jQuery 使用方法 引入核心文件Sortable <script src="Sortable.js"></script> 构建html,不