从下拉菜单拖拽一个元素 出来,插入到页面中的app 列表中

1,实现功能:从下拉菜单拖拽一个元素 出来,插入到页面中的app 列表中

并实现app向后移动一个元素的位置;

2.实现思路:

01.遍历下拉菜单,添加拖拽方法,实现位置移动功能;

02.遍历app列表,将app位置存为数组,进行循环;

03.拖拽元素与当前app做碰撞检测;

04.如果鼠标在app内部,则将拖拽元素添加到当前app之后,位置设置为当前 i 的值;

参考代码如下:

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
  <style>
    #tp{height:50px;width:310px;margin:0 auto;list-style:none;}
    .tps{height:40px;width:60px;float:left;text-align:center;background:#e4393c;line-height:40px;margin-right:1px;
    }
    .container{height:500px;width:600px;background:#ccc;margin:0 auto;}
    .container ul{list-style:none;height:300px;width:500px;margin:0 auto;}
    .inner{height:40px;width:59px;float:left;text-align:center;background:#666;line-height:40px;margin-right:1px;
            margin-top:1px;
    }
    .green{background:green;}
  </style>
  <script src="jquery.min.js" type="text/javascript"></script>
 </head>
 <body>
  <ul id="tp">
    <li class="tps">关于我</li>
    <li class="tps">你好</li>
    <li class="tps">信息</li>
    <li class="tps">服务</li>
    <li class="tps">假期</li>
  </ul>

  <div class="container">
    <ul>
        <li class="inner"></li>
        <li class="inner"></li>
        <li class="inner"></li>
        <li class="inner"></li>
        <li class="inner"></li>
        <li class="inner"></li>
        <li class="inner"></li>
        <li class="inner"></li>
        <li class="inner"></li>
        <li class="inner"></li>
        <li class="inner"></li>
        <li class="inner"></li>
        <li class="inner"></li>
        <li class="inner"></li>
        <li class="inner"></li>
        <li class="inner"></li>
    </ul>
 </div>
    <script>
    $(function(){
        function Pointer(x,y){
            this.x = x;
            this.y = y;
        }
        function Position(left,top){
            this.left = left;
            this.top = top;
        }
        $(‘.tps‘).each(function(i){
            this.init = function(){
                $(this).attr(‘index‘,i);

                this.drag();
            }
            this.moveback = function(callback){
                $(this).animate({
                    left:this.pos.left,
                    top:this.pos.top
                },500)
            }
            this.Check = function(){
                var currentItem  =  this;
                var clision = null;

                var position = [];

                $(‘.inner‘).each(function(){

                    const { top, left } = $(this).offset();
                    position.push({
                        top:top,
                        left:left
                    });
                    $(this).attr(‘index‘,i);
                    //index.push($(this).index());
                                            if(    currentItem.pointer.x >$(this).offset().left &&
                                        currentItem.pointer.y > $(this).offset().top &&
                                        (currentItem.pointer.x < $(this).offset().left + $(this).width()) &&
                                        (currentItem.pointer.y < $(this).offset().top + $(this).height())
                                    ){
                                        $(this).after($(currentItem));
                                    }
                })
                    //console.log(startIndex)
                    //console.log(endIndex)

                    console.log(position)

            }
            this.add = function(){

            }
            this.drag = function(){
                var oldposition = new Position();
                var oldpointer = new Pointer();
                var currentItem  = null;
                var isDrag = false ;
                $(this).mousedown(function(e){
                    e.preventDefault();
                    oldposition.left = $(this).offset().left;
                    oldposition.top  = $(this).offset().top;
                    oldpointer.x = e.clientX;
                    oldpointer.y = e.clientY;
                    currentItem = this;
                    isDrag = true;

                })
                $(document).mousemove(function(e){
                    var currentpointer = new Pointer(e.clientX,e.clientY);
                    if(!isDrag) return false;
                    $(currentItem).css(‘opacity‘,0.7);
                    var left = currentpointer.x - oldpointer.x + oldposition.left;
                    var top  = currentpointer.y - oldpointer.y + oldposition.top;

                    $(currentItem).css({
                    position:‘absolute‘,
                    left : left,
                    top : top
                    });

                    currentItem.pointer = currentpointer;
                })
                $(document).mouseup(function(){
                    if(!isDrag) return false;
                    isDrag = false;
                    $(currentItem).css({
                    position:‘‘,

                    });
                    /**
                    currentItem.moveback(function(){
                        $(this).css({
                            "opacity" : "1",
                            "z-index" : 0
                        });
                    });
                    **/
                    currentItem.Check();
                })

            }
            this.init();

        })

    })

    </script>
  </div>
 </body>
</html>

仅作参考 。。。。。

时间: 2024-10-17 12:01:00

从下拉菜单拖拽一个元素 出来,插入到页面中的app 列表中的相关文章

初学者--bootstrap(六)组件中的下拉菜单----在路上(10)

组件---下拉菜单 用于显示链接列表的可切换.有上下文的菜单.下拉菜单的 JavaScript 插件让它具有了交互性. 将下拉菜单触发器和下拉菜单都包裹在 .dropdown 里,或者另一个声明了 position: relative; 的元素.然后加入组成菜单的 HTML 代码.代码与效果如下: <div class="dropdown"> <button class="btn btn-default dropdown-toggle" type=

Bootstrap中的下拉菜单

下拉菜单(基本用法) 小伙伴们注意,在Bootstrap框架中的下拉菜单组件是一个独立的组件,根据不同的版本,它对应的文件: ?  LESS版本:对应的源码文件为 dropdowns.less ?  Sass版本:对应的源码文件为 _dropdowns.scss ?  编译后的Bootstrap版本:查看bootstrap.css文件第3004行-第3130行 在使用Bootstrap框架的下拉菜单时,必须调用Bootstrap框架提供的bootstrap.js文件.当然,如果你使用的是未编译版

Bootstrap中的各种下拉菜单

@*基本下拉菜单与按钮下拉菜单的样式完全一致.不过,基本的下拉菜单使用<div class="dropdown">包裹,所有要换行.而按钮式下拉菜单<div class="btn-group">按钮组包裹,属于内联样式,不换行. 分割的按钮下拉菜单多了一个<button></button>作为默认选项,另一个button的内容是<span class="caret">. 而<li

深入理解BootStrap Item8 -- 下拉菜单

1.下拉菜单(基本用法) 小伙伴们注意,在Bootstrap框架中的下拉菜单组件是一个独立的组件,根据不同的版本,它对应的文件: ? LESS版本:对应的源码文件为 dropdowns.less ? Sass版本:对应的源码文件为 _dropdowns.sass ? 编译后的Bootstrap版本:查看bootstrap.css文件第3004行-第3130行 在使用Bootstrap框架的下拉菜单时,必须调用Bootstrap框架提供的bootstrap.js文件.当然,如果你使用的是未编译版本

bootstrap的下拉菜单

本文章将重点介绍 Bootstrap 下拉菜单.下拉菜单是可切换的,用于显示链接列表的可切换.有上下文的菜单.下拉菜单的 JavaScript 插件让它具有了交互性. 1.将下拉菜单触发器和下拉菜单都包裹在 放在class.dropdown 里,或者另一个声明了 position: relative; 的元素. 代码如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <me

Bootstarp学习(八)下拉菜单

下拉菜单(基本用法) 小伙伴们注意,在Bootstrap框架中的下拉菜单组件是一个独立的组件,根据不同的版本,它对应的文件: ?  LESS版本:对应的源码文件为 dropdowns.less ?  Sass版本:对应的源码文件为 _dropdowns.scss ?  编译后的Bootstrap版本:查看bootstrap.css文件第3004行-第3130行 在使用Bootstrap框架的下拉菜单时,必须调用Bootstrap框架提供的bootstrap.js文件.当然,如果你使用的是未编译版

bootstrap里的下拉菜单

bootstrap里的下拉菜单用于显示链接列表的可切换.有上下文的菜单.下拉菜单的 JavaScript 插件让它具有了交互性.将下拉菜单触发器和下拉菜单都包裹在 .dropdown 里,或者另一个声明了 position: relative; 的元素.然后加入组成菜单的 HTML 代码.以下代码就是生成一个简单的下拉菜单 <div class="dropdown">  <button class="btn btn-default dropdown-togg

Bootstrap 学习之js插件(下拉菜单(Dropdown)插件)

Bootstrap 下拉菜单(Dropdown)插件 Bootstrap 下拉菜单 这一章讲解了下拉菜单,但是没有涉及到交互部分,本章将具体讲解下拉菜单的交互.使用下拉菜单(Dropdown)插件,您可以向任何组件(比如导航栏.标签页.胶囊式导航菜单.按钮等)添加下拉菜单. 用法 您可以切换下拉菜单(Dropdown)插件的隐藏内容: 通过 data 属性:向链接或按钮添加 data-toggle="dropdown" 来切换下拉菜单,如下所示: <div class="

Bootstrap入门(十)组件4:按钮组与下拉菜单结合

先引入本地的CSS文件和JS文件(注:1.bootstrap是需要jQuery支持的.2.需要在<body>当中添加) <link href="css/bootstrap.min.css" rel="stylesheet"> <script src="jquery-3.1.0.min.js" type="text/javascript"></script> <script