Commit 1f63183c9a190cdb6e8132e3131dbbece128d078

Authored by liuqimichale
1 parent 7675bc90

回到顶部

Showing 1 changed file with 37 additions and 1 deletions
webintroduce/src/App.vue
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 </keep-alive> 7 </keep-alive>
8 </transition> 8 </transition>
9 <VFooter v-if="footerShow"></VFooter> 9 <VFooter v-if="footerShow"></VFooter>
  10 + <div id="backToTop" class="backToTop" @click="scrollIntoView">回到顶部</div>
10 </div> 11 </div>
11 </template> 12 </template>
12 13
@@ -23,7 +24,32 @@ export default { @@ -23,7 +24,32 @@ export default {
23 return { 24 return {
24 footerShow: true, 25 footerShow: true,
25 headerShow: true, 26 headerShow: true,
26 - transitionName: 'transitionLeft' 27 + transitionName: 'transitionLeft',
  28 + scrollShow: false,
  29 + }
  30 + },
  31 + mounted() {
  32 + window.addEventListener('scroll',this.scrollToTop)
  33 + },
  34 + methods: {
  35 + scrollToTop() {
  36 + const topBtn = document.getElementById('backToTop')
  37 + const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
  38 + if(scrollTop > 20){
  39 + topBtn.style.display = 'block'
  40 + }else{
  41 + topBtn.style.display = 'none'
  42 + }
  43 + },
  44 + scrollIntoView() {
  45 + const timer = setInterval(function () {
  46 + let osTop = document.documentElement.scrollTop || document.body.scrollTop
  47 + let ispeed = Math.floor(-osTop / 5)
  48 + document.documentElement.scrollTop = document.body.scrollTop = osTop + ispeed
  49 + if (osTop === 0) {
  50 + clearInterval(timer)
  51 + }
  52 + }, 30)
27 } 53 }
28 }, 54 },
29 watch: { 55 watch: {
@@ -47,6 +73,7 @@ export default { @@ -47,6 +73,7 @@ export default {
47 display: flex; 73 display: flex;
48 flex-flow: column; 74 flex-flow: column;
49 min-height: 100vh; 75 min-height: 100vh;
  76 + position: relative;
50 font-family: 'Avenir', Helvetica, Arial, sans-serif; 77 font-family: 'Avenir', Helvetica, Arial, sans-serif;
51 -webkit-font-smoothing: antialiased; 78 -webkit-font-smoothing: antialiased;
52 -moz-osx-font-smoothing: grayscale; 79 -moz-osx-font-smoothing: grayscale;
@@ -69,4 +96,13 @@ export default { @@ -69,4 +96,13 @@ export default {
69 transform: translate(-100%, 0); 96 transform: translate(-100%, 0);
70 -webkit-transform: translate(-100%, 0); 97 -webkit-transform: translate(-100%, 0);
71 } 98 }
  99 + .backToTop{
  100 + position: fixed;
  101 + width: 100px;
  102 + height: 40px;
  103 + background-color: #f00;
  104 + right:10px;
  105 + bottom: 10px;
  106 + display: none;
  107 + }
72 </style> 108 </style>