hexo next 主題 : 實現點選跳轉到文章的時候文章的頁面自動實現滾輪效果,向下滾動到閱讀的位置。
背景:
博主的部落格希望實現能夠在點選到某個文章的時候,跳轉完了之後,頁面能夠自主的向下滾動到瀏覽的區域,因為博主的工作是搞java的,js方面在大一大二的時候搞過,有些東西忘記了,或者還沒有接觸到,有技術的盲區(可能對於閱讀這篇文章的你來說有些可笑~),不管那麼多,記錄下來,以便以後維護。
上程式碼:
function article_top(){
//判斷本次頁面是否是文章,在我的hexo中,文章的頁面是html的地址,是經過設定的,如果是初始的話,我記得好像是md結尾的,這裡讀者自行設定。
//console.log(window.location.pathname)
//打印出來的結果是http://localhost:4000/dayuhaitang.html中的dayuhaitang.html
var pathname = window.location.pathname
//獲取我的頭部的高度,下面會用到
var height = $(".header").css("height");
//判斷是否是文章的頁面
if (pathname.indexOf("html")>0) {
//使用animate函式進行動態的滾動效果
$("html,body").animate({scrollTop:height},500)
}
}
//給滾動效果的函式設定timeout函式,這個函式有很大的作用,在下面我會詳細的講解。
setTimeout(article_top,800);
這個簡單的函式中遇到的問題:
判斷是否是文章的頁面
var pathname = window.location.pathname
這個不難google一下就出來了,主要是想到通過什麼來判斷
滾動函式
$("html,body").animate({scrollTop:height},500)
這個函式我查了好久,瀏覽w3c等網站均未實現。
最後通過這篇文章實現了:http://caibaojian.com/jquery-scrollto.html
感謝!
問題:需要在body前面加heml,就是一個父類吧
實現滾動後,滾動條會不斷的上下跳動,頁面閃爍。
背景:
這個問題,除錯了一下午,聰明的我一定也想到了,在我的next主題中一定設定了(官方自己設定的)如果是文章頁面會自動滾動到頂部,而我的hexo next中加入了require函式,以便實現提升載入速度,因為require是非同步載入的,所以我的函式和系統預置的函式會出現執行順序搶奪的問題,就會出現似上非上,似下非下的不斷跳動閃爍的情況,有時候出現有時候不出現,雖然只是很短的時間,但是對於頁面的效果有不小的影響。
我試圖閱讀原始碼,修改官方的函式,但是發現真的找不到,包括從頁面打斷點除錯,能力有限好吧。
上百度,上google,發現有類似的問題。博文地址:https://blog.csdn.net/cen_cs/article/details/79018061 , 當然並並沒有很好的解決我的問題,但是有不小的啟發,因為timeout在js和jq中實現的方式是不一樣的。
通過閱讀相關的文件,對於timeout函式有了一定的理解:就是在等待了設定的指定時間後在執行自己的函式
對於timeout的規範寫法參考的文章:https://blog.csdn.net/qq_39098813/article/details/80746465
收穫:
通過以上的分析,如果讀者讀到了這裡,(如果是和我一樣的小白的話)相信您一定或多或少有一定的收穫吧。
寫給讀者的話:
如果讀者發現了程式碼中有錯誤的地方,(雖然只有幾行),請您一定及時的聯絡我,大家共同進步!