微信小程序——滑动条

一、微信自带的进度条——slider组件

<slider bindchanging="sliderChanging" show-value>

当slider组件被拖动时,会执行silderChanging事件处理函数,通过不断打印函数的e.detail.value,可以看出函数执行时输出的信息。

sliderChanging:function(e){
    console.log(e.detail.value)
  }

所以,我们可以将音乐、视频、下载文件的进度转化为上面的进度条,用一定的公式进行转换,随着进度的进行,不断实时改变slider的位置实现同步。

二、Vant Weapp上面的Slider滑块组件

<van-slider value="{{ currentValue }}" use-button-slot bind:drag="onDrag">
  <view class="custom-button" slot="button">
    {{ currentValue }}/100
  </view>
</van-slider>
.custom-button{
  display: flex;
  flex-direction: column;
  align-items: center;
  height: 40rpx;
  width: 120rpx;
  background-color: red;
  border-radius: 40rpx;
  color: #fff;
}
Page({
  data: {
    currentValue: 20,
  },

  onDrag(event) {
    this.setData({
      currentValue: event.detail.value,
    });
  },
})

### 微信小程序实现底部Tab栏滑动时线条动画效果 为了实现在微信小程序中的底部 Tab 栏随着页面切换而移动指示线的效果,通常会采用 CSS 和 JavaScript 结合的方式。具体来说,在 WXML 文件中定义好各个 Tab 的结构,并通过 WXSS 来控制样式;而在 JS 中监听用户的操作事件来动态改变选中状态以及相应的位置变化。 #### HTML (WXML) 部分 在 WXML 页面文件里构建基本布局: ```xml <view class="tabs"> <block wx:for="{{tabItems}}" wx:key="index"> <view data-index="{{index}}" bindtap="switchTab" class="tab {{currentIndex === index ? 'active' : ''}}"> {{item}} </view> </block> </view> <!-- 下划线 --> <view class="underline" style="left:{{underlineLeft}};"></view> ``` 这里 `data-index` 属性用来标记每一个标签页对应的索引值,方便后续处理点击逻辑;`bindtap="switchTab"` 绑定了一个名为 switchTab 的方法用于响应用户触碰行为;最后还有一个单独的 view 作为下划线元素,其定位由父组件计算得出并传递给它。 #### 样式表 (WXSS) 对于上述提到的 .tabs, .tab 及 .underline 类名,则可以在关联的小程序样式文件内为其指定具体的外观特性: ```css .tabs { display: flex; justify-content: space-around; align-items: center; } .tab { padding-bottom: 8px; /* 调整文字与底线间距 */ } .active { color: blue !important; /* 当前激活项颜色 */ } .underline { position: absolute; bottom: 0; height: 3px; background-color: blue; transition-property: all; transition-duration: 0.3s; } ``` 这段代码设置了 `.tabs` 容器为弹性盒子模型以便于子元素均匀分布排列;`.underline` 则被赋予绝对定位使其能够相对于最近一次已知尺寸的祖先元素自由浮动,并且指定了过渡时间让位移过程更加平滑自然[^1]。 #### JavaScript 处理部分 接下来就是核心的部分——如何根据不同的交互情况更新视图的状态了。这需要我们在 Page 对象内部编写相应的函数来进行管理: ```javascript Page({ data: { currentIndex: 0, underlineLeft: '0%', tabItems: ['首页', '分类', '购物车', '我的'] }, onLoad() {}, onReady() {}, switchTab(e){ const newIndex = e.currentTarget.dataset.index; this.setData({ currentIndex: newIndex, // 计算新的左边距百分比 underlineLeft: `${newIndex * (100 / this.data.tabItems.length)}%` }); // 如果有实际页面跳转需求可在此处调用 wx.switchTab 或者其他导航 API } }) ``` 此段脚本首先初始化了一些必要的变量存储初始条件下的数据源信息,接着定义了一个叫做 `switchTab()` 的回调处理器负责接收来自界面上触发的动作消息。每当检测到某次触摸动作发生后就会依据传入的目标节点获取对应序号进而调整当前高亮显示区域的同时也同步修改那根横杠所处的具体坐标位置[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值