微信小程序使用 onPageScroll 将view滚动置顶

微信小程序使用 onPageScroll 将view滚动置顶,第1张

需求: 当滚动到某个view的时候将view置顶 当滚动条回到view开始的位置下面时再回到原位置

效果:

实现: 使用 onPageScroll 方法首先检测到滚动的位置 escrollTop 在滚动的同时来获取view与顶部的距离,因为这个view 上面的view 是不固定的可以减少 或者增多所以要时时来检测变化的高度

判断 如果离顶部距离 为0 时 将view置顶 使用动态样式来判断

同时在检测顶部距离为0的时候记录一下高度 然后当滚动高度等于记录的高度的时候再讲view 返回

备注 条条大路通罗马 小弟浅见

在一些场景中,我们需要获取到标签里面的值来和接口返回的值做对比,一致则进行下一步,后者进行错误判断

<block wx:for='{{objectArray}}'  data-name='{{itemname}}' data-id='{{itemid}}' bindtap='select'>

        <text class='yuzhong'>{{itemname}}</text>

    </view>

主要在于 data- 这个上面  上面的那个name 和 id 是我自己定义的,你们可以随意定义一些语义化的词,

获取也很简单:

select:function(e){

consolelog(ecurrentTargetdatasetname);

    },

大家都知道,针对一款app上面都是展示信息的,那么在小程序中,页面上信息的展示是如何的,接下来进行详细探索:

在微信小程序中,编写页面布局是在wxml文件中进行的,则在wxml文件中,使用<view></view>标签进行内容的包裹,类似html中的<div>,现在进行一个需求的编写,在页面上编写布局,并将js结尾文件中的处理数据进行展示到页面上;

indexwml

indexjs

编译项目,则页面展示如下:

从上面结果可以知道在wxml文件中使用{{}}可以将js文件中指定的内容展示在页面上,现在我们进行动态的展示数据,不需要展示起在page-data中固定的内容,修改js文件内容:

编译项目,显示结果如图:

由此可知,在js中动态的设置内容并将其更新到wml上,则使用 thissetData(),且修改的内容格式符合key:value。

就小程序页面数据展示就分析到这里,希望各位看官们有所收获,有什么错误的地方还望指出!!

组件说明:

可滚动视图区域。

组件用法:

纵向滚动用法

Tip:

使用竖向滚动时,需要给一个固定高度,通过 WXSS 设置 height,否则无法滚动。

当滚动到顶部时会触发bindscrolltoupper事件(具体可留意GIF输出)

当滚动到底部时会触发bindscrolltolower事件(具体可留意GIF输出)

效果图:

wxml

<scroll-view scroll-y="true" style="height: 200px;" bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll" scroll-into-view="{{toView}}" scroll-top="{{scrollTop}}">

    <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="btn-area">

      <button size="mini" bindtap="tap">click me to scroll into view </button>

      <button size="mini" bindtap="tapMove">click me to scroll</button>

</view>

js

var order = ['red', 'yellow', 'blue', 'green', 'red']

Page({

  data: {

    toView: 'green',

    scrollTop: 100,

    scrollLeft: 0

  },

  //滚动条滚到顶部的时候触发

  upper: function(e) {

    consolelog(e)

  },

  //滚动条滚到底部的时候触发

  lower: function(e) {

    consolelog(e)

  },

  //滚动条滚动后触发

  scroll: function(e) {

    consolelog(e)

  },

  //点击按钮切换到下一个view

  tap: function(e) {

    for (var i = 0; i < orderlength; ++i) {

      if (order[i] === thisdatatoView) {

        thissetData({

          toView: order[i + 1]

        })

        break

      }

    }

  },

  //通过设置滚动条位置实现画面滚动

  tapMove: function(e) {

    thissetData({

      scrollTop: thisdatascrollTop + 10

    })

  }

})

css

scroll-view_H{

  white-space: nowrap;

}

scroll-view-item{

  height: 200px;

}

scroll-view-item_H{

  display: inline-block;

  width: 100%;

  height: 200px;

}

横向滚动用法

Tip:

横向滚动无法使用scroll-into-view属性。

当滚动到最左边时会触发bindscrolltoupper事件(具体可留意GIF输出)

当滚动到最右边时会触发bindscrolltolower事件(具体可留意GIF输出)

效果图:

wxml

<scroll-view class="scroll-view_H" scroll-x="true" style="width: 100%"  bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll"  scroll-left="{{scrollLeft}}">

    <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>

js

var order = ['red', 'yellow', 'blue', 'green', 'red']

Page({

  data: {

    toView: 'green',

    scrollTop: 100,

    scrollLeft: 0

  },

  //滚动条滚到顶部的时候触发

  upper: function(e) {

    consolelog(e)

  },

  //滚动条滚到底部的时候触发

  lower: function(e) {

    consolelog(e)

  },

  //滚动条滚动后触发

  scroll: function(e) {

    consolelog(e)

  },

  //点击按钮切换到下一个view

  tap: function(e) {

    for (var i = 0; i < orderlength; ++i) {

      if (order[i] === thisdatatoView) {

        thissetData({

          toView: order[i + 1]

        })

        break

      }

    }

  },

  //通过设置滚动条位置实现画面滚动

  tapMove: function(e) {

    thissetData({

      scrollLeft: thisdatascrollLeft + 10

    })

  }

})

wxss

scroll-view_H{

  white-space: nowrap;

}

scroll-view-item{

  height: 200px;

}

scroll-view-item_H{

  display: inline-block;

  width: 100%;

  height: 200px;

}

主要属性:

属性类型默认值描述

scroll-xBooleanfalse允许横向滚动

scroll-yBooleanfalse允许纵向滚动

upper-thresholdNumber50距顶部/左边多远时(单位px),触发 scrolltoupper 事件

lower-thresholdNumber50距底部/右边多远时(单位px),触发 scrolltolower 事件

scroll-topNumber设置竖向滚动条位置

scroll-leftNumber设置横向滚动条位置

scroll-into-viewString值应为某子元素id,则滚动到该元素,元素顶部对齐滚动区域顶部

bindscrolltoupperEventHandle滚动到顶部/左边,会触发 scrolltoupper 事件

bindscrolltolowerEventHandle滚动到底部/右边,会触发 scrolltolower 事件

bindscrollEventHandle滚动时触发,eventdetail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}

需求:

1、将已开发好的H5页面,嵌入先有的小程序。

2、并且要实现H5支付功能

解决方式 :web-view

1、 登陆 小程序管理后台

a 如果是公众号 。则进行双向绑定

完成这一步 ,那么基本上就差不多成功了一大半

2、在小程序里面嵌入h5

web-view

文档里面有的东西,就不赘述le~

a在小程序里面定义一个你想要的H5入口

b 新建一个页面,用来放H5的链接

ok~现在已经完成h5的嵌入

3、h5实现支付功能 - 唤醒微信支付

目前只有这种实现方式。等待微信更新 支持小程序的web-view可以唤醒微信支付

总结:

个人见解: 微信内置浏览器, 打开微信公众号H5页面,也可以唤醒微信支付。微信小程序里面web-view相当于小程序的内置浏览器,暂时不支持唤醒微信支付。虽然小程序是在微信里面,但是web-view又和微信内置浏览器不同~ 感觉微信想把小程序独立出来~

以上就是关于微信小程序使用 onPageScroll 将view滚动置顶全部的内容,包括:微信小程序使用 onPageScroll 将view滚动置顶、微信小程序 获取标签里面的数据 例如:view、text、微信小程序入门(四):页面数据展示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9750168.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存