小程序横向scroll-view组件自动滚动到某个view

本文介绍如何使用小程序中的scroll-view组件实现时间分栏功能。通过设置scroll-x属性来实现水平滑动,并利用scroll-into-view进行平滑滚动定位。文章详细展示了wxml和样式代码,以及如何通过setData更新页面数据。

先看下效果

scroll-view一般用于做横向侧滑动栏目,分类等等,在这里我用改组件做时间分栏。

wxml部分

<view class="scroll_box">
  <scroll-view class="scroll-view_x" scroll-x='true' scroll-into-view="{{toview}}" scroll-with-animation="true" scroll-left="{{scrollLeftSys}}">
    <view class="item_list" class="{{item.isChoose?'choosed':'not_choose'}}" wx:for="{{classData}}" wx:key='key' id='{{item.id}}' data-index="{{index}}" bindtap='switchType'>
      <text>{{item.time}}</text>
      <text>{{item.desc}}</text>
    </view>
  </scroll-view>
</view>

scroll-view中属性scroll-x/scroll-y声明该控件的滑动方向,属性scroll-into-view='target'为自定滚动到携带目标id='target'某个元素,scroll-left属性为滚动条左边距离,scroll-with-animation:滚动条时滚动动画,属性值为布尔值,具体文档详见;

小程序scroll-view组件

scroll-view样式

.scroll_box .scroll-view_x {
  width: 100%;
  white-space: nowrap;
  height: 4rem;
  overflow: hidden;
}

item的样式

.choosed {
  width: 20%;
  padding: 0.8rem 6.5%;
  font-size: 0.8rem;
  color: white;
  display: inline-block;
  white-space: nowrap;
  background-color: #fe4a65;
}

.not_choose {
  width: 20%;
  padding: 0.8rem 6.5%;
  font-size: 0.8rem;
  color: white;
  display: inline-block;
  white-space: nowrap;
  background-color: black;
}

.choosed text, .not_choose text {
  display: block;
  width: 100%;
  font-size: 0.8rem;
  text-align: center;
}

page对象data属性中的classData


再处理完数据之后,需要更新一次page对象中的data,

 that.setData({
            toview: 'target'
          })
至此,这个功能就完成了。


### 实现微信小程序 scroll-view 横向滚动的方法 在微信小程序中,`scroll-view` 是一个专门用于实现滚动内容的组件。通过合理设置其属性和样式,可以轻松实现横向滚动效果。 #### 核心配置 为了启用横向滚动,必须将 `scroll-x` 设置为 `"true"`,并配合特定的 CSS 样式来确保子元素能够正确排列在同一行内。例如: ```xml <scroll-view class="scroll-view-H" scroll-x="true" style="width: 100%"> <view id="item1" class="scroll-item">1</view> <view id="item2" class="scroll-item">2</view> <view id="item3" class="scroll-item">3</view> <view id="item4" class="scroll-item">4</view> <view id="item5" class="scroll-item">5</view> </scroll-view> ``` #### 样式设置 为了让子元素水平排列,需要使用 `white-space: nowrap` 和 `display: flex` 等样式。其中 `display: inline-block` 是子元素必须满足的条件之一[^1]。以下是一个典型的样式定义: ```css .scroll-view-H { display: flex; overflow-x: auto; white-space: nowrap; } .scroll-item { display: inline-block; width: 200px; /* 可根据实际需求调整 */ } ``` #### 滚动到指定元素 如果希望滚动到某个特定的子元素位置,可以通过 `scroll-into-view` 属性实现。该属性接收一个子元素的 `id` 名称,并自动滚动至该元素可见区域[^1]。例如: ```xml <scroll-view class="scroll-view-H" scroll-x="true" scroll-into-view="{{rightId}}" style="width: 100%"> <view id="item1" class="scroll-item">1</view> <view id="item2" class="scroll-item">2</view> <view id="item3" class="scroll-item">3</view> <view id="item4" class="scroll-item">4</view> <view id="item5" class="scroll-item">5</view> </scroll-view> ``` 在对应的 JavaScript 文件中,只需要动态更新 `rightId` 的值即可: ```javascript Page({ data: { rightId: 'item3' } }); ``` #### 注意事项 - **避免重复 ID**:每个子元素的 `id` 应该是唯一的,否则可能导致 `scroll-into-view` 失效。 - **兼容性问题**:在某些设备上可能会出现滚动条显示异常的情况,建议测试不同分辨率下的表现并进行适配[^2]。 - **性能优化**:当子元素数量较多时,应考虑虚拟滚动等技术减少 DOM 节点渲染压力。 ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值