10 分钟上手 Vue 组件 Vue-Draggable
Vue 综合了 Angualr 和 React 的优点,因其易上手,轻量级,受到了广泛应用。成为了是时下火热的前端框架,吸引着越来越多的前端开发者!
本文将通过一个最简单的拖拽例子带领大家快速上手 Vue 组件 Vue-Draggable。
首先,需要在工作环境中配置好 Vue-cli,创建一个 vue 项目。
vue create test_1
创建项目时会有很多安装步骤,按下面的说明选择配置:
1.pick a preset 选择 Manually select features
2.Check the features needed for your project 选择 Babel 和 CSS Pre-processors 两项(使用空格键来选中或取消)
3.Pick a CSS pre-processor 选择 Sass/SCSS(with node-sass)
4.Where do you prefer placing config 选择 In dedicated config files
5.Save this as a preset for future projects? 选 yes ,并填写一个名字,以后的 Vue 项目就可以继续使用这个配置
6. Pick the package manager to use when installing dependencies 选择 Use NPM(有些同学安装可能不会遇到这步)
OK,准备工作做好,下面我们可以进入 Vue-Draggable 的内容。
首先, cd test_1
进入项目目录,配置一下 Vue-Draggable。
npm i vuedraggable -S
接着,在 src/components
目录下新建 Draggable.vue
。
在 <script>
中引入并且注册 vuedraggable
组件,再写一点数据后面验证用:
<script>
import Draggable from "vuedraggable"
const message = [
"vue.draggable",
"draggable",
"component",
"for",
"vue.js 2.0",
"based",
"on",
"Sortablejs"
]
export default {
components: {
Draggable
},
data () {
return {
list: message.map((name, index) => {
return { name, order: index + 1 };
})
}
}
}
</script>
然后我们就可以在 <template>
中愉快的使用 draggable。
<template>
<draggable
class="list-group"
tag="ul"
v-model="list"
v-bind="{
animation: 200,
group: 'description',
disabled: false,
ghostClass: 'ghost'
}"
>
<li
class="list-group-item"
v-for="element in list"
:key="element.order"
>
{{ element.name }}
</li>
</draggable>
</template>
注意,draggable 标签中,tag = 'ul' 用来指定 draggable 组件渲染出来的 html 标签。v-model 绑定列表可拖动的元素,也就是 data() 中的 list,通常与 draggable 中的内部元素 v-for 的引用一致。
v-bind 绑定 draggable 组件的配置项,可以看看具体讲解:
- group:string or object
- string:命名,用处是为了设置可以拖放容器时使用
- object: {name, pull, put}
- name: 同 string 的方法
- pull:pull 用来定义从这个列表容器移动出去的设置,true/false/'clone'/function
- true:列表容器内的列表元素可以被移出;
- false:列表容器内的列表元素不可以被移出;
- clone:列表元素移出,移动的为该元素的副本;
- function:用来进行 pull 的函数判断,可以进行复杂逻辑,在函数中 return false/true 来判断是否移出;
- put:put 用来定义往这个列表容器放置列表元素的的设置,true/false/['foo','bar']/function
- true:列表容器可以从其他列表容器内放入列表元素;
- false:与 true 相反;
- ['foo','bar']:这个可以是一个字符串或者是字符串的数组,代表的是 group 配置项里定义的 name 值;
- function:用来进行 put 的函数判断,可以进行复杂逻辑,在函数中 return false/true 来判断是否放入
- animation: number 单位:ms,定义动画的时间;
- disabled: boolean 定义此 sortable 对象是否可用,为 true 时 sortable 对象不能拖放排序等功能,为 false 时为可以进行排序,相当于一个开关;
- ghostClass:selector 格式为简单 css 选择器的字符串,当拖动列表元素时会生成一个副本作为影子元素来模拟被拖动元素排序的情况,此配置项就是来给这个影子元素添加一个 class,我们可以通过这种方式来给影子元素进行编辑样式;
- sort: boolean 定义是否列表元素是否可以在列表容器内进行拖拽排序;
- delay: number 定义鼠标选中列表元素可以开始拖动的延迟时间;
- handle: selector 格式为简单 css 选择器的字符串,使列表元素中符合选择器的元素成为拖动的手柄,只有按住拖动手柄才能使列表元素进行拖动;
- filter: selector 格式为简单 css 选择器的字符串,定义哪些列表元素不能进行拖放,可设置为多个选择器,中间用“,”分隔
- draggable:selector 格式为简单 css 选择器的字符串,定义哪些列表元素可以进行拖放
- chosenClass:selector 格式为简单 css 选择器的字符串,当选中列表元素时会给该元素增加一个 class;
- forceFallback:boolean 如果设置为 true 时,将不使用原生的 html5 的拖放,可以修改一些拖放中元素的样式等;
- fallbackClass:string 当 forceFallback 设置为 true 时,拖放过程中鼠标附着元素的样式;
- scroll:boolean 默认为 true,当排序的容器是个可滚动的区域,拖放可以引起区域滚动。
再配置一下对应 class 样式:
<style lang="scss">
.ghost {
opacity: 0.5;
background: #c8ebfb;
}
.list-group {
min-height: 20px;
list-style: none;
}
.list-group-item {
cursor: move;
height: 30px;
line-height: 30px;
border: 1px solid #ccc;
}
</style>
最后,修改一下 App.vue 注册组件:
<template>
<div id="app">
<draggable></draggable>
</div>
</template>
<script>
import Draggable from './components/Draggable'
export default {
name: 'app',
components: {
Draggable
}
}
</script>
启动项目,在浏览器中查看一下效果!
npm run server
很简单对吧,10 分钟快速食用完毕!
10 分钟上手 Vue 组件 Vue-Draggable的更多相关文章
- webpack的单vue组件(.vue)加载sass配置
在通过vue-cli安装了webpack-simple 后,就自动安装好vue-loader了,但此时若写了含有sass的.vue组件,运行npm run dev时会报错.此时,需要我们在webpac ...
- 10 分钟上手 Vim,常用命令大盘点
传闻有 180 万的程序员不知道如何退出 Vim 编辑器,真的有这么困难吗?下面给大家整理了一份 Vim 常用命令,让你 10 分钟快速上手 Vim,溜得飞起! 以下命令请在普通模式执行 1.移动光标 ...
- 千锋教育Vue组件--vue基础的方法
课程地址: https://ke.qq.com/course/251029#term_id=100295989 <!DOCTYPE html> <html> <head& ...
- 三、深入Vue组件——Vue插槽slot、动态组件
一.插槽slot() 1.1简单插槽slot [功能]用于从父组件中,通过子组件写成双标签,向子组件中放入自定的内容 parent.vue [1]首先把child写成双标签样式,把要插入的内容放双标签 ...
- 10分钟上手python pandas
目录 Environment 开始 对象创建 查看数据 选择 直接选择 按标签选择 按位置选择 布尔索引 设置 缺失数据 操作 统计 应用(apply) 直方图化(Histogramming) 字符串 ...
- Gradle 10分钟上手指南
java的源码构建工具,大致经历了 ant -> maven -> gradle 这个过程,每一次进步,都是在解决之前的工具所带来的问题,简单来说: 1. ant 功能虽然也很强大,但是过 ...
- Vue组件间通信:一个例子学会Vue组件-Vue.js学习总结)(转载)
详情请点击 http://www.jianshu.com/p/9ad1ba89a04b
- vue 组件 Vue.component 用法
todo https://blog.csdn.net/weixin_41796631/article/details/82929139
- vue学习目录 vue初识 this指向问题 vue组件传值 过滤器 钩子函数 路由 全家桶 脚手架 vuecli element-ui axios bus
vue学习目录 vue学习目录 Vue学习一之vue初识 Vue学习二之vue结合项目简单使用.this指向问题 Vue学习三之vue组件 Vue学习四之过滤器.钩子函数.路由.全家桶等 Vue学习之 ...
随机推荐
- [ERROR] ionic-app-scripts has unexpectedly closed (exit code 1).
这个错误是因为缺失 '@ionic/app-scripts',只要安装 '@ionic/app-scripts' 即可. 解决方法:npm install @ionic/app-scripts@lat ...
- ros 源码安装
版本lunar, 系统版本debian 9.8 参考: http://wiki.ros.org/lunar/Installation/Source 1. Installing bootstrap de ...
- Efficient and Accurate Arbitrary-Shaped Text Detection with Pixel Aggregation Network(利用像素聚合网络进行高效准确的任意形状文本检测)
PSENet V2昨日刚出,今天翻译学习一下. 场景文本检测是场景文本阅读系统的重要一步,随着卷积神经网络的快速发展,场景文字检测也取得了巨大的进步.尽管如此,仍存在两个主要挑战,它们阻碍文字检测部署 ...
- Jenkins - 分布式构建
1 - 简介 Jenkins支持分布式多节点(Master-Slave)运行模式. 将安装Jenkins的主机作为Master节点,然后通过界面配置(或远端启动服务)来添加Slave节点. 在这种部署 ...
- SQL Server MERGE(合并)语句
如何使用SQL Server MERGE语句基于与另一个表匹配的值来更新表中的数据. SQL Server MERGE语句 假设有两个表,分别称为源表和目标表,并且需要根据与源表匹配的值来更新目标表 ...
- Unity 新手引导
根据Shader动态生成遮罩 源码地址 圆形遮罩镂空处理脚本: using System; using System.Collections.Generic; using UnityEngine; u ...
- 【洛谷】P1308 统计单词数-全AC题解(易理解
弟弟的混乱代码(易理解 大概 思路: 循环b(被找的字符串),遇空格比较两空格间的长度是否与a(需要查找的字符)相等:不相等继续循环:相等比较内容是否相同(倒数比较,不一样直接退出 ,直到比较到第一个 ...
- Nginx静态服务配置---详解root和alias指令
Nginx静态服务配置---详解root和alias指令 静态文件 Nginx以其高性能著称,常用与做前端反向代理服务器.同时nginx也是一个高性能的静态文件服务器.通常都会把应用的静态文件使用ng ...
- Python解析 算数表达式求值 栈的使用
使用Python实现一种算数表达式求值的算法,模拟这种使用栈的方式,这是由E.W.Dijkstra在20世纪60年代发明的一种非常简单的算法.代码模拟仅仅表现一种编程思想,代码的逻辑并不完全: if ...
- Html 对象的常用事件列举
事件名称 触发时间 对象例举 OnBlur 对象失去输入焦点 窗口和所有的表单对象 OnChange 用户改变对象的值 文本框.文本区域.选择列表等 OnClick 用户鼠标点击 链接.按钮.单选钮. ...