成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

系統 Windows
macOS?的滾動類似于懸浮在內容之上,不占據任何頁面空間,那么,Windows可以做到嗎?

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

圖片

macOS滾動條

而Windows下是這樣的:

圖片

windows滾動條

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

當然也是可以的!一起看看吧!

一、自定義滾動條外觀

考慮到桌面端現在已經是-webkit-?的天下了,以下自定義均以chrome為例:

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

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

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

下面是windows下的滾動條:

圖片

滾動條相關偽元素

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

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

效果如下:

圖片

自定義滾動條

是不是和macOS的差異有點大?沒關系,下面繼續優化:

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

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

圖片

macOS滾動條的間隙

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

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

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

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

后來發現,邊框是生效的,比如給滑塊添加一個border。

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

效果如下:

圖片

添加border的效果

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

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

效果如下:

圖片

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

三、將滾動條懸浮在內容之上

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

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

下面看對比效果:

圖片

overlay效果對比

是不是看著非常像MacOS了?

四、滾動時才出現

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

圖片

滾動才出現

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

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);
}

現在再看看效果:

圖片

windows下的滾動效果

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

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

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

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

下面是完整代碼:

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]。

五、總結和說明

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

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

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

責任編輯:武曉燕 來源: 前端偵探
相關推薦

2023-11-22 07:47:34

2010-09-14 10:13:53

DIV滾動條

2010-09-09 11:25:55

滾動條CSS

2024-01-22 09:28:23

CSS前端滾動驅動

2011-09-02 10:03:40

jQuery滾動圖片

2010-09-30 15:24:31

滾動條Javascript

2014-07-29 11:10:26

Ubuntu14.04小技巧

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滾動條

2022-03-25 22:51:10

微軟Chrome滾動條

2011-09-01 13:17:46

JQuery滾動

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技術棧公眾號

主站蜘蛛池模板: 性高湖久久久久久久久3小时 | 国产亚洲人成a在线v网站 | 午夜视频在线视频 | 久久三级av| 国产二区视频 | 91精品久久久久久久久中文字幕 | 国产亚洲精品成人av久久ww | 亚洲成人中文字幕 | 免费视频久久 | 一区在线观看视频 | 日韩午夜激情 | 久久久久久国产精品免费免费男同 | 成年人黄色免费视频 | 国产真实精品久久二三区 | 久久久这里都是精品 | 久久草视频 | 欧美 日韩 国产 在线 | 国产精品久久久久久av公交车 | 国产一区二区三区四区 | 国产成人精品a视频 | 国产精品九九视频 | 国产福利91精品一区二区三区 | 国产伦精品一区二区三区高清 | 性视频一区 | 日韩爱爱网站 | 国产不卡视频在线 | 亚洲美女网站 | 午夜视频在线播放 | 色婷婷综合久久久中字幕精品久久 | 欧美另类视频 | 日韩av成人 | 亚洲成人精品在线 | 一区二区三区观看视频 | 999热精品| 欧美精品在线免费观看 | 日本在线中文 | 国产欧美日韩精品一区二区三区 | 久草视频在 | 久久1区 | 国产高清在线精品一区二区三区 | 日韩欧美中文在线 |