最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue實(shí)現(xiàn)拖放排序功能的實(shí)例代碼

 更新時(shí)間:2019年07月08日 10:26:10   作者:折耳的貓  
本文通過(guò)實(shí)例代碼給大家介紹了Vue中實(shí)現(xiàn)拖放排序功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Vue中實(shí)現(xiàn)拖放排序,啥也不說(shuō),貼上代碼:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
ul {
min-height: 100px;
width: 200px;
margin: 20px auto;
background: #eee;
}
li {
min-height: 2em;
margin-top: 10px;
background: #abcded;
}
/ 組件過(guò)渡類(lèi) /
.drog-move {
transition: transform 1s;
}
</style>
<body>
<div id="app">
<transition-group name="drog" tag="ul">
  <li draggable="true" v-for="(item, index) in lists" @dragstart="dragStart($event, index)" @dragover="allowDrop" @drop="drop($event, index)" v-bind:key="item">{{item}}</li>
</transition-group>
</div>
</body>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
  lists: ['1: apple', '2: banana', '3: orange', '4: melon']
},
methods: {
  //取消默認(rèn)行為
  allowDrop(e){
    e.preventDefault();
  },
  //開(kāi)始拖動(dòng)
  dragStart(e, index){
    let tar = e.target;
    e.dataTransfer.setData('Text', index);
    if (tar.tagName.toLowerCase() == 'li') {
      // console.log('drag start')
      // console.log('drag Index: ' + index)
    }
  },
  //放置
  drop(e, index){
    this.allowDrop(e);
    // console.log('drop index: ' + index);
    //使用一個(gè)新數(shù)組重新排序后賦給原變量
    let arr = this.lists.concat([]),
      dragIndex = e.dataTransfer.getData('Text');
      temp = arr.splice(dragIndex, 1);
    arr.splice(index, 0, temp[0]);
    // console.log('sort');
    this.lists = arr;
  }
}
})
</script>

</html>

ps:下面看下vue 拖拽排序的實(shí)例代碼,具體代碼如下所示:

<template>
  <section class="main">
    <div class="drag-box-left">
      <div class="drag-title">拖動(dòng)排序</div>
      <div class="drag-list" draggable="true"
        v-for="list in data1"
        :data-id="list.id"
        @dragstart="dragstartEvent"
        @dragend="dragendEvent"
        @dragenter="dragenterEvent"
        @dragleave="dragleaveEvent"
        @dragover="dragoverEvent"
      >{{list.title}}</div>
    </div>
  </section>
</template>
<script>
  export default {
    data() {
      return {
        dragElement: null,
        lock: true,
        data1: [
          {id: 1, title: '這里是列表1的標(biāo)題'},
          {id: 2, title: '這里是列表2的標(biāo)題'},
          {id: 3, title: '這里是列表3的標(biāo)題'},
          {id: 4, title: '這里是列表4的標(biāo)題'},
          {id: 5, title: '這里是列表5的標(biāo)題'},
          {id: 6, title: '這里是列表6的標(biāo)題'},
          {id: 7, title: '這里是列表7的標(biāo)題'}
        ],
        data2: [
          {id: 1, title: '這里是列表11的標(biāo)題'},
          {id: 2, title: '這里是列表12的標(biāo)題'},
          {id: 3, title: '這里是列表13的標(biāo)題'},
          {id: 4, title: '這里是列表14的標(biāo)題'}
        ]
      }
    },
    methods: {
      dragstartEvent(ev) {
        const self = this;
        self.dragElement = ev.target;
        ev.target.style.backgroundColor = '#f8f8f8';
      },
      dragendEvent(ev) {
        ev.target.style.backgroundColor = '#fff';
        ev.preventDefault();
      },
      dragenterEvent(ev) {
        const self = this;
        if(self.dragElement != ev.target){
          ev.target.parentNode.insertBefore(self.dragElement, ev.target);
        }
      },
      dragleaveEvent(ev) {
        const self = this;
        if(self.dragElement != ev.target){
          if(self.lock && (ev.target == ev.target.parentNode.lastElementChild || ev.target == ev.target.parentNode.lastChild)){
            ev.target.parentNode.appendChild(self.dragElement);
            self.lock = false;
          }else{
            self.lock = true;
          }
        }
      },
      dragoverEvent(ev) {
        ev.preventDefault();
      }
    }
  }
</script>
<style scoped>
  .drag-box-left{
    float: left;
    width: 45%;
  }
  .drag-box-right{
    float: right;
    width: 45%;
  }
  .drag-list{
    border: 1px solid #ddd;
    padding:10px;
    margin-bottom: 20px;
    transition: border .3s;
  }
  .drag-list:hover{
    border: 1px solid #20a0ff;
  }
  .drag-title{
    font-weight: 400;
    line-height: 25px;
    margin: 10px 0;
    font-size: 22px;
    color: #1f2f3d;
  }
</style>

總結(jié)

以上所述是小編給大家介紹的Vue實(shí)現(xiàn)拖放排序功能的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • 深入理解vue $refs的基本用法

    深入理解vue $refs的基本用法

    本篇文章主要介紹了深入理解vue $refs的基本用法 ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • Vue項(xiàng)目中實(shí)現(xiàn)AES加密解密的全過(guò)程

    Vue項(xiàng)目中實(shí)現(xiàn)AES加密解密的全過(guò)程

    AES算法是一種對(duì)稱加密算法,用于加密和解密數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中實(shí)現(xiàn)AES加密解密的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • vue2?element-ui?el-checkbox視圖不更新問(wèn)題及解決

    vue2?element-ui?el-checkbox視圖不更新問(wèn)題及解決

    作者在開(kāi)發(fā)過(guò)程中遇到了視圖不更新的問(wèn)題,最終通過(guò)改變一個(gè)無(wú)關(guān)緊要的響應(yīng)式數(shù)據(jù)來(lái)解決,讓視圖發(fā)生改變
    2024-12-12
  • Vue項(xiàng)目打包壓縮的實(shí)現(xiàn)(讓頁(yè)面更快響應(yīng))

    Vue項(xiàng)目打包壓縮的實(shí)現(xiàn)(讓頁(yè)面更快響應(yīng))

    這篇文章主要介紹了Vue項(xiàng)目打包壓縮的實(shí)現(xiàn)(讓頁(yè)面更快響應(yīng)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • vue-cli 使用vue-bus來(lái)全局控制的實(shí)例講解

    vue-cli 使用vue-bus來(lái)全局控制的實(shí)例講解

    今天小編就為大家分享一篇 vue-cli使用vue-bus來(lái)全局控制的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vue系列之requireJs中引入vue-router的方法

    vue系列之requireJs中引入vue-router的方法

    這篇文章主要介紹了vue系列之requireJs中引入vue-router的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Vue.js中的下載和調(diào)用方式

    Vue.js中的下載和調(diào)用方式

    這篇文章主要介紹了Vue.js中的下載和調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • VUE3函數(shù)的聲明和使用舉例

    VUE3函數(shù)的聲明和使用舉例

    這篇文章主要給大家介紹了關(guān)于VUE3函數(shù)的聲明和使用的相關(guān)資料, Vue3是一種流行的JavaScript框架,它允許開(kāi)發(fā)人員構(gòu)建現(xiàn)代化的Web應(yīng)用程序,需要的朋友可以參考下
    2023-07-07
  • vue?px轉(zhuǎn)rem配置詳解

    vue?px轉(zhuǎn)rem配置詳解

    這篇文章主要為大家介紹了vue?px轉(zhuǎn)rem配置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • vue+element-ui實(shí)現(xiàn)表格編輯的三種實(shí)現(xiàn)方式

    vue+element-ui實(shí)現(xiàn)表格編輯的三種實(shí)現(xiàn)方式

    這篇文章主要介紹了vue+element-ui實(shí)現(xiàn)表格編輯的三種實(shí)現(xiàn)方式,主要有表格內(nèi)部顯示和編輯切換,通過(guò)彈出另外一個(gè)表格編輯和直接通過(guò)樣式控制三種方式,感興趣的小伙伴們可以參考一下
    2018-10-10

最新評(píng)論

潍坊市| 宜城市| 友谊县| 北流市| 西安市| 连云港市| 湟中县| 南郑县| 陇南市| 水富县| 芜湖县| 阜康市| 邓州市| 定日县| 灵丘县| 泰宁县| 西畴县| 琼中| 三穗县| 门头沟区| 辽阳市| 沁水县| 中超| 海晏县| 团风县| 金山区| 怀来县| 绿春县| 昭通市| 弥勒县| 屏南县| 河源市| 高唐县| 松江区| 化隆| 临城县| 中卫市| 四平市| 叙永县| 项城市| 桂阳县|