純CSS實現(xiàn)頂部滾動條效果

效果如圖


image.png

分析需求

看到這個效果,感覺這個跟隨滾動動畫,僅靠 CSS 是不可能完成的,因為這里涉及了頁面滾動距離的計算
分析一下難點:

  • 如何得知用戶當前滾動頁面的距離并且通知頂部進度條?

正常分析應該是這樣的,但是這就陷入了傳統(tǒng)的思維。進度條就只是進度條,接收頁面滾動距離,改變寬度。如果頁面滾動和進度條是一個整體呢?

實現(xiàn)

我們運用線性漸變來實現(xiàn)這個功能
假設(shè)我們的頁面被包裹在 <body>中,可以滾動的是整個body,給它添加這樣一個從左下到到右上角的線性漸變

body {
    background-image: linear-gradient(to right top, #ffcc00 50%, #eee 50%);
    background-repeat: no-repeat;
}

運用一個偽元素,把多出來的部分遮?。?/p>

body::after {
    content: "";
    position: fixed;
    top: 5px;
    left: 0;
    bottom: 0;
    right: 0;
    background: #fff;
    z-index: -1;
}

這樣之后,滑到底的時候,進度條并沒有到底:


image.png

是因為 body 的線性漸變高度設(shè)置了整個 body 的大小,我們調(diào)整一下漸變的高度

body {
    background-image: linear-gradient(to right top, #ffcc00 50%, #eee 50%);
    background-size: 100% calc(100% - 100vh + 5px);
    background-repeat: no-repeat;
}

這里使用了 calc 進行了運算,減去了 100vh,也就是減去一個屏幕的高度,這樣漸變剛好在滑動到底部的時候與右上角貼合。

+ 5px 則是滾動進度條的高度,預留出 5px 的高度。

最后給個原作者的效果網(wǎng)頁:CodePen Demo -- 使用線性漸變實現(xiàn)滾動進度條

參考原文: 不可思議的純 CSS 滾動進度條效果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載字掘金-chokcoco 問題先行,如何使用 CSS 實現(xiàn)下述滾動條效果? 就是頂部黃色的滾動進度條,隨著頁面...
    兔子不打地鼠打代碼閱讀 600評論 0 1
  • 一、CSS入門 1、css選擇器 選擇器的作用是“用于確定(選定)要進行樣式設(shè)定的標簽(元素)”。 有若干種形式的...
    寵辱不驚丶歲月靜好閱讀 1,741評論 0 6
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,670評論 4 61
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,388評論 0 17
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,194評論 1 92

友情鏈接更多精彩內(nèi)容