vue网格拖拽排序

demo
上图是网格拖拽排序的效果图,如果在你的项目中也有这样的需求,那么不妨来看看如何实现。

vue-slicksort:是一个功能强大的可拖拽的vue.js组件。 它可以自动滚动,锁定坐标系。支持拖拽时,流畅的动画效果。可以支持水平,垂直或者网格的拖拽。支持触摸。

安装

npm或yarn安装都可

$ npm install vue-slicksort --save
或
$ yarn add vue-slicksort

使用

引入

import { SlickList, SlickItem } from 'vue-slicksort'
export default {
  components: {
    SlickList,
    SlickItem,
  },
  data () {
    return {
      commonsApplication: []
    }
  }
}

使用(部分代码片段)

  <SlickList :lockToContainerEdges="true"
                    :pressDelay="300"
                    v-model="commonsApplication"
                    helperClass="helperClass"
                    class="ul"
                    axis="xy">
                    <SlickItem
                      v-for="(item,index) in commonsApplication"
                      :index="index"
                      :key="index+'key'"
                      class="li">
                      <div :class="{'add-border':isEditMenus}" class="app-border" @click="toApp(item)">
                        <img :src="item.menuIcon" class="app-icon">
                        <p>{{ item.menuName }}</p>
                        <img
                          v-if="isEditMenus"
                          src="@/assets/newIcon/deleteMenus.svg"
                          alt="删除应用"
                          class="delete-app"
                          @click.stop="deleteApp(item,index)">
                      </div>
                    </SlickItem>
                  </SlickList>
                  <div class="notice">以上应用展示在首页</div>

自定义样式(部分代码片段)

 .ul{
            display: flex;
            flex-wrap: wrap;
            text-align: center;
            padding-bottom:18px;
            .li{
              width: 25%;
              margin: 5px 0px;
              padding:0 4px;
              .add-border{
                border: 1px solid #E2E3E7 !important;
              }
              .app-border{
                z-index:99999!important;
                box-sizing: border-box;
                border-radius: 8px;
                position:relative;
                padding:5px;
                .app-icon{
                  width: 48px;
                  height: 48px;
                }
              }
            }
          }

参数说明

要想得到你想要的样式,要注意在SlickList和SlickItem上添加你定义的class,可以直接将二者当成两个div。
参数说明
关于拖拽组件的其他参数和方法说明,大家可参考 vue-slicksort

有问题,大家可留言一起交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值