小程序地址左滑默认删除

我们在开发小程序时,总会遇到一些删除功能列表的操作,触屏左滑操作,即显示可操作删除按钮;

首先,我们需要在components里边注册一个组件,

我们在 components中创建一个slide目录,然后在新建Component,命名为slide,这样就自动生成slide组件

我们就在slide.wxml中写入

<!--slide-view/slide-view.wxml-->
<movable-area class="container" style="width: {{width}}rpx; height: {{height}}rpx;">
  <movable-view direction="horizontal" class="movable-view" out-of-bounds="{{out}}" damping="20" x="{{x}}" style="width: {{width + slideWidth}}rpx; height: {{height}}rpx;" inertia bindtouchend="onTouchEnd" bindtouchstart="onTouchStart" bindchange="onChange">
    <view class="left">
      <slot name="left"></slot>
    </view>
    <view class="right">
      <slot name="right"></slot>
    </view>
  </movable-view>
</movable-area>

  slide.wxss中写入样式

.movable-view {
  display: flex;
  direction: row;
  overflow: hidden;
}

.container {
  overflow: hidden;
}

  slide.js中写入 js逻辑

const _windowWidth = wx.getSystemInfoSync().windowWidth // (px)
Component({
  /**
   * 组件的属性列表
   */
  options: {
    multipleSlots: true,
  },
  properties: {
    //  组件显示区域的宽度 (rpx)
    width: {
      type: Number,
      value: 750 // 750rpx 即整屏宽
    },
    //  组件显示区域的高度 (rpx)
    height: {
      type: Number,
      value: 0,
    },
    //  组件滑动显示区域的宽度 (rpx)
    slideWidth: {
      type: Number,
      value: 0
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    viewWidth: _windowWidth, // (rpx)
    //  movable-view偏移量
    x: 0,
    //  movable-view是否可以出界
    out: false,
  },

  /**
   * 组件的方法列表
   */
  ready() {
    this.updateRight()
  },
  methods: {
    updateRight() {
      // 获取右侧滑动显示区域的宽度
      const that = this
      const query = wx.createSelectorQuery().in(this)
      query.select(‘.right‘).boundingClientRect(function(res) {
        that._slideWidth = res.width
        that._threshold = res.width / 2
        that._viewWidth = that.data.width + res.width * (750 / _windowWidth)
        that.setData({
          viewWidth: that._viewWidth
        })
      }).exec()
    },
    onTouchStart(e) {
      this._startX = e.changedTouches[0].pageX
    },
    //  当滑动范围超过阈值自动完成剩余滑动
    onTouchEnd(e) {
      this._endX = e.changedTouches[0].pageX
      const {
        _endX,
        _startX,
        _threshold
      } = this
      if (_endX > _startX && this.data.out === false) return
      if (_startX - _endX >= _threshold) {
        this.setData({
          x: -this._slideWidth
        })
      } else if (_startX - _endX < _threshold && _startX - _endX > 0) {
        this.setData({
          x: 0
        })
      } else if (_endX - _startX >= _threshold) {
        this.setData({
          x: 0
        })
      } else if (_endX - _startX < _threshold && _endX - _startX > 0) {
        this.setData({
          x: -this._slideWidth
        })
      }
    },
    //  根据滑动的范围设定是否允许movable-view出界
    onChange(e) {
      if (!this.data.out && e.detail.x < -this._threshold) {
        this.setData({
          out: true
        })
      } else if (this.data.out && e.detail.x >= -this._threshold) {
        this.setData({
          out: false
        })
      }
    }
  }
})

  当我们在页面引用时,我们可以在 .json来引用组件,这样我们就可以使用它

在页面 .wxml中注入样式

 <slide-view width="750" height="150" slide-width="500">
    <slide-view width="750" height="150" slide-width="500">
      <view slot="left" class="l">
        ##这里的内容是你自己写的样式
      </view>
      <view slot="right" class="r">
        <view  class=‘read‘>默认</view>
        <view  class=‘delete‘>删除</view>
      </view>
    </slide-view>

  这样我们就实现了slide触屏左滑操作

原文地址:https://www.cnblogs.com/BySee1423/p/12557235.html

时间: 2024-08-01 14:40:09

小程序地址左滑默认删除的相关文章

小程序实现左滑删除效果

小程序的左滑删除效果用的是组件 movable-area 和 movable-view 文档 : https://developers.weixin.qq.com/miniprogram/dev/component/movable-view.html 1.movable-area基本概念 (1)movable-area这个就是定义了一个移动的区域,跟普通的<view></view>的含义是一样的,不同在于,接着往下看: 注意:movable-area 必须设置width和heigh

微信小程序实现左滑删除源码

左滑删除效果在app的交互方式中十分流行,比如全民应用微信 微信左滑删除 再比如曾引起很大反响的效率app Clear Clear左滑删除 从技术上来说,实现这个效果并不困难,响应一下滑动操作,移动一下组件,再加上些坐标计算,状态记录就可以了.也有一些文章介绍了在小程序上如何实现这一效果,不过我基本可以确定这些开发者没有在真机上详细测试,因为经我实践发现,在小程序上想要完美实现这个效果几乎是不可能完成的任务. 这一切要从小程序的事件机制说起.对于滑动类操作,小程序提供了bind和catch两种响

微信小程序列表左滑删除,删除按钮自适应高度,删除后列表归位,同时存在一个左滑元素,目前为止写过最舒服的左滑删除

js page({ data:{ items:[ //isTouchMove初始化取消所有元素的向左滑动 {name:'店名范德萨',huowu:'鸭脖货物鸭肠鸭头鸭爪鸭翅',time:'2032-32-32 12:21',zhuangtai:'待付款',price:'23',current:1,isTouchMove: false}, {name:'店名久久丫',huowu:'鸭脖货物鸭肠鸭头鸭爪鸭翅',time:'2032-32-32 12:21',zhuangtai:'待收货',price

小程序 手机左滑右滑事件监听

<view class="touch" bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd" ></view> // 触摸开始事件 touchStart: function (e) { touchDot = e.touches[0].pageX; // 获取触摸时的原点 // 使用js计时器记录时间 i

Android 使用NineOldAndroids实现仿微信listview左滑出现删除itembutton

这是一个使用NineOldAndroids实现仿微信listview左滑出现删除itembutton效果.使用的是Jake Wharton的动画开源库NineOldAndroids.在API3.0(Honeycomb), SDK新增了一个android.animation包,里面的类是实现动画效果相关的类,通过Honeycomb API,能够实现非常复杂的动画效果,但是如果开发者想在3.0以下使用这一套API, 则需要使用开源框架Nine Old Androids,在这个库中会根据我们运行的机器

高仿微信实现左滑显示删除按钮功能

在实际项目中删除列表中的某一项是非常常见的功能,传统的做法可以使用长按监听器等,而现在流行的做法是左滑弹出删除按钮,微信,QQ等都是这么做的,下面做一个示例,代码如下: 主页面MainActivity:代码比较简单常规 package com.home.testslideview; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; im

微信小程序之动态添加、删除指定内容(view)和获取input值

这次遇到个问题: 1. 动态的添加指定的view内容..嗯..很简单..wx:for就搞定 2. 动态添加的内容中有input,最终获取值的时候,要获取到所有input的值并且是一个数组..嗯.. 3. 动态删除指定的已经添加的view内容.. 思路: 1. wx:for 循环view,添加一个,wx:for的内容就增加1个,那么循环的内容是用数字来循环还是数组呢? 2. input是循环出来的,所以不可能给不同的input绑定不同的 bindInput 事件,那么只有绑定一个输入事件,而且所有

微信小程序——button, swiper等默认样式更改

微信开发工具里面,无法展示编译后的一些样式,如::before,::after这些伪类.有时候我们需要修改一些组件的默认样式会略感到麻烦,因为不知道是通过哪里控制的. 我就平常遇到的一些修改默认样式,做一下汇总,不定期更新: 1.button的背景色,边框,圆角: button{ background-color: transparent; } button::after { border: 0; border-radius:0 } 2.swiper 的点的位置: .wx-swiper-dots

微信小程序 setData 数组 渲染问题 删除之后的数组渲染不正确

list: [ { id: 0, mode: 1, src: 'https://s2.yzlcq.cn/images/10070.png', text: '0' }, { id: 1, mode: 1, src: 'https://s2.yzlcq.cn/images/10070.png', text: '1' }, { id: 2, mode: 1, src: 'https://s2.yzlcq.cn/images/10070.png', text: '2' } ], onDelete(e)