這是我在寫vue項目里封裝的一個公共js類
里面還有一些其他的方法,一並拿過來了
class Public { isDesktop(){ //判斷是否為pc端 return (window.screen.width > 1023) ? true : false; } /* * formatMoney(s,type) * 功能:金額按千位逗號分隔 * 參數:s,需要格式化的金額數值. * 參數:type,判斷格式化后的金額是否需要小數位. * 返回:返回格式化后的數值字符串. */ formatMoney(s, type) { if (/[^0-9\.]/.test(s)) return "0.00"; if (s == null || s == "null" || s == "") return "0.00"; s = s.toString().replace(/^(\d*)$/, "$1."); s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1"); s = s.replace(".", ","); var re = /(\d)(\d{3},)/; while (re.test(s)) s = s.replace(re, "$1,$2"); s = s.replace(/,(\d\d)$/, ".$1"); if (type == 0) { var a = s.split("."); if (a[1] == "00") { s = a[0]; } } return s; } isWeiXin(){ //判斷是否是微信瀏覽器 var ua = window.navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i) == 'micromessenger'){ return true; }else{ return false; } } //number :距離 time:時間 ScrollTop(number,time){ let _this = this; if (!time) { document.body.scrollTop = document.documentElement.scrollTop = number; return number; } const spacingTime = 20; // 設置循環的間隔時間 值越小消耗性能越高 let spacingInex = time / spacingTime; // 計算循環的次數 let nowTop = document.body.scrollTop + document.documentElement.scrollTop; // 獲取當前滾動條位置 let everTop = (number - nowTop) / spacingInex; // 計算每次滑動的距離 let scrollTimer = setInterval(() => { if (spacingInex > 0) { spacingInex--; _this.ScrollTop(nowTop += everTop); } else { clearInterval(scrollTimer); // 清除計時器 } }, spacingTime); } getElementToPageTop(el) {//獲取元素距離頂部距離 if(el == null){ return } let _this = this; if(el.parentElement) { return _this.getElementToPageTop(el.parentElement) + el.offsetTop } return el.offsetTop } } export default Public
項目里綜合起來用是ScrollTop()和getElementToPageTop()配合一起用
類似jquery里的scrollTop()方法
例:
var headerDiv = document.getElemetById("head");
ScrollTop(getElementToPageTop(headerDiv),1000)