CSS 自定義滾動條和強制顯示

CSS 自定義滾動條和強制顯示

溢出滾動講起

Web 開發中,經常遇到需要固定容器大小,然後內部內容超出的情況,相信非技術的也經常會遇到這樣的場景,沒錯,幾乎打開任何一個門戶網站你使用鼠標滾輪就屬於上面的情況。

解決方案自然就是 overflow 這個 CSS 屬性。

visible 默認值。內容不會被修剪,會呈現在元素框之外。

hidden 內容會被修剪,並且其餘內容是不可見的。

scroll 內容會被修剪,但是瀏覽器會顯示滾動條以便查看其餘的內容。

auto 如果內容被修剪,則瀏覽器會顯示滾動條以便查看其餘的內容。

inherit 規定應該從父元素繼承 overflow 屬性的值。

效果如下:

CSS 自定義滾動條和強制顯示

visible

上面是 visible。

CSS 自定義滾動條和強制顯示

hidden

上面是 hidden。

CSS 自定義滾動條和強制顯示

scroll 與 auto

上面是 scroll 與 auto。

注意,Chrome 系列瀏覽器都會自動隱藏滾動條,不論設置 auto 還是 scroll。

因此我們才有今天的話題。

inherit 就不舉例了,這個與父元素有關。

強制顯示滾動條

首先,scroll 說好的顯示,被瀏覽器給搞掉了。

其次,隱藏是好事畢竟佔位置,而且當今的網民基本都本能的知道滾動操作。

最後,個人舉四肢贊成自動隱藏。

但是!!!

你總會遇到不怎麼上網的網民,在看不到內容時候不知所措。

亦或者,你遇到的坑爹的老闆,就是要讓你顯示(這個老闆可能不怎麼上網……)。

或者你們產品設計對象就是一些非網民的使用。

又或者你們設計覺得有個自定義滾動條好看。

等等等等情況,相信我,你一定會遇到這個情況的。

於是我們需要定製一個滾動條,放心,CSS 偽類已經給你提供好了。

核心代碼由 Steven Lewis:https://codepen.io/stevenlewis/pen/hubpL 提供,本人用到,精簡下順便搬運。


Foo

Bar

Baz

Help I'm trapped in an HTML factory!

上面是 HTML 代碼。

frame {
overflow-y: auto;
border: 1px solid black;
height: 3em;
width: 10em;
line-height: 1em;
}
.frame::-webkit-scrollbar {
-webkit-appearance: none;
}
.frame::-webkit-scrollbar:vertical {
width: 11px;
}
.frame::-webkit-scrollbar-thumb {
border-radius: 8px;
border: 2px solid white;
background-color: rgba(0, 0, 0, .5);
}

這裡是對應的 CSS 代碼。

做了對比動圖,大家看一下:

CSS 自定義滾動條和強制顯示

auto 或 scroll

上面是 auto(或 scroll)控制,細節是右邊的滾動條會自動隱藏。

CSS 自定義滾動條和強制顯示

定製

上面是經過定製的,所以不會隱藏。

.frame::-webkit-scrollbar {
-webkit-appearance: none;
}

隱藏默認的滾動條。

.frame::-webkit-scrollbar:vertical {
width: 11px;
}

設置垂直滾動條寬度。

當然也有水平滾動條配置,.frame::-webkit-scrollbar:horizontal,那麼就要設置他的高度的。如下:

.frame::-webkit-scrollbar:horizontal {
height: 11px;
}

.frame::-webkit-scrollbar-thumb {
border-radius: 8px;
border: 2px solid red;
background-color: rgba(0, 0, 0, .5);
}

滾動條的其他樣式定製,注意,這個一定也要定製,否則就是一個透明的滾動條……


OK,建議沒有用過或者忘了的小夥伴保存一下,一定會再次用到的。


分享到:


相關文章: