当前位置:   article > 正文

小程序 scroll-view_scroll-view absolute

scroll-view absolute

场景:

  在很多情况下,一个订单类项目需要加载很多数据,但是这时候项目的标题会跟着滚动走,不利于查看对应的项目

解决:

  这时候可以使用 scroll-view 来处理需要滚动的项目内容。

代码如下:

view

  1. <view class="tablebox">
  2. <view class="tr">
  3. <view class="th">时间</view>
  4. <view class="th">账号</view>
  5. </view>
  6. <view class="scrollView" id="scrollView" style="position: absolute;bottom: 0;width: 100%;top:92rpx">
  7. <scroll-view scroll-y>
  8. <view class="tr" wx:for="{{scrollData}}">
  9. <view class="td">{{item.time}}</view>
  10. <view class="td">{{item.phone}}</view>
  11. </view>
  12. </scroll-view>
  13. </view>
  14. </view>


wxss

  1. .tablebox {
  2. background: #eee
  3. }
  4. .tablebox .tr {
  5. margin-bottom: 2rpx;
  6. display: flex
  7. }
  8. .tablebox .tr .th {
  9. flex: 1;
  10. height: 90rpx;
  11. font-size: 32rpx;
  12. padding: 0 15rpx;
  13. overflow: hidden;
  14. box-sizing: border-box;
  15. text-align: center;
  16. display: flex;
  17. justify-content: center;
  18. align-items: center;
  19. background: #fff;
  20. color: #333
  21. }
  22. .tablebox .tr .td {
  23. flex: 1;
  24. height: 80rpx;
  25. padding: 0 5rpx;
  26. overflow: hidden;
  27. text-align: center;
  28. display: flex;
  29. justify-content: center;
  30. align-items: center;
  31. font-size: 28rpx;
  32. background: #fff;
  33. color: #333
  34. }
  35. .tablebox .tr:last-child .td {
  36. border-bottom: 0
  37. }
  38. .scrollView {
  39. background: #eee
  40. }
  41. .scrollView scroll-view {
  42. width: 100%;
  43. height: 100%
  44. }

这样就能让th定格在页面上,scroll-view为绝对定位在页面上,td的内容元素在scroll-view中滚动



这时候问题来了,因为每部手机的像素点不一致,手写scroll-view的absolute top并不靠谱。

如何解决这个问题呢,实际上微信里面有获取当前元素距顶部的数值的API

wx.createSelectorQuery()

我们只需要调用这个API,并动态修改top值就行了

我们可以定义一个函数来处理,console.log(rect)中就有我们需要的参数


  1. getTop: function() {
  2.   var that = this
  3.   wx.createSelectorQuery().select('#scrollView').boundingClientRect(function(rect) {
  4.     console.log(rect)
  5.   }).exec()
  6. }

在onLoad时调用这个函数,并把值绑定到view层

view

  1. <view class="tablebox">
  2. <view class="tr">
  3. <view class="th">时间</view>
  4. <view class="th">账号</view>
  5. </view>
  6. <view class="scrollView" id="scrollView" style="{{style}}">
  7. <scroll-view scroll-y>
  8. <view class="tr" wx:for="{{scrollData}}">
  9. <view class="td">{{item.time}}</view>
  10. <view class="td">{{item.phone}}</view>
  11. </view>
  12. </scroll-view>
  13. </view>
  14. </view>


js

  1. onLoad: function() {
  2. var that = this
  3. that.getTop('scrollView')
  4. },
  1. getTop: function(id) {
  2. var that = this
  3. wx.createSelectorQuery().select(id).boundingClientRect(function(rect) {
  4. that.setData({
  5. style: 'position: absolute;bottom: 0;width: 100%;top:' + rect.top + 'px'
  6. })
  7. }).exec()
  8. }
  9. 这时候就不用害怕因为手机不同,会出现样式问题了
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/93771
推荐阅读
相关标签
  

闽ICP备14008679号