手机列表删除

作者: 哎呦程序猿 | 来源:发表于2018-03-20 15:43 被阅读14次

实现效果:

image
  • 【新建删除组建 dellist】

<template>
  <div class="delete">
    <div class="slider">
      <div class="content"
           @touchstart='touchStart'
           @touchmove='touchMove'
           @touchend='touchEnd'
           :style="deleteSlider"
      >
        <!-- 插槽中放具体项目中需要内容     -->
        <slot></slot>
      </div>
      <div class="remove active" ref='remove' @click="handleClick">
        删除
      </div>
    </div>

  </div>
</template>
<script type="text/ecmascript-6">
  export default {
    props:{
      propE: {
        type: Object,
        default: function () {
        }
      }
    },
    data() {
      return {
        startX:0,  //触摸位置
        endX:0,   //结束位置
        moveX: 0,  //滑动时的位置
        disX: 0,  //移动距离
        deleteSlider: '',//滑动时的效果,使用v-bind:style="deleteSlider"
      }
    },

    methods:{
      handleClick (v) {
        //this.$emit('msg-from-child', this.val)
        this.$emit('msg-from-child', v)
        this.deleteSlider = "transform:translateX(0px)";
      },
      touchStart(ev){
        ev= ev || event
        //tounches类数组,等于1时表示此时有只有一只手指在触摸屏幕
        if(ev.touches.length == 1){
          // 记录开始位置
          this.startX = ev.touches[0].clientX;
        }
      },
      touchMove(ev){
        ev = ev || event;
        //获取删除按钮的宽度,此宽度为滑块左滑的最大距离
        let wd=this.$refs.remove.offsetWidth;
        if(ev.touches.length == 1) {
          // 滑动时距离浏览器左侧实时距离
          this.moveX = ev.touches[0].clientX

          //起始位置减去 实时的滑动的距离,得到手指实时偏移距离
          this.disX = this.startX - this.moveX;
          // 如果是向右滑动或者不滑动,不改变滑块的位置
          if(this.disX < 0 || this.disX == 0) {
            this.deleteSlider = "transform:translateX(0px)";
            // 大于0,表示左滑了,此时滑块开始滑动
          }else if (this.disX > 0) {
            //具体滑动距离我取的是 手指偏移距离*5。
            this.deleteSlider = "transform:translateX(-" + this.disX*5 + "px)";

            // 最大也只能等于删除按钮宽度
            if (this.disX*5 >=wd) {
              this.deleteSlider = "transform:translateX(-" +wd+ "px)";

            }
          }
        }
      },
      touchEnd(ev){
        ev = ev || event;
        let wd=this.$refs.remove.offsetWidth;
        if (ev.changedTouches.length == 1) {
          let endX = ev.changedTouches[0].clientX;

          this.disX = this.startX - endX;
          //如果距离小于删除按钮一半,强行回到起点

          if ((this.disX*5) < (wd/2)) {

            this.deleteSlider = "transform:translateX(0px)";
          }else{
            //大于一半 滑动到最大值
            this.deleteSlider = "transform:translateX(-"+wd+ "px)";
          }
        }
      }
    }
  }
</script>
<style scoped lang="less" scoped>
  .slider{
    width: 100%;
    height:50px;
    position: relative;
    user-select: none;
    .content{
      position: absolute;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
      background: #fff;
      z-index: 100;
      //  设置过渡动画
      transition: 0.3s;

    }
    .remove{
      position: absolute;
      background:red;
      right: 0;
      top: 0;
      color:#fff;
      line-height: 50px;
      padding: 0px 12px;
      text-align: center;
      font-size: 14px;
    }
  }

</style>

  • 【组建list应用】

<template>
  <div class="list">
    <ul class="item">
          <li v-for="(item,index) in list">
            <Dellist @msg-from-child="deleteItem(index,item)">
              <p>{{item.content}}</p>
            </Dellist>
            <div class="delete_button"></div>
          </li>
        </ul>
  </div>
</template>


<script>
  import Dellist from './Dellist';
    export default {
        name: "list",
        data() {
            return {
              list:[],
              sliderConf:{//滑动配置
                distance:1.4,
              }
            }
        },
      components: {
          Dellist
        },
        methods: {
          //删除
          deleteItem: function(index,it) {
            var m =this;
            m.list.splice(index, 1);

          }
        }
    }
</script>

相关文章

  • 手机列表删除

    实现效果: 【新建删除组建 dellist】 【组建list应用】

  • python初学19.Python特色数据类型(列表)(下)

    删除列表中的元素 del操作可以删除整个列表或者列表的子列表 指定索引 0 删除元素: 删除列表的字列表: 删除整...

  • Python笔记-删除元素

    列表删除元素的方法 从列表中删除单个元素remove, pop, del,其中:remove,删除列表中的某个值:...

  • Python基础(13) - 删除列表元素方法del,pop

    Del的用法 del删除列表元素 可以根据索引删除列表元素,但是没有返回值 元素会直接删除掉 pop删除列表元素 ...

  • 总结一下各种删除

    (一)remove remove删除:列表、集合 列表:删除列表中某个值的第一个匹配项。 集合:删除集合中的指定元...

  • 删除列表

    1、使用 remove 函数删除代码:names=["Tony","Lisa","July","Merry","小...

  • Python 之列表

    列表简介 修改列表元素 在列表中添加元素 在列表中插入元素 从列表中删除元素 使用方法pop() 删除元素 弹出列...

  • python numpy学习总结

    Python列表的一些操作 1、列表(list)的元素删除方法 a.pop(index):删除列表a中index处...

  • 2020-09-27列表的删除-切片-相关操作-相关方法

    day5-列表的删除-切片-相关操作-相关方法 列表的删除 练习:删除指定分数列表中所有低于60分的成绩坑一:直接...

  • Python入门(五)

    列表操作 上次课程我们将到了列表,接着我们继续来看列表的一些操作 删除列表中的元素 del 函数可以删除列表中的元...

网友评论

    本文标题:手机列表删除

    本文链接:https://www.haomeiwen.com/subject/gnrbqftx.html