能拖动的list-------JS

以下只作为自己的笔迹记录

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title></title>

    <style type="text/css">

        *{ margin: 0; padding: 0;  -moz-user-select:none;}

        ul{ margin: 100px; border: 1px solid #adff2f; list-style: none;}

        li{ height: 30px; line-height: 30px; padding: 0; list-style: none;}

        li:hover{ background: #bdb76b; cursor: move;}

    </style>

</head>

<body>

<ul id="outer_wrap">

    <li>test1</li>

    <li>test2</li>

<li>test3</li>

<li>test4</li>

<li>test5</li>

<li>test6</li>

<li>test6</li>

<li>test7</li>

<li>test8</li>

<li>test9</li>

<li>test11</li>

<li>test12</li>

<li>test14</li>

<li>test13</li>

<li>test15</li>

</ul>

<script type="text/javascript">

    function $(id){

        return document.getElementById(id);

    }

 

function getMousePos(e){

        return {

            x : e.pageX || e.clientX + document.body.scrollLeft,

            y : e.pageY || e.clientY + document.body.scrollTop

        }

    }

 

function getElementPos(el){

        return {

            x : el.offsetParent ? el.offsetLeft + arguments.callee(el.offsetParent)['x'] : el.offsetLeft,

            y : el.offsetParent ? el.offsetTop + arguments.callee(el.offsetParent)['y'] : el.offsetTop

        }

    }

 

function getElementSize(el){

        return {

            width : el.offsetWidth,

            height : el.offsetHeight

        }

    }

 

    document.onselectstart = function(){

        return false;

    }

 

var MOVE = {};

    MOVE.isMove = false;

 

 

var div = document.createElement('div');

    div.style.width  = '400px';

    div.style.height = '1px';

    div.style.fontSize = '0';

    div.style.background = 'red';

 

    var outer_wrap = $('outer_wrap');

    outer_wrap.onmousedown = function(event){

 

var lis = outer_wrap.getElementsByTagName('li');

        for(var i = 0; i < lis.length; i++){

            lis[i]['pos']  = getElementPos(lis[i]);

            lis[i]['size'] = getElementSize(lis[i]);

        }

        event = event || window.event;

        var t = event.target || event.srcElement;

        if(t.tagName.toLowerCase() == 'li'){

            var p = getMousePos(event);

            var el = t.cloneNode(true);

            el.style.position = 'absolute';

            el.style.left = t.pos.x + 'px';

            el.style.top  = t.pos.y + 'px';

            el.style.width   = t.size.width + 'px';

            el.style.height  = t.size.height + 'px';

            el.style.border  = '1px solid #d4d4d4';

            el.style.background = '#d4d4d4';

            el.style.opacity = '0.7';

            document.body.appendChild(el);

 

            document.onmousemove = function(event){

                event = event || window.event;

                var current = getMousePos(event);

                el.style.left =t.pos.x + current.x - p.x + 'px';

                el.style.top  =t.pos.y + current.y - p.y+ 'px';

                document.body.style.cursor = 'move';

 

 

for(var i = 0; i < lis.length; i++){

                    if(current.x > lis[i]['pos']['x'] && current.x < lis[i]['pos']['x'] + lis[i]['size']['width'] && current.y > lis[i]['pos']['y'] && current.y < lis[i]['pos']['y'] + lis[i]['size']['height']/2){

if(t != lis[i]){

                            MOVE.isMove = true;

                            outer_wrap.insertBefore(div,lis[i]);

                        }

 

                    }else if(current.x > lis[i]['pos']['x'] && current.x < lis[i]['pos']['x'] + lis[i]['size']['width'] && current.y > lis[i]['pos']['y'] + lis[i]['size']['height']/2 && current.y < lis[i]['pos']['y'] + lis[i]['size']['height']){

if(t != lis[i]){

                            MOVE.isMove = true;

                            outer_wrap.insertBefore(div,lis[i].nextSibling);

                        }

                    }

                }

            }

 

            document.onmouseup = function(event){

                event = event || window.event;

                document.onmousemove = null;

                if(MOVE.isMove){

                    outer_wrap.replaceChild(t,div);

                    MOVE.isMove = false;

                }

                document.body.removeChild(el);

                el = null;

                document.body.style.cursor = 'normal';

                document.onmouseup = null;

            }

        }

    }

</script>

</body>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vxe-table是一个基于Vue.js的表格组件库,支持拖动排序功能。使用vxe-table实现拖动排序需要在表格中添加drag-config属性,并设置相关配置项。 具体步骤如下: 1. 在表格中添加drag-config属性,值为一个对象,包含以下配置项: - sortable:是否开启拖动排序功能,默认为false。 - trigger:触发拖动排序的元素选择器,默认为'.vxe-table--wrapper'。 - list:排序的数据列表,必填项。 - group:分组名称,用于多个表格之间的拖动排序,默认为null。 - filter:过滤器函数,用于过滤不需要排序的行,默认为null。 - onDragStart:拖动开始时的回调函数。 - onDragEnd:拖动结束时的回调函数。 2. 在表格中添加drag-header-config属性,值为一个对象,包含以下配置项: - sortable:是否开启拖动排序功能,默认为false。 - trigger:触发拖动排序的元素选择器,默认为'.vxe-table--header'。 - list:排序的数据列表,必填项。 - group:分组名称,用于多个表格之间的拖动排序,默认为null。 - filter:过滤器函数,用于过滤不需要排序的列,默认为null。 - onDragStart:拖动开始时的回调函数。 - onDragEnd:拖动结束时的回调函数。 3. 在表格中添加drag-row-config属性,值为一个对象,包含以下配置项: - sortable:是否开启拖动排序功能,默认为false。 - trigger:触发拖动排序的元素选择器,默认为'.vxe-table--body tbody tr'。 - list:排序的数据列表,必填项。 - group:分组名称,用于多个表格之间的拖动排序,默认为null。 - filter:过滤器函数,用于过滤不需要排序的行,默认为null。 - onDragStart:拖动开始时的回调函数。 - onDragEnd:拖动结束时的回调函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值