Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信小程序开发实战(1):容器组件

微信小程序开发实战(1):容器组件

作者头像
蒙娜丽宁
发布于 2020-05-21 10:15:57
发布于 2020-05-21 10:15:57
1.5K00
代码可运行
举报
文章被收录于专栏:极客起源极客起源
运行总次数:0
代码可运行

本文主要介绍了滚动视图组件(scroll-view)的各种常用功能,例如,垂直和水平滚动、滚动事件等,并通过例子代码来演示这些功能的使用方法。

1. 垂直滚动视图

scroll-view是容器组件,如果该组件的子组件超过scroll-view的高度或宽度,该组件会允许子组件在垂直或水平方向滚动视图,以便显示其他没有显示的子组件。本节主要介绍如何让scroll-view垂直滚动。

如果要让scroll-view垂直滚动,需要设置scroll-y属性值为true。例如,下面的布局代码,将scroll-view组件的高度设为200px,里面的每一个子view的高度也是200px,而且放了4个子view。这样scroll-view就允许滚动而现实其他的子view了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<view>
       <view class="section__title">垂直滚动</view>
       <scroll-view scroll-y="true" style="height: 200px;" >
           <view id="green" class="scroll-view-item bc_green"></view>
           <view id="red"  class="scroll-view-item bc_red"></view>
           <view id="yellow" class="scroll-view-item bc_yellow"></view>
           <view id="blue" class="scroll-view-item bc_blue"></view>
       </scroll-view>
 </view>

当上下滚动是,效果如图1所示。

图1 scroll-view垂直滚动的效果

scroll-view滚动条的初始位置为0,也就是在最上端,如果要改变滚动条的默认位置,需要设置scroll-top属性,该属性默认的属性值为0,也就是滚动条在最顶端。如果该属性值不为0,滚动条会向下滚动(该属性值需大于0)。下面的布局代码设置了scroll-top属性的值是60。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<scroll-view scroll-y="true" style="height: 200px;" scroll-top="60">
   … …
</scroll-view>

显示效果如图2所示,很明显,在没有滚动的情况下,红色的子view显示了一部分(正好是60px)。

图2 设置scroll-top属性的效果

如果想让scroll-view一开始就滚动到某一个子视图,需要使用scroll-into-view属性,该属性需要指定一个子视图的id。例如,下面的布局代码设置了scroll-into-view属性的值为yellow,也就是说,当系统装载scroll-view组件时,会直接滚动到第3个子组件yellow。如果同时设置了scroll-top和scroll-into-view属性,后者的优先级更高。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<scroll-view scroll-y="true" style="height: 200px;"  bindscrolltoupper="upper" bindscrolltolower="lower"  upper-threshold="100" lower-threshold="300" bindscroll="scroll" scroll-top="100"  scroll-into-view="yellow" >
    … …
</scroll-view>

2. 水平滚动视图

如果想让scroll-view水平滚动,那么需要设置scroll-x属性为true,布局代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<view>
     <view class="section__title">水平滚动</view>
     <scroll-view class="scroll-view_H" scroll-x="true" style="width: 100%">
         <view id="green" class="scroll-view-item_H bc_green"></view>
         <view id="red"  class="scroll-view-item_H bc_red"></view>
         <view id="yellow" class="scroll-view-item_H bc_yellow"></view>
         <view id="blue" class="scroll-view-item_H bc_blue"></view>
     </scroll-view>
 </view>

其中scroll-view_H样式的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.scroll-view_H{
    white-space: nowrap;
}

显示效果如图3所示。

图3 scroll-view水平滚动的效果

如果要让滚动条默认停留在其他位置,需要设置scroll-left属性,例如,下面的布局代码将scroll-left属性的值设为50。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<scroll-view class="scroll-view_H" scroll-x="true"  scroll-left="50" style="width: 100%">
    … …
</scroll-view>

显示效果如图4所示。

图4 设置scroll-left属性的效果

3. 滚动到边缘触发事件

scroll-view组件提供了一些事件,其中当滚动条滚动到最上端或最下端(垂直滚动),或滚动到最左端或最右端(水平滚动),会分别触发两个事件,这两个事件分别用bindscrolltoupper和bindscrolltolower属性指定。这两个属性需要指定事件对应的函数名称。例如,下面的布局代码包含了两个scroll-view组件,上面的是垂直滚动,下面的是水平滚动。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <view>
         <view class="section__title">垂直滚动</view>
         <scroll-view scroll-y="true" style="height: 200px;"   bindscrolltoupper="upper" bindscrolltolower="lower" >
            <view id="green" class="scroll-view-item bc_green"></view>
            <view id="red"  class="scroll-view-item bc_red"></view>
            <view id="yellow" class="scroll-view-item bc_yellow"></view>
            <view id="blue" class="scroll-view-item bc_blue"></view>
        </scroll-view>
 
         <view class="section__title">水平滚动</view>
         <scroll-view class="scroll-view_H" scroll-x="true"  scroll-left="50" style="width: 100%"
             bindscrolltoupper="upper" bindscrolltolower="lower" >
                 <view id="green" class="scroll-view-item_H bc_green"></view>
                 <view id="red"  class="scroll-view-item_H bc_red"></view>
                 <view id="yellow" class="scroll-view-item_H bc_yellow"></view>
                 <view id="blue" class="scroll-view-item_H bc_blue"></view>
         </scroll-view>
 </view>

在上面的布局代码中,bindscrolltoupper指定了upper方法,而bindscrolltolower指定了lower方法。这两个方法需要在index.js文件中实现,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 var app = getApp()
 Page({
    … …
   upper: function(e) {
     console.log(e)
   },
   lower: function(e) {
     console.log(e)
   },
 })

在这两个方法中简单地输出了参数e。当水平或垂直滑动滚动条时,系统会根据滚动条的位置触发相应的事件。例如,图5所示是垂直滚动到最低端,然后再滚动到最顶端,水平滚动先滚动到最后端,然后再滚动到最左端的输入日志。

图5 滚动到边缘的输出日志

那么,还有一个问题,系统是如何判定时候滚动到了边缘的呢?其实这是通过另外两个属性来判定的,这两个属性是upper-threshold和lower-threshold。这两个属性的默认值是50,这个值差不多是滚动条的长度。在默认情况下,当滚动条的一端刚一接触上、下、左、右边缘时就会触发相应的事件。如果要改变这两个属性的默认值,那么滚动条可能会滚动到其他的位置才会触发相应的事件。例如,下面的代码设置了upper-threshold属性的值为100,lower-threshold属性的值为300。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<scroll-view scroll-y="true" style="height: 200px;"   bindscrolltoupper="upper" bindscrolltolower="lower"  upper-threshold="100" lower-threshold="300">
    … …
</scroll-view>

对于垂直来说,在默认情况下,滚动条会处在如图6所示的位置,才会触发下边缘滚动事件。不过如果lower-threshold属性的值是300,那么滚动条会在如图7所示的位置就会触发下边缘滚动事件。

图6 lower-threshold属性为默认值时触发下边缘滚动事件的位置

图7 lower-threshold属性为300时触发下边缘滚动事件的位置

4 滚动事件

scroll-view除了可以监控滚动条处在边缘的事件,还可以实时监控滚动条滚动的状态,这就是滚动事件,使用bindscroll属性设置,该属性的值是滚动事件对应的函数名。例如,下面的代码设置bindscroll属性值为scroll。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<scroll-view class="scroll-view_H" scroll-x="true"  scroll-left="50" style="width: 100%"
     bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll" >
         <view id="green" class="scroll-view-item_H bc_green"></view>
         <view id="red"  class="scroll-view-item_H bc_red"></view>
         <view id="yellow" class="scroll-view-item_H bc_yellow"></view>
         <view id="blue" class="scroll-view-item_H bc_blue"></view>
 </scroll-view>

当滚动条水平或垂直滚动时,会不断触发滚动事件,并调用scroll函数,该函数的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scroll:function(e)
{
   console.log(e.detail)
}

通过e参数中的detail属性,可以获得与滚动相关的信息。detail属性可以提供如下6个值。

  • scrollLeft:水平滚动时滚动条当前的位置,在垂直滚动时该值为0。
  • scrollTop:垂直滚动时滚动条当前的位置,在水平滚动时该值为0。
  • scrollHeight:垂直滚动时所有子视图的总高度(包括子视图之间的间距),在水平滚动时,该值是scroll-view组件的高度。
  • scrollWidth:水平滚动时所有子视图的总宽度(包括子视图之间的间距)。在垂直滚动时,该值是scroll-view组件的宽度。
  • deltaX:水平滚动时的增量,也就是从当前滚动条的位置移动到新位置的距离。从左向右水平移动,该值小于0,从右向左水平移动,该值大于0。通过该属性值可以判断水平移动的方向。
  • deltaY:垂直滚动时的增量,也就是从当前滚动条的位置移动到新位置的距离。从上到下垂直移动,该值小于0,从下向上垂直移动,该值大于0。通过该属性值可以判断垂直移动的方向。

图8是垂直和水平滚动时触发滚动事件输出的日志信息,其中也包含滚动到边缘输出的日志信息。

图8 滚动时输出的日志

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客起源 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
小程序开发基础-scroll-view 可滚动视图区域
查看官方文档:https://developers.weixin.qq.com/miniprogram/dev/component/
达达前端
2019/07/03
2.9K0
小程序开发基础-scroll-view 可滚动视图区域
微信小程序开发实战(3):条件渲染
其中wx:if是一个控制属性,condition是条件表达式。如果condition的值为true,则输出<view>组件中的值。如果有多个条件,和if语句的条件一样,中间可以用&&表示逻辑与,用||表示逻辑或。例如,下面的布局代码的count变量值如果小于4,则输出“数值比较小”,否则什么也不会输出。
蒙娜丽宁
2020/06/02
1.5K0
微信小程序开发实战(3):条件渲染
微信小程序官方组件展示之视图容器scroll-view
以下将展示小程序官方组件能力,组件样式仅供参考,开发者可根据自身需求定义组件样式,具体属性参数详见小程序开发文档。
软件事业部
2022/08/15
2.9K0
微信小程序示例 - 视图容器
滑块视图容器 swiper 代码结构 <swiper> <swiper-item> <image src="{{item}}"/> </swiper-item> .
dys
2018/04/04
1.3K0
微信小程序示例 - 视图容器
全栈开发工程师微信小程序-上(中)
750rpx代表与屏幕等宽,rpx的缩写responsive pixel,这个单位是可以根据屏幕大小进行自适应调整的像素单位.
达达前端
2019/07/03
1K0
全栈开发工程师微信小程序-上(中)
微信小程序版博客——列表页相关问题汇总
首先是分页加载列表,从网上例子和文档来看有两种实现方式,一种是根据Page()上的 onReachBottom属性:页面上拉触底事件的处理函数,另一种就是通过scroll-view组件上的bindscrolltolower,两种方法都行。
Bug生活2048
2018/08/31
5560
微信小程序版博客——列表页相关问题汇总
小程序开发实战(5):组件复用利器-模板
根据我们前面讲解的知识,很容易看出,这段布局代码的作用是绘制两行带背景色的方块,效果如图1所示。
蒙娜丽宁
2020/07/09
7520
小程序开发实战(5):组件复用利器-模板
小程序中滚动条的使用,wx.pageScrollTo和&lt;scroll-view&gt;的对比
知晓程序员,专注微信小程序开发的程序员! 前言:近期小程序项目中用到了滚动条功能,官方文档中提供两种方式。即wx.pageScrollTo滚动到page页面的指定位置,<scroll-view>组件可以设置scroll-top或者scroll-left的值,今天探讨一下使用哪种方式更合适。 1、wx.pageScrollTo 官方文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/scroll.html 示例代码: wx.pageScrollTo(
连胜
2018/03/07
4.5K0
小程序中滚动条的使用,wx.pageScrollTo和&lt;scroll-view&gt;的对比
微信小程序实践:2.3 可滚动的容器组件之 scroll-view
说什么真理无穷,进一寸有一寸的欢喜。大家好,我是石桥码农,今天继续为大家分享微信小程序实践相关的技术内容。
LIYI
2020/04/15
16.6K1
微信小程序实践:2.3 可滚动的容器组件之 scroll-view
小程序开发实践:视图容器 view介绍,使用 view 搞定所有常见的 UI 布局
view 是最基础的,也是微信小程序第一个公布的容器组件。所谓容器组件,就像 HTML 里的 div 标签一样,是为容纳其它组件而存在的。它本身也可以有一些自己的样式,因为它本身也可以有样式,但它最重要的功能,是布局。
LIYI
2020/04/14
3K0
uni-app中使用scroll-view滚到底部时多次触发scrolltolower
  前段时间使用scroll-view可滚动视图区域容器来做多个不同内容的展示(在我这个页面中同时使用了三个scroll-view做数据展示),因为这几个展示的内容的数据都比较的多,因此为了页面的数据加载顺畅决定使用上拉加载(简单的说就是数据分页显示)。
追逐时光者
2019/12/10
10.9K0
uni-app中使用scroll-view滚到底部时多次触发scrolltolower
如何使用小程序视图容器组件
在上一篇文章中,我们介绍了小程序入门开发的基础步骤,并通过几个Hello Word例子,让大家体验了下小程序的组件及API使用,接下来的教程中,我们将教大家详细使用每个组件及API的使用。
宮園薰
2018/11/05
10K0
如何使用小程序视图容器组件
小程序开发基础-view视图容器
查看官方文档:https://developers.weixin.qq.com/miniprogram/dev/component/
达达前端
2019/07/03
9010
小程序开发基础-view视图容器
03-微信小程序常用组件-视图容器组件
微信小程序包含了六大组件:视图容器、基础内容、导航、表单、互动和导航。这些组件可以通过WXML和WXSS进行布局和样式设置,从而构建出丰富的小程序界面和交互体验。
度假的小鱼
2023/11/21
6600
03-微信小程序常用组件-视图容器组件
微信小程序日常踩坑后的总结(猜测你也会遇到,持续更新。。。)
(1)图片需是本地图片或者是路径为https的网络图片; (2)使用网络图片要用wx.downloadFile( )下载,否则真机上无法显示图片; (3)wx.downloadFile()是异步的;
Ewall
2018/09/04
8310
微信小程序日常踩坑后的总结(猜测你也会遇到,持续更新。。。)
手把手带你学习微信小程序 —— 七 (view 视图组件学习)
不说多的,创建一个新的小程序项目,然后我们直接在 index.wxml 和 index.wxss 进行修改
Gorit
2021/12/08
1.9K0
手把手带你学习微信小程序 —— 七 (view 视图组件学习)
【小程序项目开发 -- 京东商城】uni-app 商品分类页面(下)
在上文 【小程序项目开发 – 京东商城】uni-app 商品分类页面(上)5.1 章节接口数据格式可以看到,我们的数据,在一级分类下,存贮了二级分类,二级分类又存贮了三级分类,嵌套存贮。
计算机魔术师
2022/08/23
1.2K0
【小程序项目开发 -- 京东商城】uni-app 商品分类页面(下)
uni-app小程序开发-滚动到指定位置的实现方式
码客说
2024/07/23
1.7K0
小程序开发总结04 - 特殊样式处理
微信小程序中的button组件有特定的css,背景可用background:none;去掉,但边框直接用border:none;无法去除
CS逍遥剑仙
2018/06/23
1.2K0
小程序开发总结04 - 特殊样式处理
小程序 - 效果处理之技巧合集(更新中...)
巧用Console.log(event) Event::事件对象,方法在执行的时候,当前环境携带的一些信息 可以打印出来、获取很多信息,根据这些信息再度寻找你需要的信息的路径。如小程序里的event.detail.width;;;; 页面加载后切换一次类名,实现初始页动画展示、初始页切换类名、配合一次性定时器切换类名 1 onLoad: function (options) { 2 3 setTimeout(()=>{ 4 5 this.setData({ a: 'a-class
xing.org1^
2018/05/17
1.5K0
推荐阅读
相关推荐
小程序开发基础-scroll-view 可滚动视图区域
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档