从下拉菜单拖拽一个元素 出来,插入到页面中的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>
仅作参考 。。。。。
从下拉菜单拖拽一个元素 出来,插入到页面中的app 列表中的更多相关文章
- Flutter交互实战-即刻App探索页下拉&拖拽效果
前言 Flutter最近比较热门,但是Flutter成体系的文章并不多,前期避免不了踩坑:我这篇文章主要介绍如何使用Flutter实现一个比较复杂的手势交互,顺便分享一下我在使用Flutter过程中遇 ...
- 拖拽一个元素如此简单,mouse、drag、touch三兄弟的用处
最近需要做一个投票活动,上传图片时需要拖拽.缩放来裁剪图片,vue的组件不少,不过自己动手才能丰衣足食,一味使用别人的组件实在难以进步,所以自己研究一番. 一.mouse.drag.touch傻傻分不 ...
- 初学者--bootstrap(六)组件中的下拉菜单----在路上(10)
组件---下拉菜单 用于显示链接列表的可切换.有上下文的菜单.下拉菜单的 JavaScript 插件让它具有了交互性. 将下拉菜单触发器和下拉菜单都包裹在 .dropdown 里,或者另一个声明了 p ...
- Bootstrap框架(基础篇)之按钮,网格,导航栏,下拉菜单
一,按钮 注意:虽然在Bootstrap框架中使用任何标签元素都可以实现按钮风格,但个人并不建议这样使用,为了避免浏览器兼容性问题,个人强烈建议使用button或a标签来制作按钮. 框架中提供了基础按 ...
- Bootstrap_下拉菜单
在使用Bootstrap框架的下拉菜单时,必须调用Bootstrap框架提供的bootstrap.js文件. 一.普通下拉菜单 <div class="dropdown"&g ...
- Bootstrap系列 -- 24. 下拉菜单基本用法
在使用Bootstrap框架的下拉菜单时,必须调用Bootstrap框架提供的bootstrap.js文件.当然,如果你使用的是未编译版本,在js文件夹下你能找到一个名为“dropdown.js”的文 ...
- Bootstrap下拉菜单
前面的话 网页交互的时候经常会需要上下文菜单或者隐藏/显示菜单项,Bootstrap默认提供了用于显示链接列表的可切换.有上下文的菜单.而且在各种交互状态下的菜单展示需要和javascript插件配合 ...
- 详解Bootstrap下拉菜单组件
bootstrap框架中的下拉菜单组件是一个独立的组件,根据不同的版本,他对应的文件: less 对应的源码文件为:dropdowns.less sass对应的源码文件为:_dropdowns.scs ...
- Bootstrap中的各种下拉菜单
@*基本下拉菜单与按钮下拉菜单的样式完全一致.不过,基本的下拉菜单使用<div class="dropdown">包裹,所有要换行.而按钮式下拉菜单<div cl ...
随机推荐
- 【转载】android中.9png
在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”.这种图片是用于Android开发的一种特殊的图片格式,它的 ...
- CSS浮动属性Float介绍
#cnblogs_post_body h6 {font-size: 16px;font-weight: bold;} 什么是CSS Float? float 是 css 的定位属性.在传统的印刷布局中 ...
- [译]git init
git init git init命令用来创建一个新的Git仓储.可以用在一个已经存在的但是没有受Git版本控制的项目,或者用来初始化一个全新的没有任何文件的空仓储.git init通常是你开始一个新 ...
- VTK初学一,a_Vertex图形点的绘制
系统:Win8.1 QT版本:2.4.2,Mingw VTK版本:6.3 2. main.cpp #ifndef INITIAL_OPENGL #define INITIAL_OPENGL #incl ...
- POJ 1265 Area
有一种定理,叫毕克定理.... Area Time Limit: 1000MS Memory Limit: 10000K Total Sub ...
- POJ 2635 The Embarrassed Cryptographer
大数取MOD... The Embarrassed Cryptographer Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 1 ...
- 素数的线性筛 && 欧拉函数
O(n) 筛选素数 #include<bits/stdc++.h> using namespace std; const int M = 1e6 + 10 ; int mindiv[M] ...
- Linux 信号量大全
编号 信号名称 缺省动作 说明 1 SIGHUP 终止 终止控制终端或进程 2 SIGINT 终止 键盘产生的中断(Ctrl-C) 3 SIGQUIT dump 键盘产生的退出 4 SIGILL du ...
- Hibernate框架之get和load方法的区别
我们在学习Hibernate框架时,经常会进行修改,删除操作,对于这些操作,我们都应该先加载对象,然后在执行或删除的操作,那么这里Hibernate提供了两种方法按照主键加载对象,也就是我要说的get ...
- android 在线升级借助开源中国App源码
android 在线升级借助开源中国App源码 http://www.cnblogs.com/luomingui/p/3949429.html android 在线升级借助开源中国App源码分析如下: ...