码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • draggable实现拖拽、禁止拖拽、拖拽后元素重新排序到指定位置


    文章目录

    • 一、前言
    • 二、实现拖拽
    • 三、禁止拖拽
    • 四、拖拽后元素重新排序到指定位置
    • 五、相关文章

    一、前言

    Vue是一种用于构建用户界面的JavaScript框架。它是一种轻量级的框架,旨在简化应用的开发过程。Vue提供了一种基于组件的开发模式,使开发者能够将应用程序分解为单个可复用的组件,并将这些组件组合起来以构建完整的应用程序。

    Vue具有以下特点:

    1. 响应式:Vue使用了一种响应式的数据绑定机制,当数据发生变化时,相关的界面会自动更新。这极大地简化了状态管理和数据更新的过程。
    2. 组件化:Vue允许开发者将应用程序拆分为多个小组件,并通过组合这些组件来构建复杂的应用程序。每个组件都有自己的模板、样式和逻辑,使组件的复用和维护变得更加容易。
    3. 虚拟DOM:Vue使用了虚拟DOM来提高性能。当数据发生变化时,Vue会通过比较虚拟DOM的差异来更新实际的DOM,这样可以减少直接操作实际DOM带来的性能损耗。
    4. 插件系统:Vue具有丰富的插件系统,可以通过插件来扩展其功能。开发者可以使用现有的插件,或者根据自己的需求来开发自定义插件。
    5. 易于学习和使用:Vue的语法简洁明了,学习曲线较为平缓。它的文档也非常完善,提供了大量的示例和教程,帮助开发者迅速上手。
    // 安装
    npm install vuedraggable
    // 引入
    import draggable from 'vuedraggable'
    
    • 1
    • 2
    • 3
    • 4

    二、实现拖拽

    // 拖拽组件
    <draggable
    	class="components-draggable"
    	:list="item.list"
    	:group="{ name: 'componentsGroup'}"
    	draggable=".components-list"
    	:sort="false"
    	:move="onMove"
    	@end="onEnd"
    >
    	<li class="components-list" v-for="(item, index) in list" :key="index">
    		<div class="components-body">{{item.label}}</div>
    	</li>
    </draggable>
    // 数据
    list: [
    	{
    		label: '组件1',
    		value: 0
    	},
    	{
    		label: '组件2',
    		value: 1
    	}
    ],
    // 拖拽区域
    <draggable :list="drawList" :animation="300" @end="onDrawEnd" group="componentsGroup"
    	<li class="components-list" v-for="(item, index) in drawList" :key="index">
    		<div class="components-body">{{item.label}}</div>
    	</li>
    </draggable>
    // 数据
    drawList: [],
    
    • 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
    • 33

    三、禁止拖拽

    // 拖拽时,校验是否已存在,禁止拖拽
    onMove(e) {
    	// 判断-是否已存在
      let arr = this.drawList.filter(item => {
        return item.value === 0
      })
    
      // 符合条件返回false,否则返回true
      if(e.draggedContext.element.value === 0 && arr.length){
      	return false
      }
      return true
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    四、拖拽后元素重新排序到指定位置

    // 限制:【组件1】始终排列在第一位
    onEnd(){
    	for (var i = 0; i < this.drawList.length; i++) {
    	  // 排序-组件1排第一位
    	  if(this.drawList[i].value === 0 && i !== 0){
    	  	this.drawList[0] = this.drawList.splice(i, 1, this.drawList[0])[0];
    	  }
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    五、相关文章

    draggable的github地址
    el-tabs事件绑定(Element UI)
    Element UI resetFields与clearValidate方法
    Vue resize监听窗口变化
    vue监听滚动事件 实现某元素随着滚动条滚动固定距离顶部的某个位置(元素的top值实时变化)
    Element-UI 日期选择器-时间范围控制
    vue iframe 宽高自适应
    Vue.Draggable使用文档总结
    js 实现数组元素交换位置

  • 相关阅读:
    Windows下MySQL的安装和删除
    右岸物联面经
    5.1 Spring源码-读取不完整Bean的解决原理
    TypeScript应用
    windows DOS/CMD命令:清空文件内容(不是删除)
    一个简单的vim例子
    猫头虎分享已解决Bug || SyntaxError: Unexpected token < in JSON at position 0
    Linux二进制方式安装mysql8
    点云从入门到精通技术详解100篇-基于 CRF 模型语义优化的车载激光点云分类(续)
    websocket 在web項目中的应用(服务器推消息)
  • 原文地址:https://blog.csdn.net/xuaner8786/article/details/133941816
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号