CSS隱藏移動端的滾動條的三種實現(xiàn)方式
在移動端開發(fā)中,經(jīng)常會碰到需要橫向滾動的場景,例如這樣的

但很多時候是不需要展示這個滾動條的,也就是這樣的效果,如下

你可能想到直接設置滾動條樣式就可以了,就像這樣
::-webkit-scrollbar {
display: none;
}目前來看好像沒什么問題,但在某些版本的 iOS 上卻無效(具體待測試),滾動條仍然出現(xiàn)。
那有沒有其他方式可以解決這個問題呢?下面介紹幾個方法
一、通過 overflow 隱藏
既然有時候修改滾動條樣式無法解決,我們可以想辦法把它隱藏。
下面是一個橫向滾動列表
<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>
簡單修飾一下,讓這個列表可以橫向滾動
.list{
display: flex;
overflow: auto;
gap: 10px;
padding: 10px;
}
.item{
width: 100px;
height: 100px;
background: royalblue;
border-radius: 8px;
flex-shrink: 0;
}效果如下

通過overflow隱藏的方式很簡單,我們需要一個父級
<div class="wrap"> <div class="list"> </div> </div>
然后,將列表底部padding設置的稍微大一些,比如
.list{
/**/
padding-bottom: 20px;
}可以看到列表下方的距離變大了,滾動條也更靠下了,效果如下

如何讓整體尺寸仍然保持原有呢?答案是借助負margin,比如之前底部padding是10,現(xiàn)在改成了20,所以需要-10的margin
.list{
/**/
margin-bottom: -10px;
}這樣整體尺寸就正常了,不過滾動條仍然是可見的,只是出去了

最后只需要設置父級的 overflow為隱藏就可以了
.wrap{
/**/
overflow: hidden;
}原理示意如下

這樣就完美隱藏了滾動條

當然,不僅僅是 overflow,下面這種方式也可以實現(xiàn)超出隱藏
.wrap{
/**/
contain: paint;
}這個屬性比較新,可以控制元素在容器內的繪制規(guī)則,了解一下即可
二、通過 clip 裁剪
第一種方式需要借助父級的超出隱藏,需要額外一層,好像有點麻煩,有沒有辦法自身也可以裁剪呢?
那就是 clip-path
相信大家對這個屬性應該很熟練了,非常直觀的裁剪屬性。
比如這種情況,只需要把滾動條的那一部分裁剪掉就可以了,這里要用到clip-path的inset方法
clip-path: inset()
這里簡單介紹一下。inset最多可以傳4個參數(shù),分別表示裁剪掉距離上、右、下、左的部分

所以,要把滾動條隱藏就很簡單了,只需要把下方的裁剪距離設置大于滾動條尺寸的值就行了,這里就用10px
.list{
clip-path: inset(0 0 10px)
}效果如下

一行代碼輕松解決~
三、通過 mask 遮罩
其實和 clip思路是一致的,只不過實現(xiàn)方式不一樣。

回到這里,我們只需要繪制一個不包含滾動條部分的純色漸變就行了,可以直接繪制一個純色漸變,然后設置背景尺寸,如下
.list{
-webkit-mask: linear-gradient(red, red) 0 0/100% calc(100% - 10px) no-repeat;
}原理示意如下

也能很好的隱藏滾動條

除此以外,mask 還可以很好的實現(xiàn)滾動邊界漸隱的效果,只需要疊加一層從透明→純色→透明的漸變就行了
.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;
}就可以得到這樣的效果

由于是遮罩實現(xiàn),并不是簡單的顏色覆蓋,所以換一種背景顏色也可以很好的融合

以上所有完整 demo 可以查看以下鏈接
https://codepen.io/xboxyan/pen/GRPrzeO
四、總結一下
以上共介紹了 3 種方式來隱藏滾動條,各有千秋
- overflow兼容性最好,也最直觀,符合大多數(shù)人思路,缺點是需要單獨嵌套一層父級
- clip實現(xiàn)最簡潔,也比較好理解,在本案例中最為推薦
- mask思路和clip,實現(xiàn)起來稍微復雜一點,還可以實現(xiàn)更為復雜的漸隱效果,能夠掌握更好
當然不僅僅只是本文的案例,很多場景都可以去嘗試用多種方式去實現(xiàn),更多的是發(fā)揮自己的想象,這樣的CSS不是更有趣嗎?
以上就是CSS隱藏移動端的滾動條的三種實現(xiàn)方式的詳細內容,更多關于CSS隱藏滾動條的資料請關注腳本之家其它相關文章!
相關文章
這篇文章主要介紹了css實現(xiàn)隱藏滾動條并可以滾動內容的實例代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-03CSS實現(xiàn)隱藏滾動條并可以滾動內容效果(三種方式)
今天小編給大家分享3種方法實現(xiàn)CSS隱藏滾動條并可以滾動內容,我已經(jīng)在很多地方使用了非常不錯,需要的朋友參考下吧2020-03-25純CSS實現(xiàn)隱藏滾動條但仍具有滾動的效果(移動端和pc端)
這篇文章主要介紹了純CSS實現(xiàn)隱藏滾動條但仍具有滾動的效果(移動端和pc端),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-07css設置Overflow實現(xiàn)隱藏滾動條的同時又可以滾動
這篇文章主要介紹了css設置Overflow實現(xiàn)隱藏滾動條的同時又可以滾動的實現(xiàn)代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2019-08-27- 這篇文章主要介紹了使用CSS隱藏元素滾動條的示例代碼,需要的朋友可以參考下2019-07-10
- 這篇文章主要介紹了css 給div添加滾動并隱藏滾動條的實例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-07-09
- 這篇文章主要介紹了css隱藏移動端滾動條并且ios上平滑滾動的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-23
- 我們大家在瀏覽網(wǎng)頁的時偶爾會看到很漂亮的各種顏色樣式的滾動條,這就是通過css代碼控制來實現(xiàn)的,于是本人搜集整理一番,這里和大家分享一下使用CSS設置滾動條顏色以及如2012-12-16


