不使用插件与组件库 - 如何简单实现滑动单元格

前言

很多人都在说不要重复造轮子,咱也不造轮子,最起码要有可以造轮子的简单思想,不论是写什么都有一定的用处。

这个东西实现起来没有什么难度,主要是有一些小的弯弯在里面,下面我会细说一下,具体问题。

准备

老样子,听个大概

实现效果

  • 可以左滑动 ?
  • 按钮怎么去写 ?
  • 可以有层次的出现 ?
  • 有点点的弹性效果 ?

实现思路

来说一下,实现上述的效果有什么方法,我先抛一下愚见。 先给出HTML的结构

 <div class="swipe-cell"><div class="swipe"><div class="container">内容区域</div><div class="btn-right">存放按钮区域</div></div></div> 

可以左滑动

  • 左滑动:使用transform: translateX()属性。
  • 滑多少:使用js获取DOM,去拿到每一个按钮的宽度clientWidth,滑动的是总宽度。

按钮怎么去写

  • 按钮的设计:整体存放在一个btn-right的类名盒子里,该盒子是定位在内容的右侧的,因为是流布局的页面模式,div又是块级元素,采用绝对定位,按钮很容易出现在了,可视窗口的右侧了。
  • 按钮的初始化:不论几个按钮都采用left:0放到container盒子的右侧,堆叠在一块,为下面的有层次的出现,做伏笔。

可以有层次的出现

  • 层次的出现:层次的出现不难,前面有了滑动的总距离,每一个按钮的大小,又在同一起点,所以采用一定的比例去移动,跟随上一家按钮的宽度,作为向右移动的最终的距离- 定位的作用:采用left:xxpx,来然按钮分开,第一个按钮是不需要移动的,left:0完美的贴合在container盒子的右侧,剩下了采用js计算一下,移动的比例(例如:第二个按钮,肯定需要在盒子滑出结束,定位在left:(第一个按钮width)px )

滑动的总距离的时间 = 第二个按钮移到最终地点的时间 = 第三个按钮移到最终地点的时间 = …

对象 所需时间 需滑动的距离
总距离 t 按钮的总宽度
第二按钮 t 第一个按钮的宽度

我们需要得到x2这个距离,上几家按钮的宽度的总宽度.

x1x2=总距离第一按钮的宽度\dfrac{x1}{x2} = \dfrac{总距离}{第一按钮的宽度}x2x1​=第一按钮的宽度总距离​

得出:

x2=x1×第一按钮的宽度总距离{x2} = \dfrac{x1 × 第一按钮的宽度 }{总距离}x2=总距离x1×第一按钮的宽度​

我们能轻易的拿到x2的移动,与x1移动的关系了。

假设二:向右滑动,当前总距离滑动的距离为 -x1 ,第二按钮移动的距离为 x2

总距离−x1x2=总距离第一按钮的宽度\dfrac{总距离 - x1}{x2} = \dfrac{总距离}{第一按钮的宽度}x2总距离−x1​=第一按钮的宽度总距离​

得出:

x2=(总距离−x1)×第一按钮的宽度总距离{x2} = \dfrac{(总距离 - x1) × 第一按钮的宽度 }{总距离}x2=总距离(总距离−x1)×第一按钮的宽度​

拿到x2的移动,与x1移动的关系了。

有点点的弹性效果

  • 弹性效果:都是有点溢出,在让其回归正常的一个过程动画。

开始

以上述的思路,开始先构建html与css,全部代码,最下面了,注意这是分析.

html的结构

<div class="swipe-cell"><div class="swipe"><
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序提供的组件中,Grid(网格)是一种非常强大和灵活的布局组件,可以实现多种不同的网格视图。其中一种常见的应用场景是行和列同时滑动,从而使用户可以快速浏览并选择不同的内容。 要实现这种功能,首先需要在 Grid 组件中设置 scroll-x 和 scroll-y 两个属性为 true,以允许同时滑动水平和垂直方向。同时,还需要设置每个网格项(即每个单元格)的宽度和高度,以确保它们能够按照预期的方式排列在网格中。 具体的实现方法可以分为以下几个步骤: 1. 在 wxml 文件中添加 Grid 组件,并设置 scroll-x 和 scroll-y 属性为 true。 ```html <view class="grid-container"> <grid scroll-x scroll-y> <!-- 网格项内容 --> </grid> </view> ``` 2. 在样式表中设置网格容器的高度和宽度,以及网格项的宽度和高度。 ```css .grid-container { width: 100%; height: 500rpx; } .grid-item { width: 33.3%; height: 200rpx; } ``` 3. 在 js 文件中动态设置网格项的内容和数量。 ```js Page({ data: { gridData: [] }, onLoad: function () { // 从服务器获取网格项数据 // ... // 将数据存储到 data 中 this.setData({ gridData: [ { text: '网格项1' }, { text: '网格项2' }, { text: '网格项3' }, { text: '网格项4' }, { text: '网格项5' }, // ... ] }); } }) ``` 4. 在 wxml 文件中使用 wx:for 循环遍历网格数据,并将网格项的文本内容显示出来。 ```html <view class="grid-container"> <grid scroll-x scroll-y> <block wx:for="{{ gridData }}" wx:key="{{ index }}"> <grid-item class="grid-item">{{ item.text }}</grid-item> </block> </grid> </view> ``` 综上所述,通过上述步骤,即可实现微信小程序组件 Grid 的行和列同时滑动的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值