test.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. Page({
  2. data: {
  3. navbarInitTop: 0, //导航栏初始化距顶部的距离
  4. isFixedTop: false, //是否固定顶部
  5. },
  6. /**
  7. * 生命周期函数--监听页面加载
  8. */
  9. onLoad: function(options) {
  10. },
  11. /**
  12. * 生命周期函数--监听页面显示
  13. */
  14. onShow: function() {
  15. var that = this;
  16. if (that.data.navbarInitTop == 0) {
  17. //获取节点距离顶部的距离
  18. wx.createSelectorQuery().select('#navbar').boundingClientRect(function(rect) {
  19. if (rect && rect.top > 0) {
  20. var navbarInitTop = parseInt(rect.top);
  21. that.setData({
  22. navbarInitTop: navbarInitTop
  23. });
  24. }
  25. }).exec();
  26. }
  27. },
  28. /**
  29. * 监听页面滑动事件
  30. */
  31. onPageScroll: function(e) {
  32. var that = this;
  33. var scrollTop = parseInt(e.scrollTop); //滚动条距离顶部高度
  34. //判断'滚动条'滚动的距离 和 '元素在初始时'距顶部的距离进行判断
  35. var isSatisfy = scrollTop >= that.data.navbarInitTop ? true : false;
  36. //为了防止不停的setData, 这儿做了一个等式判断。 只有处于吸顶的临界值才会不相等
  37. if (that.data.isFixedTop === isSatisfy) {
  38. return false;
  39. }
  40. that.setData({
  41. isFixedTop: isSatisfy
  42. });
  43. }
  44. })