這是如何實現(xiàn)的呢?原效果中由于為了兼容不支持CSS滾動驅(qū)動的瀏覽器,特意用" />

AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

CSS 滾動驅(qū)動動畫實現(xiàn)圓弧滾動條

來源: 責編: 時間:2024-01-22 17:25:38 280觀看
導讀前不久看到這樣一個很有趣的效果,它的滾動條是沿著圓角邊緣滾動的,效果如下你可以查看原鏈接來體驗一下https://codepen.io/jh3y/pen/gOEgxbd。
這是如何實現(xiàn)的呢?原效果中由于為了兼容不支持CSS滾動驅(qū)動的瀏覽器,特意用

9Bb28資訊網(wǎng)——每日最新資訊28at.com

前不久看到這樣一個很有趣的效果,它的滾動條是沿著圓角邊緣滾動的,效果如下9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

你可以查看原鏈接來體驗一下9Bb28資訊網(wǎng)——每日最新資訊28at.com

https://codepen.io/jh3y/pen/gOEgxbd。9Bb28資訊網(wǎng)——每日最新資訊28at.com


9Bb28資訊網(wǎng)——每日最新資訊28at.com

這是如何實現(xiàn)的呢?9Bb28資訊網(wǎng)——每日最新資訊28at.com

原效果中由于為了兼容不支持CSS滾動驅(qū)動的瀏覽器,特意用 JS做了兼容,所以看著比較復雜,其實核心非常簡單,下面我將用最簡短的 CSS 來復刻這一效果,一起看看吧!9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

一、SVG 路徑動畫

從本質(zhì)上來講,其實是一個 SVG 路徑動畫。9Bb28資訊網(wǎng)——每日最新資訊28at.com

具體如何實現(xiàn)呢?9Bb28資訊網(wǎng)——每日最新資訊28at.com

首先,我們通過設計軟件繪制一個這樣的路徑。9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

注意設置描邊的大小還有端點的類型,比如下面是round效果。9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

然后導出SVG,可以得到這樣一段代碼。9Bb28資訊網(wǎng)——每日最新資訊28at.com

<svg viewBox="0 0 31 433" fill="none" xmlns="http://www.w3.org/2000/svg">  <path d="M4 4C9.96737 4 15.6903 6.37053 19.9099 10.5901C24.1295 14.8097 26.5 20.5326 26.5 26.5V406.5C26.5 412.467 24.1295 418.19 19.9099 422.41C15.6903 426.629 9.96737 429 4 429" stroke="black" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/></svg>

然后,如何讓這段SVG動起來呢?9Bb28資訊網(wǎng)——每日最新資訊28at.com

很簡單,現(xiàn)在SVG是一段實線,我們可以通過stroke-dasharray設置成虛線,比如:9Bb28資訊網(wǎng)——每日最新資訊28at.com

path{  stroke-dasharray: 80}

這樣會得到一個實線和虛線間隔都是80的虛線。9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

如果希望虛線空白的地方更大一點,該怎么設置呢?很簡單,繼續(xù)往后加。9Bb28資訊網(wǎng)——每日最新資訊28at.com

path{  stroke-dasharray: 80 120}

效果如下:9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

所以,這種寫法其實相當于把當前的值無限重復,示意如下:9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

當然,我們這里不需要設置的這么復雜,只需要一小段實線就夠了,所以是實現(xiàn)加上一段足夠長的虛線(超過路徑本身就行),實現(xiàn)如下:9Bb28資訊網(wǎng)——每日最新資訊28at.com

path{  stroke-dasharray: 80 1000}

這樣就得到了一小段實線。9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

那么,如何讓他動起來呢?很簡單,改變一下偏移就可以,這個可以用stroke-dashoffset來實現(xiàn)。9Bb28資訊網(wǎng)——每日最新資訊28at.com

比如:9Bb28資訊網(wǎng)——每日最新資訊28at.com

@keyframes scroll {  to {    stroke-dashoffset: -370	}}path{  stroke-dasharray: 80 1000;  animation: scroll 3s alternate-reverse infinite;}

效果如下:9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

是不是有點像呢?9Bb28資訊網(wǎng)——每日最新資訊28at.com

我們再調(diào)整一下起始偏移量,讓它出去一點。9Bb28資訊網(wǎng)——每日最新資訊28at.com

@keyframes scroll {  0% { stroke-dashoffset: 75; }  100% { stroke-dashoffset: -445; }}

這樣就更接近我們想要的效果了。9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

整個運動原理就是這樣了,接著往下看9Bb28資訊網(wǎng)——每日最新資訊28at.com

二、CSS 滾動驅(qū)動動畫

接下來需要通過滾動驅(qū)動動畫將容器滾動與CSS動畫「聯(lián)動」起來。9Bb28資訊網(wǎng)——每日最新資訊28at.com

簡單來講,「CSS 滾動驅(qū)動動畫」指的是將「動畫的執(zhí)行過程由頁面滾動」進行接管,也就是這種情況下,「動畫只會跟隨頁面滾動的變化而變化」,也就是滾動多少,動畫就執(zhí)行多少,「時間不再起作用」。9Bb28資訊網(wǎng)——每日最新資訊28at.com

先簡單布局一下:9Bb28資訊網(wǎng)——每日最新資訊28at.com

<div class="list">  <div class="item" id="item_1">1</div>  <div class="item" id="item_2">2</div>  <div class="item" id="item_3">3</div>  <div class="item" id="item_4">4</div>  <div class="item" id="item_5">5</div>  <div class="item" id="item_6">6</div>  <div class="item" id="item_7">7</div></div>

美化一下:9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

然后,我們將默認的滾動條隱藏,用我們這個 SVG路徑來代替,由于需要絕對定位,我們再套一層父級。9Bb28資訊網(wǎng)——每日最新資訊28at.com

<div class="wrap">  <div class="list">    <div class="item" id="item_1">1</div>    <div class="item" id="item_2">2</div>    <div class="item" id="item_3">3</div>    <div class="item" id="item_4">4</div>    <div class="item" id="item_5">5</div>    <div class="item" id="item_6">6</div>    <div class="item" id="item_7">7</div>    <!--滾動條-->    <svg class="scroller" viewBox="0 0 31 433" fill="none" xmlns="http://www.w3.org/2000/svg">      <path class="scroller_thumb" d="M4 4C9.96737 4 15.6903 6.37053 19.9099 10.5901C24.1295 14.8097 26.5 20.5326 26.5 26.5V406.5C26.5 412.467 24.1295 418.19 19.9099 422.41C15.6903 426.629 9.96737 429 4 429" stroke="black" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>    </svg>  </div></div>

相關CSS如下:9Bb28資訊網(wǎng)——每日最新資訊28at.com

.wrap{  position: relative;}.scroller {  position: absolute;  top: 0;  bottom: 0;  right: 0;  pointer-events: none;  height: -webkit-fill-available;  margin: 5px;}.scroller_thumb{  stroke: hsl(0 0% 100% / 0.5);  stroke-dasharray: 80 450;  stroke-width: 8px;  animation: scroll both 5s linear;}

這樣結(jié)構(gòu)就搭好了,只是滾動條會自動播放。9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

接下來就是最關鍵的一步,加上滾動驅(qū)動動畫。9Bb28資訊網(wǎng)——每日最新資訊28at.com

.scroller_thumb{  animation: scroll both 5s linear;  animation-timeline: scroll();}

但是這樣是不起作用的,直接使用scroll()會自動尋找它的相對父級,也就是.wrap,但實際滾動的其實是.list,所以這種情況下我們需要具名的滾動時間線,實現(xiàn)如下:9Bb28資訊網(wǎng)——每日最新資訊28at.com

.list{  scroll-timeline: --scroller;}.scroller_thumb{  animation: scroll both 5s linear;  animation-timeline: --scroller;}

這樣SVG路徑動畫就能跟隨容器滾動而運動了。9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

三、CSS 滾動吸附

原效果中還有一個滾動回彈的效果,當滾動到容器邊緣時,會自動回彈到起始位置。9Bb28資訊網(wǎng)——每日最新資訊28at.com

其實只需要用到 CSS scroll snap 就可以了。9Bb28資訊網(wǎng)——每日最新資訊28at.com

https://developer.mozilla.org/zh-CN/docs/Web/CSS/scroll-snap-type。9Bb28資訊網(wǎng)——每日最新資訊28at.com

實現(xiàn)很簡單,給滾動容器添加scroll-snap-type屬性,表示這是個允許滾動吸附的容器。9Bb28資訊網(wǎng)——每日最新資訊28at.com

.list{  scroll-snap-type: y mandatory;}

然后就指定需要吸附的點了,由于需要回彈的效果,所以滾動容器的首尾需要一個空白的容器,這里直接用兩個偽元素來生成9Bb28資訊網(wǎng)——每日最新資訊28at.com

.list::before,.list::after{  content: '';  height: 50px;  flex-shrink: 0;}

效果如下:9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

然后我們設置滾動吸附點就行了,設置第一個元素頂部和最后一個元素底部,其他元素居中就行了。9Bb28資訊網(wǎng)——每日最新資訊28at.com

.item{  scroll-snap-align: center;}.item:first-child{  scroll-snap-align: start;}/*最后一個元素是 SVG,所以這里用倒數(shù)第二個元素*/.item:nth-last-child(2){  scroll-snap-align: end;}

這樣就實現(xiàn)了文章開頭的效果了。9Bb28資訊網(wǎng)——每日最新資訊28at.com

9Bb28資訊網(wǎng)——每日最新資訊28at.com

完整代碼可以查看以下鏈接(無任何 JS)9Bb28資訊網(wǎng)——每日最新資訊28at.com

  • CSS round scroll (juejin.cn)[1]
  • CSS round scroll (codepen.io)[2]

四、總結(jié)一下

總的來說,CSS滾動驅(qū)動在滾動交互上帶來了無限可能,很多以前必須借助 JS來實現(xiàn)的都可以輕易實現(xiàn),下面總結(jié)一下。9Bb28資訊網(wǎng)——每日最新資訊28at.com

  • 從本質(zhì)上來講,右側(cè)的滾動條其實是一個 SVG 路徑動畫。
  • SVG路徑可以通過stroke-dasharray設置虛實間隔。
  • 當虛線間隔足夠長時,超過路徑本身,就能得到一小塊實線。
  • 通過改變stroke-dashoffset偏移能夠?qū)崿F(xiàn)路徑描邊動畫。
  • 借助 CSS滾動驅(qū)動動畫可以將SVG路徑動畫跟隨容器滾動而運動。
  • 滾動回彈效果其實就是CSS scroll snap實現(xiàn)的。

[1]CSS round scroll (juejin.cn): https://code.juejin.cn/pen/7326425332964130856。9Bb28資訊網(wǎng)——每日最新資訊28at.com

[2]CSS round scroll (codepen.io): https://codepen.io/xboxyan/pen/WNmjZLo。9Bb28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-66203-0.htmlCSS 滾動驅(qū)動動畫實現(xiàn)圓弧滾動條

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 厲害,美國人又搞了一個壟斷的生態(tài)系統(tǒng)

下一篇: 【故障現(xiàn)場】多線程性能優(yōu)化最大的坑,99%人都不自知

標簽:
  • 熱門焦點
  • MIX Fold3包裝盒泄露 新機本月登場

    小米的全新折疊屏旗艦MIX Fold3將于本月發(fā)布,近日該機的真機包裝盒在網(wǎng)上泄露。從圖上來看,新的MIX Fold3包裝盒在外觀設計方面延續(xù)了之前的方案,變化不大,這也是目前小米旗艦
  • 6月iOS設備好評榜:第一蟬聯(lián)榜首近一年

    作為安兔兔各種榜單里變化最小的那個,2023年6月的iOS好評榜和上個月相比沒有任何排名上的變化,僅僅是部分設備好評率的下降,長年累月的用戶評價和逐漸退出市場的老款機器讓這
  • 印度登月最關鍵一步!月船三號今晚進入環(huán)月軌道

    8月5日消息,據(jù)印度官方消息,月船三號將于北京時間今晚21時30分左右開始近月制動進入環(huán)月軌道。這是該探測器能夠成功的最關鍵步驟之一,如果成功將開始圍
  • JavaScript學習 -AES加密算法

    引言在當今數(shù)字化時代,前端應用程序扮演著重要角色,用戶的敏感數(shù)據(jù)經(jīng)常在前端進行加密和解密操作。然而,這樣的操作在網(wǎng)絡傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數(shù)據(jù)
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會涉及各種各樣的安全任務,包括但不限于:開發(fā)某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯(lián)網(wǎng)企業(yè)調(diào)整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 余承東:AI大模型技術(shù)的發(fā)展將會帶來下一代智能終端操作系統(tǒng)的智慧體驗

    8月4日消息,2023年華為開發(fā)者大會(HDC.Together)今天正式開幕,華為發(fā)布HarmonyOS 4、全新升級的鴻蒙開發(fā)套件、HarmonyOS Next開發(fā)者預覽版本等一系列
  • iQOO Neo8系列今日官宣:首發(fā)天璣9200+ 全球安卓最強芯!

    在昨日舉行的的聯(lián)發(fā)科新一代旗艦芯片天璣9200+的發(fā)布會上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品將全球首發(fā)搭載這款當前性能最強大的移動平臺
  • 2022爆款:ROG魔霸6 冰川散熱系統(tǒng)持續(xù)護航

    喜逢開學季,各大商家開始推出自己的新產(chǎn)品,進行打折促銷活動。對于忠實的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現(xiàn)在的
Top