本期教学为实现【58租房】小程序中租金区间滑动筛选的交互细节,一起来看看~
效果预览:
一、交互逻辑分析
1、滑动左右两个滑块,可以动态调节价格区间;
2、区间价格为整数,且为100的倍数;
3、当【右滑块】为最右边时,无论怎么滑动【左滑块】,最高价格文案仍为“不限”;
4、当【右滑块】不在最右边时,滑动左右两个滑块,最低和最高价格文案跟着动态变化;
5、边界问题:【左滑块】滑动区间为灰色矩形的左端点至右滑块左端点,【右滑块】滑动区间为左滑块右端点至灰色矩形右端点;
二、界面元件搭建
1、拉入两个圆形,大小设为30*30,分别命名为左、右,再将其转为动态面板,分别命名为:左滑块、右滑块;(转为动态面板,是因为动态面板才有“拖动”交互事件)
2、拉入两个矩形,宽高都一致,一个命名为“背景”,填充色为灰色。另一个命名为“高亮”,填充色为红色;
3、再拉入一个文本标签,作为价格区间的文案展示,初始文案为:¥0元 — 不限;
4、排版细节:此教程滑动的距离计算以【滑动的中心点】为参考坐标,所以,左右滑块的中心点位置,需要分别对齐底部背景矩形的左右两边的端点。
如下:
三、交互事件实现
1、选中“左滑块”,添加一个空的【鼠标单击时】事件。(目的是,让鼠标移动到滑块时,有手指效果)
2、再添加【拖动时】,滑块的移动事件:
元件 》移动 》勾选【当前元件】,移动为【水平拖动】。
为了防止滑块拖出矩形的两端,还需要添加边界。其左右边界如下:
左侧 ≥[[LVAR1.left-This.width/2]],其中LVAR1为元件【背景】,This为滑块本身;
右侧 ≤[[LVAR1.x]],其中LVAR1为元件【右滑块】;
3、设置【高亮】矩形的尺寸
元件 》设置尺寸 ,勾选【高亮】矩形,宽设置为:[[LVAR1.x-This.x]],其中LVAR1为右滑块,This为左滑块。即宽度尺寸为左右两个滑块的距离。
特别需要注意其变化的锚点为:右侧。
4、设置【价格区间】文案
元件 》 设置文本 》勾选【价格区间】,其文本值为:¥[[Math.floor((This.x+This.width/2-LVAR2.x)/LVAR2.width*100)*100]]元 — ¥[[Math.floor((LVAR1.x+LVAR1.width/2-LVAR2.x)/LVAR2.width*100)*100]]元 。其中,LVAR1为右滑块,LVAR2为背景矩形。
温馨提示:
函数Math.floor为取整函数。
上述公式最低值的逻辑为,左滑块中心点到背景矩形左端点的距离,再除以背景矩形的宽度,得到比例。因为数值为整数,且为100的倍数,假设最高值为10000,即可乘以100,用函数取整,先得到100以内的整数,再乘以100,得到100的倍数。
同理,最高值的逻辑为,右滑块的中心点到背景矩形左端点的距离,再除以背景矩形的宽度,得到比例,乘以100,再用函数取整,再乘以100,得到100的倍数。
5、最后,添加判断条件
if “[[LVAR1.x+LVAR1.width/2]]” < “[[LVAR1.right]]”,其中,左边LVAR1为右滑块,右边LVAR1为背景矩形。即当右滑块中心点位置在背景矩形的左端点时。
6、添加另一个条件交互事件(即右滑块中心点位置正好位于背景矩形的左端点。)
其中,滑块的移动,高亮矩形的尺寸公式一致,直接复制即可。
【价格区间】的文案变化为:¥[[Math.floor((This.x+This.width/2-LVAR2.x)/LVAR2.width*100)*100]]元 — 不限,其中,LVAR2为背景矩形。
详细交互事件如下图所示:
7、同理,我们可以得到右滑块的交互事件,其实现逻辑与左滑块相似
详细交互事件如下如所示:
其中,右滑块的左右边界如下:
左侧 ≥[[LVAR1.right]],其中LVAR1为元件【左滑块】;
右侧 ≤[[LVAR1.right+This.width/2]],其中LVAR1为元件【背景】矩形;
高亮矩形的尺寸:[[This.x-LVAR1.x]],其中This为右滑块,LVAR1为左滑块。即宽度尺寸为左右两个滑块的距离。
设置【价格区间】文案:
1)当【右滑块】中心点位于【背景】矩形的右侧时,文案为:
¥[[Math.floor((LVAR1.x+LVAR1.width/2-LVAR2.x)/LVAR2.width*100)*100]]元 — ¥[[Math.floor((This.x+This.width/2-LVAR2.x)/LVAR2.width*100)*100]]元。其中,LVAR1为左滑块,LVAR2为背景矩形。
2)否则,文案为:
¥[[Math.floor((LVAR1.x+LVAR1.width/2-LVAR2.x)/LVAR2.width*100)*100]]元 — 不限。其中,LVAR1为左滑块,LVAR2为背景矩形。
四、预览效果
案例效果: