CSS隱藏移動(dòng)端的滾動(dòng)條的三種實(shí)現(xiàn)方式

在移動(dòng)端開(kāi)發(fā)中,經(jīng)常會(huì)碰到需要橫向滾動(dòng)的場(chǎng)景,例如這樣的
但很多時(shí)候是不需要展示這個(gè)滾動(dòng)條的,也就是這樣的效果,如下
你可能想到直接設(shè)置滾動(dòng)條樣式就可以了,就像這樣
::-webkit-scrollbar { display: none; }
目前來(lái)看好像沒(méi)什么問(wèn)題,但在某些版本的 iOS 上卻無(wú)效(具體待測(cè)試),滾動(dòng)條仍然出現(xiàn)。
那有沒(méi)有其他方式可以解決這個(gè)問(wèn)題呢?下面介紹幾個(gè)方法
一、通過(guò) overflow 隱藏
既然有時(shí)候修改滾動(dòng)條樣式無(wú)法解決,我們可以想辦法把它隱藏。
下面是一個(gè)橫向滾動(dòng)列表
<div class="list"> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> </div>
簡(jiǎn)單修飾一下,讓這個(gè)列表可以橫向滾動(dòng)
.list{ display: flex; overflow: auto; gap: 10px; padding: 10px; } .item{ width: 100px; height: 100px; background: royalblue; border-radius: 8px; flex-shrink: 0; }
效果如下
通過(guò)overflow隱藏的方式很簡(jiǎn)單,我們需要一個(gè)父級(jí)
<div class="wrap"> <div class="list"> </div> </div>
然后,將列表底部padding
設(shè)置的稍微大一些,比如
.list{ /**/ padding-bottom: 20px; }
可以看到列表下方的距離變大了,滾動(dòng)條也更靠下了,效果如下
如何讓整體尺寸仍然保持原有呢?答案是借助負(fù)margin,比如之前底部padding是10
,現(xiàn)在改成了20
,所以需要-10
的margin
.list{ /**/ margin-bottom: -10px; }
這樣整體尺寸就正常了,不過(guò)滾動(dòng)條仍然是可見(jiàn)的,只是出去了
最后只需要設(shè)置父級(jí)的 overflow為隱藏就可以了
.wrap{ /**/ overflow: hidden; }
原理示意如下
這樣就完美隱藏了滾動(dòng)條
當(dāng)然,不僅僅是 overflow,下面這種方式也可以實(shí)現(xiàn)超出隱藏
.wrap{ /**/ contain: paint; }
這個(gè)屬性比較新,可以控制元素在容器內(nèi)的繪制規(guī)則,了解一下即可
二、通過(guò) clip 裁剪
第一種方式需要借助父級(jí)的超出隱藏,需要額外一層,好像有點(diǎn)麻煩,有沒(méi)有辦法自身也可以裁剪呢?
那就是 clip-path
相信大家對(duì)這個(gè)屬性應(yīng)該很熟練了,非常直觀的裁剪屬性。
比如這種情況,只需要把滾動(dòng)條的那一部分裁剪掉就可以了,這里要用到clip-path
的inset
方法
clip-path: inset()
這里簡(jiǎn)單介紹一下。inset最多可以傳4個(gè)參數(shù),分別表示裁剪掉距離上、右、下、左的部分
所以,要把滾動(dòng)條隱藏就很簡(jiǎn)單了,只需要把下方的裁剪距離設(shè)置大于滾動(dòng)條尺寸的值就行了,這里就用10px
.list{ clip-path: inset(0 0 10px) }
效果如下
一行代碼輕松解決~
三、通過(guò) mask 遮罩
其實(shí)和 clip思路是一致的,只不過(guò)實(shí)現(xiàn)方式不一樣。
回到這里,我們只需要繪制一個(gè)不包含滾動(dòng)條部分的純色漸變就行了,可以直接繪制一個(gè)純色漸變,然后設(shè)置背景尺寸,如下
.list{ -webkit-mask: linear-gradient(red, red) 0 0/100% calc(100% - 10px) no-repeat; }
原理示意如下
也能很好的隱藏滾動(dòng)條
除此以外,mask 還可以很好的實(shí)現(xiàn)滾動(dòng)邊界漸隱的效果,只需要疊加一層從透明→純色→透明
的漸變就行了
.list{ -webkit-mask: linear-gradient(to right, transparent, red 15px calc(100% - 15px), transparent), linear-gradient(red, red) 0 0/100% calc(100% - 10px) no-repeat; -webkit-mask-composite: source-in; }
就可以得到這樣的效果
由于是遮罩實(shí)現(xiàn),并不是簡(jiǎn)單的顏色覆蓋,所以換一種背景顏色也可以很好的融合
以上所有完整 demo 可以查看以下鏈接
https://codepen.io/xboxyan/pen/GRPrzeO
四、總結(jié)一下
以上共介紹了 3 種方式來(lái)隱藏滾動(dòng)條,各有千秋
- overflow兼容性最好,也最直觀,符合大多數(shù)人思路,缺點(diǎn)是需要單獨(dú)嵌套一層父級(jí)
- clip實(shí)現(xiàn)最簡(jiǎn)潔,也比較好理解,在本案例中最為推薦
- mask思路和clip,實(shí)現(xiàn)起來(lái)稍微復(fù)雜一點(diǎn),還可以實(shí)現(xiàn)更為復(fù)雜的漸隱效果,能夠掌握更好
當(dāng)然不僅僅只是本文的案例,很多場(chǎng)景都可以去嘗試用多種方式去實(shí)現(xiàn),更多的是發(fā)揮自己的想象,這樣的CSS不是更有趣嗎?
以上就是CSS隱藏移動(dòng)端的滾動(dòng)條的三種實(shí)現(xiàn)方式的詳細(xì)內(nèi)容,更多關(guān)于CSS隱藏滾動(dòng)條的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
css實(shí)現(xiàn)隱藏滾動(dòng)條并可以滾動(dòng)內(nèi)容的實(shí)例代碼
這篇文章主要介紹了css實(shí)現(xiàn)隱藏滾動(dòng)條并可以滾動(dòng)內(nèi)容的實(shí)例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-03CSS實(shí)現(xiàn)隱藏滾動(dòng)條并可以滾動(dòng)內(nèi)容效果(三種方式)
今天小編給大家分享3種方法實(shí)現(xiàn)CSS隱藏滾動(dòng)條并可以滾動(dòng)內(nèi)容,我已經(jīng)在很多地方使用了非常不錯(cuò),需要的朋友參考下吧2020-03-25純CSS實(shí)現(xiàn)隱藏滾動(dòng)條但仍具有滾動(dòng)的效果(移動(dòng)端和pc端)
這篇文章主要介紹了純CSS實(shí)現(xiàn)隱藏滾動(dòng)條但仍具有滾動(dòng)的效果(移動(dòng)端和pc端),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-07css設(shè)置Overflow實(shí)現(xiàn)隱藏滾動(dòng)條的同時(shí)又可以滾動(dòng)
這篇文章主要介紹了css設(shè)置Overflow實(shí)現(xiàn)隱藏滾動(dòng)條的同時(shí)又可以滾動(dòng)的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-08-27- 這篇文章主要介紹了使用CSS隱藏元素滾動(dòng)條的示例代碼,需要的朋友可以參考下2019-07-10
css 給div添加滾動(dòng)并隱藏滾動(dòng)條
這篇文章主要介紹了css 給div添加滾動(dòng)并隱藏滾動(dòng)條的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-09css隱藏移動(dòng)端滾動(dòng)條并且ios上平滑滾動(dòng)的方法
這篇文章主要介紹了css隱藏移動(dòng)端滾動(dòng)條并且ios上平滑滾動(dòng)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-23css設(shè)置滾動(dòng)條顏色與樣式以及如何去掉與隱藏滾動(dòng)條
我們大家在瀏覽網(wǎng)頁(yè)的時(shí)偶爾會(huì)看到很漂亮的各種顏色樣式的滾動(dòng)條,這就是通過(guò)css代碼控制來(lái)實(shí)現(xiàn)的,于是本人搜集整理一番,這里和大家分享一下使用CSS設(shè)置滾動(dòng)條顏色以及如2012-12-16