欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一直显示自己的排名列表

程序员文章站 2022-04-29 18:57:54
...

最近公司要写个小程序,里面有个列表,觉得这不是很高大上嘛,设计图还没出来, 先写了个demo,不多bb,看图

一直显示自己的排名列表一直显示自己的排名列表一直显示自己的排名列表


图看完了,直接上代码

视图View:

<text>pages/test/index.wxml</text>
<view class='body' view id="id" bindtap = "handletap" bindtouchstart = "handletouchtart" bindtouchmove="handletouchmove" bindtouchend="handletouchend">

  <view class='option'>1</view>
  <view class='option'>2</view>
  <view class='option'>3</view>
  <view class='option'>4</view>
  <view class='option'>5</view>
  <view class='option'>6</view>
  <view class='option'>7</view>
  <view class='option'>8</view>
  <view class='option'>9</view>
  <view class='option'>10</view>
  <view class='option'>11</view>
  <view class='option'>12</view>
  <view class='option'>13</view>
  <view class='option'>14</view>
  <view class='option'>15</view>
  <view class='option'>16</view>
  <view class='option'>17</view>
  <view class='option'>18</view>
  <view class='option'>19</view>
  <view class='option'>20</view>
  <view class='option' id='ohye'>21、ohye</view>
  <view class='option'>22</view>
  <view class='option'>23</view>
  <view class='option'>24</view>
  <view class='option'>25</view>
  <view class='option'>26</view>
  <view class='option'>27</view>
  <view class='option'>28</view>
  <view class='option'>29</view>
  <view class='option'>30</view>
  <view class='option'>31</view>
  <view class='option'>32</view>
  <view class='option'>33</view>
  <view class='option'>34</view>
  <view class='option'>35</view>

</view>
<view class='top' hidden='{{isShow}}'>21、ohye</view>


CSS:

.body{
  height: 4000px;
  border: 1px solid red;
}
.option{
  height: 96px;
  margin: 2px;
  background-color: greenyellow
}

.top{
  position:fixed;
  bottom: 0px;
  width:100%;
  height: 50px;
  background-color: red;
}


JS:

// pages/test/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    isShow: false,
    Top: 0,//获取元素离文档顶部距离
    windowHeight: 0,//屏幕显示区域高度
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var that = this;

    wx.getSystemInfo({//获取屏幕显示区域高度
      success: function (res) {
        // console.log(res.windowWidth);
        // console.log(res.windowHeight);
        that.setData({
          windowHeight: res.windowHeight,
        })
        console.log("屏幕显示高度" + res.windowHeight)
      },
    })

    //获取元素离文档顶部距离
    var query = wx.createSelectorQuery()
    query.select('#ohye').boundingClientRect()
    query.selectViewport().scrollOffset()
    query.exec(function (res) {
      res[0].top       // #the-id节点的上边界坐标
      res[0].scrollTop // 显示区域的竖直滚动位置
      that.setData({
        Top: res[0].top
      })
    })
  },

  onPageScroll: function (e) {//e.scrollTop 当前文档向上滚动距离
    var that = this
    // console.log(e.scrollTop);//{scrollTop:99}
    // console.log(that.data.Top)
    console.log("元素距离顶部距离" + that.data.Top)
    console.log("屏幕显示高度" + that.data.windowHeight)
    console.log("元素向上移动距离" + e.scrollTop)
    console.log("元素需要移动的距离" + (that.data.Top - that.data.windowHeight))
    console.log(e.scrollTop < (that.data.Top - that.data.windowHeight) || e.scrollTop > that.data.Top)

    
    if (e.scrollTop < (that.data.Top - that.data.windowHeight) || e.scrollTop > that.data.Top) {//判断元素在屏幕显示区域的上方或下方
      that.setData({
        isShow: false,
      })
    } else {//否则元素在屏幕显示区域当中
      that.setData({
        isShow: true,
      })
    }
  },

})