tui-sticky.wxs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. var stickyChange = function(scrollTop, oldScrollTop, ownerInstance, ins) {
  2. if (!oldScrollTop && scrollTop === 0) return false;
  3. var dataset = ins.getDataset()
  4. var top = +dataset.top;
  5. var height = +dataset.height;
  6. var stickyTop = +dataset.stickytop;
  7. var isNativeHeader = dataset.isnativeheader;
  8. var isFixed = false;
  9. var distance = stickyTop
  10. // #ifdef H5
  11. if (isNativeHeader) {
  12. distance = distance - 44
  13. distance = distance < 0 ? 0 : distance
  14. }
  15. // #endif
  16. if (dataset.container) {
  17. isFixed = (scrollTop + distance >= top && scrollTop + distance < top + height) ? true : false
  18. } else {
  19. isFixed = scrollTop + distance >= top ? true : false
  20. }
  21. var tsb = ownerInstance.selectComponent('.tui-sticky-bar')
  22. var tss = ownerInstance.selectComponent('.tui-sticky-seat')
  23. if (!tsb || !tss) return;
  24. if (isFixed) {
  25. tsb.setStyle({
  26. "top": stickyTop + 'px'
  27. }).addClass('tui-sticky-fixed')
  28. tss.setStyle({
  29. "display": 'block'
  30. })
  31. } else {
  32. tsb.setStyle({
  33. "top": 'auto'
  34. }).removeClass('tui-sticky-fixed')
  35. tss.setStyle({
  36. "display": 'none'
  37. })
  38. }
  39. ownerInstance.triggerEvent("sticky", [{
  40. isFixed: isFixed,
  41. index: parseInt(dataset.index)
  42. }])
  43. }
  44. module.exports = {
  45. stickyChange: stickyChange
  46. }