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

日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

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

CSS 滾動驅動動畫實現圓弧滾動條

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

p2h28資訊網——每日最新資訊28at.com

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

p2h28資訊網——每日最新資訊28at.com

你可以查看原鏈接來體驗一下p2h28資訊網——每日最新資訊28at.com

https://codepen.io/jh3y/pen/gOEgxbd。p2h28資訊網——每日最新資訊28at.com


p2h28資訊網——每日最新資訊28at.com

這是如何實現的呢?p2h28資訊網——每日最新資訊28at.com

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

p2h28資訊網——每日最新資訊28at.com

一、SVG 路徑動畫

從本質上來講,其實是一個 SVG 路徑動畫。p2h28資訊網——每日最新資訊28at.com

具體如何實現呢?p2h28資訊網——每日最新資訊28at.com

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

p2h28資訊網——每日最新資訊28at.com

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

p2h28資訊網——每日最新資訊28at.com

然后導出SVG,可以得到這樣一段代碼。p2h28資訊網——每日最新資訊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動起來呢?p2h28資訊網——每日最新資訊28at.com

很簡單,現在SVG是一段實線,我們可以通過stroke-dasharray設置成虛線,比如:p2h28資訊網——每日最新資訊28at.com

path{  stroke-dasharray: 80}

這樣會得到一個實線和虛線間隔都是80的虛線。p2h28資訊網——每日最新資訊28at.com

p2h28資訊網——每日最新資訊28at.com

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

path{  stroke-dasharray: 80 120}

效果如下:p2h28資訊網——每日最新資訊28at.com

p2h28資訊網——每日最新資訊28at.com

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

p2h28資訊網——每日最新資訊28at.com

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

path{  stroke-dasharray: 80 1000}

這樣就得到了一小段實線。p2h28資訊網——每日最新資訊28at.com

p2h28資訊網——每日最新資訊28at.com

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

比如:p2h28資訊網——每日最新資訊28at.com

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

效果如下:p2h28資訊網——每日最新資訊28at.com

p2h28資訊網——每日最新資訊28at.com

是不是有點像呢?p2h28資訊網——每日最新資訊28at.com

我們再調整一下起始偏移量,讓它出去一點。p2h28資訊網——每日最新資訊28at.com

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

這樣就更接近我們想要的效果了。p2h28資訊網——每日最新資訊28at.com

p2h28資訊網——每日最新資訊28at.com

整個運動原理就是這樣了,接著往下看p2h28資訊網——每日最新資訊28at.com

二、CSS 滾動驅動動畫

接下來需要通過滾動驅動動畫將容器滾動與CSS動畫「聯動」起來。p2h28資訊網——每日最新資訊28at.com

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

先簡單布局一下:p2h28資訊網——每日最新資訊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>

美化一下:p2h28資訊網——每日最新資訊28at.com

p2h28資訊網——每日最新資訊28at.com

然后,我們將默認的滾動條隱藏,用我們這個 SVG路徑來代替,由于需要絕對定位,我們再套一層父級。p2h28資訊網——每日最新資訊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如下:p2h28資訊網——每日最新資訊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;}

這樣結構就搭好了,只是滾動條會自動播放。p2h28資訊網——每日最新資訊28at.com

p2h28資訊網——每日最新資訊28at.com

接下來就是最關鍵的一步,加上滾動驅動動畫。p2h28資訊網——每日最新資訊28at.com

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

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

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

這樣SVG路徑動畫就能跟隨容器滾動而運動了。p2h28資訊網——每日最新資訊28at.com

p2h28資訊網——每日最新資訊28at.com

三、CSS 滾動吸附

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

其實只需要用到 CSS scroll snap 就可以了。p2h28資訊網——每日最新資訊28at.com

https://developer.mozilla.org/zh-CN/docs/Web/CSS/scroll-snap-type。p2h28資訊網——每日最新資訊28at.com

實現很簡單,給滾動容器添加scroll-snap-type屬性,表示這是個允許滾動吸附的容器。p2h28資訊網——每日最新資訊28at.com

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

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

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

效果如下:p2h28資訊網——每日最新資訊28at.com

p2h28資訊網——每日最新資訊28at.com

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

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

這樣就實現了文章開頭的效果了。p2h28資訊網——每日最新資訊28at.com

p2h28資訊網——每日最新資訊28at.com

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

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

四、總結一下

總的來說,CSS滾動驅動在滾動交互上帶來了無限可能,很多以前必須借助 JS來實現的都可以輕易實現,下面總結一下。p2h28資訊網——每日最新資訊28at.com

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

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

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

本文鏈接:http://m.www897cc.com/showinfo-26-66203-0.htmlCSS 滾動驅動動畫實現圓弧滾動條

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

上一篇: 厲害,美國人又搞了一個壟斷的生態系統

下一篇: 【故障現場】多線程性能優化最大的坑,99%人都不自知

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久国产精品99精品国产| 夜夜精品视频一区二区| 国产精品视频一区二区三区| 国产精品久久久久久户外露出| 国产精品视频一二三| 国产一区二区三区高清| 亚洲高清免费视频| 一区二区日韩欧美| 先锋影音网一区二区| 久久婷婷综合激情| 欧美精品在线视频观看| 国产精品最新自拍| 亚洲福利专区| 亚洲综合欧美日韩| 久久婷婷国产麻豆91天堂| 欧美激情视频在线播放 | 亚洲大片av| 亚洲精品日韩在线观看| 亚洲欧洲99久久| 美女网站在线免费欧美精品| 国产精品黄视频| 欲香欲色天天天综合和网| 欧美日韩高清区| 国产午夜精品理论片a级大结局| 一区二区三区中文在线观看 | 久久久亚洲人| 欧美网站大全在线观看| 狠狠做深爱婷婷久久综合一区 | 国产中文一区| 一本色道久久综合精品竹菊| 久久精选视频| 欧美视频中文在线看| 狠狠色狠狠色综合日日五| 一区二区三区产品免费精品久久75 | 日韩天天综合| 久久精品女人天堂| 欧美色视频在线| 伊人久久综合97精品| 亚洲一区二区三区四区五区午夜| 另类av导航| 国产精品一区免费视频| 91久久久久久久久| 久久成人精品无人区| 欧美色区777第一页| 在线国产欧美| 久久丁香综合五月国产三级网站| 欧美日韩在线亚洲一区蜜芽| 亚洲高清av| 久久成人免费电影| 国产精品久久久久久久久久直播| 91久久久在线| 久久综合伊人77777蜜臀| 国产区精品视频| 亚洲一区国产一区| 欧美日韩精品久久久| 亚洲国产欧洲综合997久久| 欧美在线视频不卡| 国产精品一区一区三区| 亚洲视频网在线直播| 欧美激情欧美狂野欧美精品| 在线不卡a资源高清| 久久福利资源站| 国产精品日韩专区| 亚洲天堂黄色| 欧美午夜精品久久久久久久| 一区二区精品国产| 欧美久久一级| 亚洲精品中文字| 欧美激情在线播放| 亚洲精品美女在线观看| 男女精品网站| 亚洲国产天堂网精品网站| 老司机67194精品线观看| 狠狠色综合网| 老司机一区二区三区| 伊人久久久大香线蕉综合直播 | 老妇喷水一区二区三区| 黄色成人在线观看| 久久国产精品色婷婷| 国产精品一区二区三区免费观看| 亚洲免费一在线| 国产精品亚洲综合| 亚洲欧美日韩视频二区| 国产精品推荐精品| 午夜在线视频观看日韩17c| 国产精品亚洲网站| 欧美亚洲在线| 国产在线不卡| 久久资源在线| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美国产高清| 亚洲免费观看视频| 欧美体内谢she精2性欧美| 中日韩男男gay无套| 国产精品欧美精品| 性色一区二区三区| 激情五月婷婷综合| 美脚丝袜一区二区三区在线观看| 亚洲精品1区2区| 国产欧美 在线欧美| 亚洲视频综合| 国产精品视频一区二区三区| 欧美一区二区日韩| 海角社区69精品视频| 噜噜噜噜噜久久久久久91| 91久久夜色精品国产网站| 欧美日韩精品中文字幕| 亚洲性夜色噜噜噜7777| 国产日本亚洲高清| 久久综合成人精品亚洲另类欧美| 亚洲欧洲一区| 国产精品福利在线观看网址| 欧美一区2区三区4区公司二百| 一区久久精品| 欧美日韩国产成人在线免费| 午夜精品国产更新| 在线成人av.com| 欧美日韩中文字幕在线视频| 欧美亚洲午夜视频在线观看| 在线日韩电影| 欧美午夜精品理论片a级按摩| 欧美在线一级视频| 91久久精品国产| 国产精品久久久久毛片软件| 久久精品国产2020观看福利| 亚洲国产综合在线看不卡| 欧美视频在线不卡| 久久av红桃一区二区小说| 亚洲精品乱码久久久久久按摩观 | 欧美日韩第一区日日骚| 亚洲欧美大片| 亚洲电影免费观看高清完整版 | 亚洲高清久久久| 国产精品高潮粉嫩av| 久久人人看视频| 中文国产一区| 在线不卡中文字幕播放| 国产精品草莓在线免费观看| 久久嫩草精品久久久精品一| 一区二区三区日韩欧美| 伊人精品久久久久7777| 国产精品久久国产三级国电话系列 | 国产精品福利片| 美女视频网站黄色亚洲| 亚洲一二三级电影| 在线日韩日本国产亚洲| 国产精品家庭影院| 免费人成精品欧美精品| 午夜精品久久久久久99热软件 | 老色鬼精品视频在线观看播放| 一本大道久久a久久精品综合| 国产一区清纯| 欧美四级在线| 模特精品裸拍一区| 欧美在线一二三区| 在线亚洲一区二区| 亚洲国产高清在线观看视频| 国产精品丝袜白浆摸在线| 欧美乱大交xxxxx| 久久久久久97三级| 午夜电影亚洲| 一区二区欧美激情| 亚洲激情图片小说视频| 国内精品久久久久久久影视麻豆| 欧美深夜福利| 欧美二区在线看| 久久影视精品| 欧美在线观看视频一区二区| 中文国产一区| 亚洲麻豆视频| 在线欧美日韩| 狠狠88综合久久久久综合网| 国产欧美一区二区精品秋霞影院| 欧美三级日韩三级国产三级| 欧美 日韩 国产在线| 国内精品国语自产拍在线观看| 欧美午夜精品久久久久久久 | 欧美在线三区| 亚洲一区二区三区免费在线观看 | 美日韩精品视频免费看| 久久riav二区三区| 亚洲在线成人| 亚洲天堂第二页| 一区二区三区免费网站| 亚洲乱码日产精品bd| 亚洲国产日韩欧美一区二区三区| 精品成人国产在线观看男人呻吟| 国产日本欧美视频| 国产精品专区第二| 国产精品久久一级| 国产精品h在线观看| 欧美日韩一区二区在线播放| 欧美精品久久99| 欧美激情1区2区3区| 欧美ab在线视频| 免费不卡在线观看av| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久免费视频观看| 久久先锋资源| 免费成人av资源网| 欧美成人激情在线| 欧美华人在线视频| 欧美激情1区| 欧美三级网址|