微信小程序开发 scroll-view实现横向纵向滚动

教程指路:2.4.scroll-view可滚动视图区域组件_哔哩哔哩_bilibili

目录

scroll-view 可滚动视图区域组件

 实现纵向滚动

实现横向滚动


scroll-view 可滚动视图区域组件

微信小程序开发文档:

在wxml中写8行数字,且逐一递增

<view class="myScroll">
  <!-- 快捷布局 .row{$}*8 $ 往里面代入值-->
  <view class="row">1</view>
  <view class="row">2</view>
  <view class="row">3</view>
  <view class="row">4</view>
  <view class="row">5</view>
  <view class="row">6</view>
  <view class="row">7</view>
  <view class="row">8</view>
</view>
<!-- 布局完之后记得写样式 wxss -->

wxss,写一下每个盒子的样式

.myScroll{
  /* 盒子的样式 */
  width: 100%;
  background: #eeeeee;
  height: 220rpx;
  /* 让父件适应子件高度 */

}

.myScroll .row{
  /* 定义每个子件 */
  width: 220rpx;
  height: 220rpx;
  background: palegreen;
  margin-right: 20rpx;
  /* 右边间距 */

}

 实现纵向滚动

wxml

<scroll-view class="myScroll" scroll-y>
  <!-- 快捷布局 .row{$}*8 $ 往里面代入值-->
  <view class="row">1</view>
  <view class="row">2</view>
  <view class="row">3</view>
  <view class="row">4</view>
  <view class="row">5</view>
  <view class="row">6</view>
  <view class="row">7</view>
  <view class="row">8</view>
</scroll-view>
<!-- 布局完之后记得写样式 wxss -->

实现效果

实现横向滚动

.myScroll{
  /* 盒子的样式 */
  width: 100%;
  background: #eeeeee;
  height: 220rpx;
  /* 让父件适应子件高度 */
  /* 强制让子元素显示在一行 */
  white-space: nowrap;


}

.myScroll .row{
  /* 定义每个子件 */
  width: 220rpx;
  height: 220rpx;
  background: palegreen;
  margin-right: 20rpx;
  /* 右边间距 */
  /* 转成行级块元素 */
  display: inline-block;

}

.myScroll .row:last-child{
  /* 选择最后一个子件 清零边距 */
  margin-right: 0;

}

记得让最右边顶格

实现效果

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
除了使用`scroll-view`组件来实现滚动外,微信小程序还提供了一种不用`scroll-view`组件的方式来实现滚动,即使用`transform`属性来实现。 具体实现方法是,在需要滚动的元素上添加一个`transform: translateY()`样式,并且在JS文件中监听`touchstart`、`touchmove`、`touchend`事件,通过计算手指移动的距离来实现元素的滚动。 下面是一个示例代码: ``` <view class="container" style="transform: translateY({{scrollTop}}px);"> <view class="item" wx:for="{{list}}" wx:key="{{index}}">{{item}}</view> </view> ``` 在上面的代码中,我们在一个`<view>`元素上添加了`transform: translateY()`样式,并使用`{{scrollTop}}`来动态计算滚动的距离。 在JS文件中,我们需要定义`touchstart`、`touchmove`、`touchend`事件的监听器,并在其中实现滚动逻辑: ``` Page({ startY: 0, moveY: 0, distanceY: 0, scrollTop: 0, onTouchStart: function(e) { this.startY = e.touches[0].clientY }, onTouchMove: function(e) { this.moveY = e.touches[0].clientY this.distanceY = this.moveY - this.startY this.scrollTop += this.distanceY this.startY = this.moveY this.setData({ scrollTop: this.scrollTop }) }, onTouchEnd: function(e) { // 处理滚动结束事件 } }) ``` 在上面的代码中,我们定义了一个名为`onTouchStart`的函数来处理`touchstart`事件,并记录手指触摸的起始位置。同时,我们还定义了一个名为`onTouchMove`的函数来处理`touchmove`事件,并计算手指移动的距离,并通过`setData`方法将`scrollTop`属性更新为新的滚动距离。最后,我们还定义了一个名为`onTouchEnd`的函数来处理`touchend`事件,并在其中处理滚动结束的逻辑。 需要注意的是,使用`transform`属性来实现滚动的方式,需要手动处理滚动的逻辑,相对于使用`scroll-view`组件来说,实现起来更加复杂。同时,由于使用了`transform`属性,可能会导致一些性能问题,需要根据实际情况进行优化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Re.no1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值