自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Windows 滾動條如何美化成 macOS 那樣?

系統(tǒng) Windows
macOS?的滾動類似于懸浮在內(nèi)容之上,不占據(jù)任何頁面空間,那么,Windows可以做到嗎?

眾所周知,Windows和macOS?的滾動條在默認(rèn)情況是不一致的,最顯著的區(qū)別就是 macOS滾動條是不占據(jù)屏幕尺寸的,如下:

圖片

macOS滾動條

而Windows下是這樣的:

圖片

windows滾動條

很多設(shè)計師會吐槽Windows?滾動條不太美觀,能不能自定義成macOS那樣呢?

當(dāng)然也是可以的!一起看看吧!

一、自定義滾動條外觀

考慮到桌面端現(xiàn)在已經(jīng)是-webkit-?的天下了,以下自定義均以chrome為例:

自定義滾動條需要用到兩個關(guān)鍵的偽元素::-webkit-scrollbar和::-webkit-scrollbar-thumb。

  • ::-webkit-scrollbar滾動容器樣式
  • ::-webkit-scrollbar-thumb滑塊樣式

https://developer.mozilla.org/zh-CN/docs/Web/CSS/::-webkit-scrollbar[1]。

下面是windows下的滾動條:

圖片

滾動條相關(guān)偽元素

有了這兩個偽元素,自定義樣式就很方便了。現(xiàn)在我們需要將滾動條的背景去除,滑塊修改成半透明的圓角矩形。

::-webkit-scrollbar{
background-color: transparent;
}
::-webkit-scrollbar-thumb{
background-color: transparent;
border-radius: 8px;
}

效果如下:

圖片

自定義滾動條

是不是和macOS的差異有點大?沒關(guān)系,下面繼續(xù)優(yōu)化:

二、滑塊與滾動容器之間的間距

macOS的滾動滑塊并不是緊貼邊緣的,它與滾動容器直接還有間隙。

圖片

macOS滾動條的間隙

那么,如何留出一點點間隙呢?

嘗試了一些方法,比如給滾動容器添加內(nèi)邊距,或者給滑塊添加外邊距。

::-webkit-scrollbar{
padding: 2px;
}
::-webkit-scrollbar-thumb{
margin: 2px;
}

由于滾動條的特殊性,這些方式都不起作用。

后來發(fā)現(xiàn),邊框是生效的,比如給滑塊添加一個border。

::-webkit-scrollbar-thumb{
border: 2px solid red;
}

效果如下:

圖片

添加border的效果

既然這樣就好辦了,把邊框設(shè)置成透明不就行了嗎,由于是透明,默認(rèn)情況下背景會覆蓋到邊框,所以還需要設(shè)置背景作用區(qū)域(background-clip)。

::-webkit-scrollbar-thumb{
border: 2px solid transparent;
background-clip: content-box;
}

效果如下:

圖片

透明邊框配合background-clip的效果

三、將滾動條懸浮在內(nèi)容之上

還有一個比較重要的特性沒有實現(xiàn),那就是滾動條的位置。macOS?的滾動類似于懸浮在內(nèi)容之上,不占據(jù)任何頁面空間,那么,Windows可以做到嗎?當(dāng)然也是可以的,而且非常容易,只需要一個屬性。

body{
overflow: overlay; /*滾動條會覆蓋在頁面之上*/
}

下面看對比效果:

圖片

overlay效果對比

是不是看著非常像MacOS了?

四、滾動時才出現(xiàn)

macOS滾動條還有一個特性,就默認(rèn)情況下是不可見的,只有滾動時才可見,一旦停止就又消失了,如下:

圖片

滾動才出現(xiàn)

是否正在滾動就沒法用CSS?進行判斷了,需要借助點js?的力量,原理很簡單,滾動的時候給body?添加一個屬性scroll?屬性,然后延遲500ms后移除,如果繼續(xù)滾動就取消計時器,代碼如下:

window.addEventListener('scroll', function() {
document.body.toggleAttribute('scroll', true)
this.timer && clearTimeout(this.timer)
this.timer = setTimeout(() => {
document.body.toggleAttribute('scroll')
}, 500)
})

然后配合一點CSS:

::-webkit-scrollbar-thumb{
/*其他樣式*/
background-color: transparent;
}
body[scroll]::-webkit-scrollbar-thumb
background-color: rgba(0,0,0,.5);
}

現(xiàn)在再看看效果:

圖片

windows下的滾動效果

是不是非常接近macOS的效果了?

不過還有個小遺憾,滾動條上不支持過渡和動畫,如下:

::-webkit-scrollbar-thumb{
transition: .3s;/*并不生效*/
}

也就是想達(dá)到macOS?下那種“淡出”的效果,僅憑 CSS是做不到的,當(dāng)然這也并不是大問題,可以忽略

下面是完整代碼:

body{
margin: 0;
overflow: overlay;
}
::-webkit-scrollbar{
background-color: transparent;
width: 12px;
}
::-webkit-scrollbar-thumb{
background-color: transparent;
border-radius: 8px;
background-clip: content-box;
border: 2px solid transparent;
}
body[scroll]::-webkit-scrollbar-thumb,
::-webkit-scrollbar-thumb:hover{
background-color: rgba(0,0,0,.5);
}
window.addEventListener('scroll', function(ev) {
document.body.toggleAttribute('scroll', true)
this.timer && clearTimeout(this.timer)
this.timer = setTimeout(() => {
document.body.toggleAttribute('scroll')
}, 500)
})

你也可以訪問在線 demo:macOS scrollbar (codepen.io)[2]或者 macOS scrollbar(juejin.cn)[3] 或者macOS scrollbar (gitee.io)[4]。

五、總結(jié)和說明

以上就是自定義滾動全部小技巧了,你學(xué)會了嗎?下面總結(jié)一下:

  • Windows和macOS?默認(rèn)滾動條不一致,很多設(shè)計師覺得Windows不太美觀,有必要自定義。
  • 自定義滾動條主要借助兩個關(guān)鍵的偽元素::-webkit-scrollbar和::-webkit-scrollbar-thumb。
  • 滾動滑塊和滾動容器之間的間隙可以通過border和backgrpound-clip實現(xiàn)。
  • 給滾動容器設(shè)置overflow: overlay,可以將滾動條懸浮于內(nèi)容之上。
  • 滾動時出現(xiàn)需要借助js定時器,延遲控制狀態(tài)

另外,有同學(xué)問fierfox?怎么辦呢?沒關(guān)系,不用管它,桌面端早已是Chrome?的天下了,占比超過70%?,還有一點,這是個視覺體驗的優(yōu)化,即使firefox不支持也不影響滾動條功能,有什么理由不去使用呢?

責(zé)任編輯:武曉燕 來源: 前端偵探
相關(guān)推薦

2023-11-22 07:47:34

2010-09-14 10:13:53

DIV滾動條

2010-09-09 11:25:55

滾動條CSS

2011-09-02 10:03:40

jQuery滾動圖片

2024-01-22 09:28:23

CSS前端滾動驅(qū)動

2014-07-29 11:10:26

Ubuntu14.04小技巧

2010-09-30 15:24:31

滾動條Javascript

2011-05-12 16:30:44

自定義滾動條

2010-09-09 09:47:02

DIV滾動條

2021-08-31 07:31:22

微軟Edge瀏覽器

2010-07-28 11:25:08

Flex滾動條

2011-03-04 14:46:40

Ubuntu Unit

2010-08-09 15:19:29

Flex滾動條

2011-09-01 13:17:46

JQuery滾動

2022-03-25 22:51:10

微軟Chrome滾動條

2023-09-11 09:07:58

CSS隱藏滾動條

2010-09-30 15:37:29

ScrollBarJavascrip

2022-05-30 07:56:13

微軟滾動條Chrome

2023-05-04 08:09:44

Windows 11微軟

2021-09-05 06:40:10

微軟Edge瀏覽器
點贊
收藏

51CTO技術(shù)棧公眾號