backtop.nvue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <template>
  2. <view
  3. class="u-page"
  4. ref="u-back-top"
  5. >
  6. <view class="u-demo-block">
  7. <text class="u-demo-block__title">自定义backTop(滚动页面即可在右下角看到图标)</text>
  8. <view class="u-demo-block__content">
  9. <view class="u-page__backTop-item">
  10. <u-checkbox-group
  11. placement="column"
  12. shape="square"
  13. @change="checkboxChange"
  14. v-model="value"
  15. >
  16. <u-checkbox
  17. :customStyle="{marginBottom: '8px'}"
  18. v-for="(item, index) in checkboxList"
  19. :key="index"
  20. :label="item.name"
  21. :name="item.name"
  22. >
  23. </u-checkbox>
  24. </u-checkbox-group>
  25. </view>
  26. </view>
  27. </view>
  28. <u-back-top
  29. :right="backTopData.right"
  30. :customStyle="backTopData.customStyle"
  31. :bottom="backTopData.bottom"
  32. :icon="backTopData.icon"
  33. :mode="backTopData.mode"
  34. :iconStyle="backTopData.iconStyle"
  35. :duration="backTopData.duration"
  36. :scrollTop="scrollTop"
  37. @click="click"
  38. ></u-back-top>
  39. </view>
  40. </template>
  41. <script>
  42. export default {
  43. data() {
  44. return {
  45. value: ['自定义图标'],
  46. backTopData: {
  47. mode: 'circle',
  48. icon: 'arrow-upward',
  49. bottom: 100,
  50. customStyle: {},
  51. iconStyle: {},
  52. right:20,
  53. duration: 300
  54. },
  55. scrollTop: 0,
  56. // 被自定义的样式
  57. checkboxList: [{
  58. name: '显示方形',
  59. },
  60. {
  61. name: '自定义图标',
  62. },
  63. {
  64. name: '自定义距离',
  65. },
  66. {
  67. name: '自定义样式',
  68. },
  69. {
  70. name:'自定义返回顶部滚动时间',
  71. }
  72. ]
  73. }
  74. },
  75. onLoad() {
  76. // 演示中默认勾选了自定义图标
  77. this.backTopData.icon = "arrow-up"
  78. },
  79. onPageScroll(e) {
  80. this.scrollTop = e.scrollTop;
  81. },
  82. methods: {
  83. checkboxChange(n) {
  84. if (n.includes('显示方形')) {
  85. this.backTopData.mode = 'square'
  86. } else {
  87. this.backTopData.mode = "circle"
  88. }
  89. if (n.includes('自定义图标')) {
  90. this.backTopData.icon = "arrow-up"
  91. } else {
  92. this.backTopData.icon = "arrow-upward"
  93. }
  94. if (n.includes('自定义距离')) {
  95. this.backTopData.bottom = 300
  96. this.backTopData.right=20
  97. } else {
  98. this.backTopData.bottom = 100
  99. }
  100. if (n.includes('自定义样式')) {
  101. this.backTopData.customStyle = {
  102. backgroundColor: '#2979ff',
  103. }
  104. this.backTopData.iconStyle = {
  105. color: '#ffffff'
  106. }
  107. } else {
  108. this.backTopData.customStyle = {}
  109. this.backTopData.iconStyle = {}
  110. }
  111. if (n.includes('自定义返回顶部滚动时间')) {
  112. this.backTopData.duration =1500
  113. } else {
  114. this.backTopData.duration =300
  115. }
  116. },
  117. click() {
  118. console.log('click');
  119. }
  120. }
  121. }
  122. </script>
  123. <style lang="scss">
  124. .u-page {
  125. height: 1200px;
  126. &__backTop-item{
  127. margin-top:10px;
  128. }
  129. }
  130. </style>