vue左右滑动切换图片,vue图片滚动

  vue左右滑动切换图片,vue图片滚动

  本文主要详细介绍了图像拖动和排序的vue实现。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

  本文分享了vue对图片进行拖动和排序的具体代码,供大家参考。具体内容如下

  原理:有一个图片列表,拖动其中一个(触发dragstart),当拖动的图片移动到其他图片的位置时(触发dragover),将拖动的图片从原来的位置移动到这个位置(触发dragend)。

  dragstart:当用户开始拖动元素或选定的文本时,将触发dragstart事件。

  dragover:当一个元素或选定的文本被拖动到一个有效的拖放目标时,dragover事件被触发(每隔几百毫秒触发一次)。

  dragend:拖放操作结束时触发拖放事件。(我们这里不一定要用)

  (1)图片列表HTML结构。将属性draggable添加到要拖动的元素中。这里注意:loop的模板的键值需要是唯一的,因为vue会在渲染时就地重用它。如果键值是唯一的,那么重新排序后呈现的列表节点将不会被重用,这样可以避免一些问题。(当我们插入时,我们会根据序号将一些数据插入到数组中)

  ul class=拖动容器

  @dragstart=onDragStart

  @dragover=onDragOver

  @dragend=onDragEnd

  ref=imgList

  里

  列表中的v-for=(item,idx)

  :key=item.path

  class=拖动列表

  draggable=true

  img :src=item.path alt= /

  /李

  /ul

  (2)事件: dragstart,onDragStart上的dragover绑定事件,onDragOver

  OnDragStart:标识需要拖动的元素,并保存在拖动过程中dragover的绑定事件的状态中。

  onDragStart(事件){

  console . log(“start”);

  this . draging=event . target;

  },

  OnDragOver:在拖动过程中,当它位于有效目标上,并且目标元素(而不是被拖动的元素)被识别时,该事件被触发。首先,识别目标元素是否是我们需要的目标元素。先判断是否是li元素,判断图片是否和拖动的一样,然后插入拖动的元素。

  识别拖动元素和目标元素的位置序号,在目标元素前插入拖动元素,然后删除拖动元素原始位置的数据。在vue中,你只需要操作数据。

  onDragOver(事件){

  console.log(拖动移动)

  event . prevent default();

  let target=event.target

  //因为dragover会发生在ul上,所以需要判断是不是李

  if (target.nodeName===LI

  target.childNodes[0]。src!==this.draging.childNodes[0]。src) {

  设idx_drag=this。_index(this.draging)

  设idx_target=this。_索引(目标)

  let _list=this.list

  let _drag=this.list[idx_drag]

  if(idx_dragidx_target){

  _list.splice(idx_target,0,_ list[idx _ drag]);

  _list.splice(idx_drag 1,1)

  }否则{

  _list.splice(idx_target 1,0,_ list[idx _ drag]);

  _list.splice(idx_drag,1)

  }

  console.log(_list[0])。路径)

  这个。$emit(change ,_list)

  }

  },

  完整的代码如下:

  模板

   div class= image-list v-if= list list . length

  ul class=拖动容器

  @dragstart=onDragStart

  @dragover=onDragOver

  @dragend=onDragEnd

  ref=imgList

  里

  列表中的v-for=(item,idx)

  :key=item.path

  class=拖动列表

  draggable=true

  img :src=item.path alt= /

  /李

  /ul

  /div

  /模板

  脚本

  导出默认值{

  名称:拖动图像列表,

  道具:{

  列表:数组,

  },

  data(){

  返回{

  拖动:null,//被拖拽的对象

  }

  },

  方法:{

  onDragStart(事件){

  控制台。log(" start ");

  这个。拖动=事件。目标;

  },

  翁德拉戈弗(事件){

  console.log(拖动移动)

  事件。防止默认();

  让目标=事件.目标

  //因为德拉戈夫会发生在保险商实验所上,所以要判断是不是里

  如果(目标。nodename=== LI 目标。子节点[0].src!==this.draging.childNodes[0].src) {

  设idx_drag=this ._index(this.draging)

  设idx_target=this ._索引(目标)

  let _list=this.list

  let _drag=this.list[idx_drag]

  if(idx_dragidx_target){

  _list.splice(idx_target,0,_ list[idx _ drag]);

  _list.splice(idx_drag 1,1)

  }否则{

  _list.splice(idx_target 1,0,_ list[idx _ drag]);

  _list.splice(idx_drag,1)

  }

  console.log(_list[0]).路径)

  }

  },

  翁德拉根德(事件){

  console.log(结束事件)

  },

  _index(el){

  定义变量指数=0;

  如果(!el !el.parentNode) {

  return-1;

  }

  while(El(El=El。previouselementsibling)){

  指数;

  }

  回报指数;

  },

  }

  }

  /脚本

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: