前言:剛應用Vue框架不久
jquery:
jquery的方法相對來說比較簡單一點,直接使用animate:
$('點擊返回頂部元素').click(function(e){
e.preventDefault();
if ($('html').scrollTop()) {
$('html').animate({ scrollTop: 0 }, 1000);
return false;
}
$('body').animate({scrollTop:0},1000);
return false;
})
vue:
因為返回頂部是在多處使用的,直接封裝成自定義指令來調用了。
自己犯得小錯誤:由於之前不注意給body、html、#app都給了overflow-y:scroll;造成頁面滾動給到其他元素上,導致console.log(document.documentElement.scrollTop,document.body.scrollTop)打印出來的數值都是0 0,頁面也滾動不了。之后只給了body設置了overflow-y:scroll,就實現返回頂部的功能了。
Vue.directive('back-top',{ inserted(el,binding){ let e = binding.arg || 'click' el.addEventListener(e,function(){ //console.log(document.body.scrollTop) var cancelScroll = false; var timer = null; if( cancelScroll === false ){ timer = setInterval(function(){ var osTop = document.documentElement.scrollTop || document.body.scrollTop; //console.log(document.documentElement.scrollTop,document.body.scrollTop) var ispeed = Math.floor(osTop-20); document.documentElement.scrollTop = document.body.scrollTop = ispeed; if( osTop === 0 ){ clearInterval(timer); } },10) }else{ clearInterval(timer); cancelScroll = true } }) } }); 應用: <div class="returnTop" v-back-top> <i class="iconfont icon-xiangshangjiantou"></i> </div>