backTop.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <template>
  2. <div class="backTop" v-if="backTopIsShow">
  3. <div class="luojigouLogo">
  4. <img src="http://luojigou-app-commit-pic.luojigou.vip/FvmYmQjjoZftM_fiRYGM0lsC9vfw?imageView2/0/q/50|imageslim" alt="">
  5. </div>
  6. <el-popover
  7. placement="right"
  8. trigger="hover">
  9. <img width="150px" src="http://luojigou-app-commit-pic.luojigou.vip/FtIexWC2MZD5jk8YFf6OG11MQUGC?imageView2/0/q/50|imageslim" alt="" srcset="">
  10. <div slot="reference" class="hotline">
  11. <div class="hotLineImg"></div>
  12. </div>
  13. </el-popover>
  14. <div class="line"></div>
  15. <el-popover
  16. placement="right"
  17. trigger="hover">
  18. <img width="150px" src="http://luojigou-app-commit-pic.luojigou.vip/FsMJj5IIlzzeDqoOyq0VSUfJ1Cy0?imageView2/0/q/50|imageslim" alt="" srcset="">
  19. <div slot="reference" class="public">
  20. <div class="publicImg"></div>
  21. </div>
  22. </el-popover>
  23. <div class="line"></div>
  24. <div v-show="backTopIsShow" class="backTopBtn" @click="backTop">
  25. <img src="http://luojigou-app-commit-pic.luojigou.vip/Fnz0K17ERo2g1foAvu9KAnAOmw7O?imageView2/0/q/50|imageslim" />
  26. </div>
  27. </div>
  28. </template>
  29. <script>
  30. export default {
  31. name: 'backTop',
  32. data() {
  33. return {
  34. backTopIsShow: false,
  35. }
  36. },
  37. mounted() {
  38. this.backTopIsShow = true;
  39. //获取当前的页面滚动事件,然后执行 this.showheader事件
  40. window.addEventListener('scroll', this.showheader);
  41. },
  42. destroyed() {
  43. window.removeEventListener('scroll', this.showheader);
  44. },
  45. methods: {
  46. showheader() {
  47. //当前屏幕等于多少执行的事件
  48. var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
  49. this.scrollTop = scrollTop
  50. // console.log(scrollTop)
  51. if (scrollTop > 541) {
  52. //当屏幕大于541的时候,就显示,小于则不显示
  53. this.backTopIsShow = true;
  54. } else {
  55. this.backTopIsShow = false;
  56. }
  57. },
  58. backTop() {
  59. //返回头部的动画
  60. const that = this
  61. let timer = setInterval(() => {
  62. let ispeed = Math.floor(-that.scrollTop / 7)
  63. document.documentElement.scrollTop = document.body.scrollTop = that.scrollTop + ispeed
  64. if (that.scrollTop === 0) {
  65. clearInterval(timer)
  66. }
  67. }, 10)
  68. }
  69. }
  70. }
  71. </script>
  72. <style lang="scss" scoped>
  73. .backTop {
  74. position: fixed;
  75. right: 60px;
  76. top: 580px;
  77. z-index: 99999;
  78. width: 70px;
  79. // height: 140px;
  80. background: #FFFFFF;
  81. border-radius: 4px;
  82. border: 1px solid rgba(230, 230, 230, 0.8);
  83. .luojigouLogo {
  84. position: absolute;
  85. top: -55px;
  86. left: 4px;
  87. img {
  88. width: 60px;
  89. object-fit: cover;
  90. }
  91. }
  92. .hotline,
  93. .public {
  94. display: flex;
  95. justify-content: center;
  96. align-items: center;
  97. width: 70px;
  98. height: 70px;
  99. .hotLineImg,
  100. .publicImg {
  101. width: 42px;
  102. height: 42px;
  103. background-image: url("http://luojigou-app-commit-pic.luojigou.vip/FoDd0oKYmp80U910lSiWLV1m-X-K?imageView2/0/q/50|imageslim");
  104. background-size: cover;
  105. background-repeat: no-repeat;
  106. }
  107. .publicImg {
  108. width: 32px;
  109. height: 44px;
  110. background-image: url("http://luojigou-app-commit-pic.luojigou.vip/FpTOXAo-IzAhMYZjZpCurY9qcsKw?imageView2/0/q/50|imageslim");
  111. }
  112. }
  113. .hotline:hover {
  114. .hotLineImg {
  115. background-image: url("http://luojigou-app-commit-pic.luojigou.vip/FtSGYGjwNcNnFXB9jZshFqz7HgBy?imageView2/0/q/50|imageslim");
  116. }
  117. }
  118. .public:hover {
  119. .publicImg {
  120. background-image: url("http://luojigou-app-commit-pic.luojigou.vip/FuIGVjGkZi_R_7FuswrgnDWCQ0he?imageView2/0/q/50|imageslim");
  121. }
  122. }
  123. .line {
  124. height: 1px;
  125. background-color: rgba(230, 230, 230, 0.8);
  126. }
  127. .backTopBtn {
  128. display: flex;
  129. justify-content: center;
  130. align-items: center;
  131. width: 70px;
  132. height: 46px;
  133. img {
  134. width: 22px;
  135. }
  136. }
  137. }
  138. </style>