jquery和jquery-ui拖动元素(vue2)

news2024/11/26 14:39:57

 彩色小方块可以任意拖动,红色箭头指向的区域可以拖动

CDN在index.html文件中引入 

    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>

      <div id="all">
        <div id="userListBox">
          <div id="userListBoxTitle" class="move">用户列表</div>
          <div id="userListBoxMain">
            <div
              class="userListBoxMain"
              v-for="item in userList"
              :key="item.id"
            >
              <li>{{ item.name }}</li>
            </div>
          </div>
        </div>

        <div
          id="main"
          style="
            position: relative;
            height: 600px;
            background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPiAgICA8ZGVmcz4gICAgICAgIDxwYXR0ZXJuIGlkPSJncmlkIiB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiPiAgICAgICAgICAgIDxwYXRoIGQ9Ik0gMTAgMCBMIDAgMCAwIDEwIiBmaWxsPSJub25lIiBzdHJva2U9IiNkZGRkZGQiIHN0cm9rZS13aWR0aD0iMSIgb3BhY2l0eT0iMSIgLz4gICAgICAgIDwvcGF0dGVybj4gICAgPC9kZWZzPiAgICA8cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyaWQpIiAvPjwvc3ZnPg==);
          "
        >
          <div class="bk" style="background: red;">1</div>
          <div class="bk" style="background: blue; left: 60px;">2</div>
          <div class="bk" style="background: yellow; left: 120px;">3</div>
          <div class="bk" style="background: #000; left: 180px;">4</div>
          <div class="bk" style="background: grey; left: 240px;">5</div>
        </div>
        <div class="binDiv">
          <div id="binDiv">拖到我上面</div>
        </div>
      </div>
 userList: [
        {
          id: '1',
          name: '用户1',
        },
        {
          id: '2',
          name: '用户2',
        },
        {
          id: '3',
          name: '用户3',
        },
        {
          id: '4',
          name: '用户4',
        },
        {
          id: '5',
          name: '用户5',
        },
        {
          id: '6',
          name: '用户6',
        },
        {
          id: '8',
          name: '用户8',
        },
        {
          id: '9',
          name: '用户9',
        },
        {
          id: '10',
          name: '用户10',
        },
        {
          id: '11',
          name: '用户11',
        },
        {
          id: '12',
          name: '用户12',
        },
        {
          id: '13',
          name: '用户13',
        },
        {
          id: '14',
          name: '用户14',
        },
        {
          id: '15',
          name: '用户15',
        },
        {
          id: '16',
          name: '用户16',
        },
        {
          id: '17',
          name: '用户17',
        },
],
 mounted() {
    this.dragFun()
    this.userListFun()
  },
    //拖动正方块
    dragFun() {
      $('.bk')
        .resizable() //.resizable()是jQuery UI提供的一个方法,它可以将选定的元素变为可调整大小的元素
        .draggable({
          //.draggable()方法可以使选定的元素可拖动
          containment: '#main', // 限制拖动范围
          distance: 5, //设置移动多少像素后才开始触发拖动操作
          scroll: false, //拖动的时候不会触发滚动
          stack: '.bk', //拖动的元素被置于.bk元素组的最上层
          start: function (event, ui) {}, //当开始拖动元素时触发该函数
          drag: function (event, ui) {}, //在元素拖动过程中持续触发该函数
          stop: function (event, ui) {}, //当停止拖动元素时触发该函数
        })
        //使用 .bind() 方法将 click 事件绑定到选定的元素上
        .bind('click', function () {
          if ($(this).hasClass('ui-selected')) {
            //当前元素有 'ui-selected' 类移除该类。
            $(this).removeClass('ui-selected')
          } else {
            //当前元素没有 'ui-selected' 类,为元素添加该类。
            $(this).addClass('ui-selected')
          }
        })

      //jQuery UI 中的 .selectable() 方法来使 #main 元素的子元素可选择
      $('#main').selectable({
        filter: '.bk', //指定可选择项的 CSS 选择器,这里设置为 .bk,只有带有 .bk 类的子元素才能被选择
        distance: 30, //表示鼠标在元素上移动多少像素后才开始进行选择操作。
        selected: function (event, ui) {}, //选中元素后的回调函数
      })

      $('#binDiv').droppable({
        //使用了 jQuery UI 中的 .droppable() 方法,将 #binDiv 元素设置为可接收被拖动元素的区域
        drop: function (event, ui) {
          //在设置的元素上发生拖放操作并完成后触发的事件处理函数
          console.log('被放:', $(this))
          console.log('被拖:', ui)
          $(this).html('Dropped!') //将 #binDiv 元素的内容设置为字符串 'Dropped!'
        },
      })
    },
    // 拖动用户列表
    userListFun() {
      //拖动整个列表
      $('#userListBox').draggable({
        //draggable() 方法,将 #userListBox 元素设置为可拖动的元素
        cursor: 'move', //设置鼠标移动时的光标样式为 'move',表示该元素可拖动。
        handle: '#userListBoxTitle', //指定拖动操作的触发区域为 #userListBoxTitle 元素。只有在拖动该区域内部,拖动操作才会生效。
        containment: '#all', //限制被拖动元素的移动范围在 #all 元素内。被拖动元素不会超出 #all 元素的边界
      })
      //拖动列表中的用户
      $('#userListBoxMain li').draggable({
        //.draggable() 方法,将 #userListBoxMain li 元素设置为可拖动的元素
        cursor: 'move', //设置鼠标移动时的光标样式为 'move',表示该元素可拖动
        cursorAt: {
          //表示以被拖动元素的左侧距离鼠标左侧偏移 25px 的位置为鼠标偏移量,即被拖动元素将会跟随鼠标移动并保持此距离。
          left: 25,
        },
        helper: 'clone', //指定拖动时需要使用一个辅助元素来显示拖动效果,该辅助元素是被拖动元素的副本。
        containment: '#main', //限制被拖动元素的移动范围在 #main 元素内。
        distance: 5, //设置鼠标移动的距离超过 5px 后,才开始响应拖动事件。
        scroll: false, //拖动时不允许页面滚动。
        stack: '#userListBoxMain li', //设置可拖动元素的层级,使得当前被拖动的元素在其他元素上方。
        appendTo: '#main', //将拖动时的辅助元素附加到 #main 元素上。
        zIndex: 10000, //设置被拖动元素的 CSS 层级为 10000。
        start: function (event, ui) {}, //开始进行拖动操作时执行
        drag: function (event, ui) {}, //正在拖动元素时执行
        stop: function (event, ui) { //拖动操作结束时执行
           $(this).addClass('userstop')
        }, 
      })
    },
<style scoped>
.elcard-box {
  border: 1px solid #000;
}
.bk {
  width: 50px;
  height: 50px;
  color: #fff;
  position: absolute;
  top: 5px;
}

.bk.ui-selected {
  box-shadow: 0 0 5px red;
}

#barMain li {
  width: 100px;
  border: 1px #ccc solid;
  border-radius: 0.2rem;
  display: block;
  float: left;
  margin: 0 1em 1em 0;
  text-align: center;
  color: #333;
  font-size: 0.9em;
}
.binDiv {
  position: relative;
}
#binDiv {
  width: 200px;
  height: 200px;
  position: absolute;
  top: -550px;
  right: 20px;
  background: #ccc;
}

#userListBox {
  width: 200px;
  height: 500px;
  position: absolute;
  top: 340px;
  z-index: 9999;
  background-color: #eee;
  border-radius: 5px;
  display: flex;
  flex-direction: column;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
}

#userListBoxTitle {
  width: 100%;
  height: 44px;
  line-height: 44px;
  text-align: center;
  background: #ccc;
}

#userListBoxMain {
  width: 100%;
  height: 100%;
  -webkit-box-flex: 1;
  box-flex: 1;
  overflow-y: auto;
}
.userListBoxMain .ui-draggable {
  width: 100%;
  height: 44px;
  line-height: 44px;
  display: block;
  text-align: center;
  border-bottom: 1px #ccc solid;
}
li.ui-draggable-dragging {
  border: 1px solid #000;
  width: 50px;
  height: 50px;
  line-height: 50px;
  display: block;
  text-align: center;
  position: absolute !important;
  color: #fff;
  background: coral;
}

.userstop {
  background: coral;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1048194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

水利感知信息系统方案浅析

传统水利感知信息主要包括雨水工情信息&#xff0c;通常是利用信息监测技术、通信技术、网络技术、计算机技术&#xff0c;建立由雨量站、水位站、流量站等组成的雨水工情遥测系统&#xff0c;实现对流域、河流、湖泊、水库、水电站和灌区的固定或移动站点的降水量、水位、流量…

差值结构表达的吸引能

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点&#xff0c;AB训练集各由5张二值化的图片组成&#xff0c;让A 中有5个点&#xff0c;B中有1个点&#xff0c;并且重合&#xff0c;统计迭代次数并排序。 其中有6组数据 差值结构 迭代次数 L1 L2 L1 E1 L2…

C函数学习总结

一.内存拷贝函数 void* memcpy(voidr* s1,const void* s2,size_t n); 该函数返回拷贝后的指针。比如说&#xff0c;它可以将一个字符数组缓冲区的内容拷贝到另一个缓冲区中, size_t n可以使用sizeof进行得到。 memmove(void *s1,const void* s2,size_t n); 如果目标区域和源区…

LeetCode 2251. 花期内花的数目:排序 + 二分

【LetMeFly】2251.花期内花的数目&#xff1a;排序 二分 力扣题目链接&#xff1a;https://leetcode.cn/problems/number-of-flowers-in-full-bloom/ 给你一个下标从 0 开始的二维整数数组 flowers &#xff0c;其中 flowers[i] [starti, endi] 表示第 i 朵花的 花期 从 st…

使用docker完成minio服务部署扩容备份迁移生产实践文档

一、minio服务扩容方案 当服务器存储空间不足的时候&#xff0c;需要进行扩容&#xff0c;扩容过程中需要短暂停机时间&#xff0c;预计在一小时内能够完成和恢复 统一注意事项 强烈建议为部署中的所有节点选择基本相似的硬件配置。确保硬件&#xff08;CPU、内存、主板、存…

【Spring Boot】操作Redis数据结构

🌿欢迎来到@衍生星球的CSDN博文🌿 🍁本文主要学习【Spring Boot】操作Redis数据结构 🍁 🌱我是衍生星球,一个从事集成开发的打工人🌱 ⭐️喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路⭐️💠作为一名热衷于分享知识的程序员,我乐于在CSDN上与广大开发者…

OOTD耳机 | 国庆出游头戴式耳机推荐|轻装上阵出片神器

国庆假期马上就要来啦&#xff5e; 今天就来分享一款数码神器——头戴式耳机&#xff0c;穿搭拍照必备&#xff0c;特别适合假期出游哦&#xff01;轻装上阵出片神器——轻律Umelody U1头戴式蓝牙耳机&#xff01; 整个设计简约低调&#xff0c;棕色的为主调的包身&#xff0c;…

JMeter 设置请求头信息的详细步骤

在使用 JMeter 的过程中&#xff0c;我们会遇到需要设置请求头信息的场景。比如&#xff1a; POST 传过去的 Body 数据是 json 格式的。需要填添加头信息&#xff1a;Content-Type&#xff1a;application/json。 在 header 中用 token 来传用户的认证信息。 下面&#xff0c;…

服务器vs普通电脑

服务器&#xff0c;是一种高性能计算机&#xff0c;作为网络的节点&#xff0c;存储、处理网络上80&#xff05;的数据、信息&#xff0c;因此也被称为网络的灵魂。那么&#xff0c;服务器与普通电脑有什么不一样呢&#xff1f; 服务器VS普通电脑 普通电脑&#xff0c;通过终…

常用中间件-OAuth2

1. 微服务权限校验Session共享 1.1 微服务权限校验 实现2号方案。使用Redis作为Session统一存储。 首先配置一下Nacos&#xff0c;参考https://blog.csdn.net/weixin_43917045/article/details/132852850 然后为每个服务添加验证机制&#xff0c;先导入依赖 <!-- SpringS…

vs2019配置libcurl环境

一、libcurl下载地址&#xff1a;curl - Download 二、解压下载的压缩包&#xff0c;进入projects\Windows\VC14目录 三、用vs2019打开curl-all.sln工程&#xff0c;选择LIB Debug&#xff0c;x64进行编译 编译后的文件为&#xff1a;curl-8.2.1\build\Win64\VC14\LIB Debug\li…

【c语言中的字符串相关方法介绍】

C语言中有许多字符串相关的函数&#xff0c;用于处理字符串的创建、修改、查找和比较等操作。以下是一些常见的字符串相关函数以及它们的使用方法&#xff1a; strlen&#xff08;字符串长度&#xff09;&#xff1a;用于计算字符串的长度&#xff0c;不包括字符串末尾的空字符…

【AI视野·今日Robot 机器人论文速览 第四十三期】Thu, 28 Sep 2023

AI视野今日CS.Robotics 机器人学论文速览 Thu, 28 Sep 2023 Totally 37 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;****触觉力控学习策略,基于触觉的主动推理与力控用于小孔插入任务。提出了姿态控制与插入控制双策略模型。 (from 东京大学…

京东数据平台:2023年8月京东白酒行业品牌销售排行榜

鲸参谋监测的京东平台8月份白酒市场销售数据已出炉&#xff01; 根据鲸参谋平台的数据显示&#xff0c;今年8月份&#xff0c;白酒市场的销量为198万&#xff0c;环比下滑约6%&#xff0c;同比下滑不足1%&#xff1b;销售额为15亿&#xff0c;环比下滑约18%&#xff0c;同比则…

c++ | makefile | 编译 | 链接库

简单记一下 看着人家总结的挺好的 点这

面试问到MySQL模块划分与架构体系怎么办

面试问到Mysql模块划分与架构体系怎么办 文章目录 1. 应用层连接管理器&#xff08;Connection Manager&#xff09;安全性和权限模块&#xff08;Security and Privilege Module&#xff09; 2. MySQL服务器层2.1. 服务支持和工具集2.2. SQL Interface2.3. 解析器举个解析器 …

ChatGPT社交时代降临!Meta在三大平台,集成28个生成式AI!

9月28日&#xff0c;全球社交、科技巨头Meta&#xff08;前身是Facebook&#xff09;在官网宣布&#xff0c;在旗下的Instagram、WhatsApp和Messenger三大社交平台中&#xff0c;集成28个生成式AI聊天机器人。 据悉&#xff0c;这些AI机器人是基于Meta最新发布的大语言模型Lla…

力扣-349.两个数组的交集

Idea 使用两个哈希集合&#xff0c;其中一个用来存储第一个数组&#xff0c;第二个来存储两个数组的交集&#xff0c;因为集合自带去重功能&#xff0c;因此最后用数组来接收就好了 AC Code class Solution { public:vector<int> intersection(vector<int>& n…

自动化测试框架总结

前言 自动化测试框架是一套工具、库和规范的集合&#xff0c;用于支持和简化自动化测试的开发、执行和管理。 提供一种结构化的方法来编写、组织和执行自动化测试用例&#xff0c;并提供一些常用的功能和工具&#xff0c;例如测试用例管理、结果报告生成、测试数据管理、日志…

17周年庆第一弹|中秋·国庆双节大促购物指南,给力狂欢!

随着中秋和国庆双节的来临,百脑汇广州店为了满足消费者的购物需求,特别推出了本次17周年店庆月:双节大促购物指南。本指南将为您介绍百脑汇广州店的优惠购机活动、热门商品等等,帮助您在本次17周年店庆月中获得更好的体验。 百脑汇广州店17周年店庆月第一弹:中秋国庆双节大促中…