HTML & CSS – Styling Scrollbar
前言
Scrollbar 能 styling 的东西不多 (尤其是 IOS 基本上只能 display:none 而已),但有时候我们不得不 styling。
这里记入我自己在项目中修改过的 scrollbar 经历。
参考
例子
Gmail Scrollbar
Gmail 的 scrollbar 就改过 style (为了美观)。
size, color, border-radius 这几个地方都改过。
Ads Scrollbar

像这种可以 sticky vertical 的 scrollbar 是模拟出来的,但是它需要把 native scrollbar hide 起来,而且不可以使用 overflow hidden,因为虽然 scrollbar 要 hide 但是 touch move scroll 功能是要保留的,
所以只能通过 styling 的方式去 hide。
Styling Webkit Scrollbar (not Firefox, not IOS)
Chrome, Edge 会比较可以 styling scrollbar。FireFox,IOS 几乎不支持。
::webkit-scrollbar
.container {
&::-webkit-scrollbar {
height: 4px; // for vertical scrollbar
width: 4px; // for horizontal scrollbar
background-color: red; // for both
}
}
修改 size, color。
它是透过伪元素 (pseudo-elements) 选择器来实现的,这也意味着我们无法透过 JS 来 styling scrollbar。
效果

红色的部分就是 scrollbar area。
也可以搭配 hover 才换颜色
.container {
&::-webkit-scrollbar {
background: transparent;
}
&::-webkit-scrollbar:hover {
background: red;
}
}
效果

如果想 hide scrollbar 可以设置 width 或 height = 0
::-webkit-scrollbar-thumb
.container {
&::-webkit-scrollbar-thumb {
border-radius: 999px;
}
&::-webkit-scrollbar-thumb:vertical {
background-color: blue;
}
&::-webkit-scrollbar-thumb:horizontal {
background-color: green;
}
}
thumb 指的是我们拉动的区域,修改了 color 和 border-radius
提醒:那个 vertical 和 horizontal 伪类 (pseudo-classes) 选择器在 ::webkit-scrollbar 是不支持的哦。
效果

::-webkit-scrollbar-button
.container {
&::-webkit-scrollbar-button:horizontal {
background-color: purple;
}
}
效果

Styling Firefox Scrollbar
Firefox 非常局限
.container {
scrollbar-color: red orange; // first for thumb, second for track
scrollbar-width: thin; // 只能选 auto, thin, none
}
只能改 size 和 color,而且 size 只能选 auto, thin, none。
效果

这 2 个属性,Chrome 和 Edge 也支持,但 Safari 不支持。
Styling IOS Scrollbar
IOS 只支持下面这句
.container {
&::-webkit-scrollbar {
display: none;
}
}
只能 display: none 其它都不支持。
总结
我个人的 Best Practice 是,只有 Chrome 和 Edge 可以 styling for 美观以外,Firefox 和 Safari 只能 styling for hide scrollbar。
HTML & CSS – Styling Scrollbar的更多相关文章
- 用CSS调整scrollbar(滚动条)的配色
可以通过调整CSS的方式,来给滚动条换色. 代码如下: .uicss-cn{ height:580px;overflow-y: scroll; scrollbar-face-color:#EAEAEA ...
- CSS:scrollbar的属性及样式分类
overflow 内容溢出时的设置(设定被设定对象是否显示滚动条) overflow-x 水平方向内容溢出时的设置 overflow-y 垂直方向 ...
- 【转】Styling And Animating SVGs With CSS
原文转自:http://www.smashingmagazine.com/2014/11/03/styling-and-animating-svgs-with-css/?utm_source=CSS- ...
- 自定义文件上传的按钮的样式css+js
核心就是一段css遮住了原生的input框,然后用js将文件的值传入到另一个指定的input框中 原文链接 http://geniuscarrier.com/how-to-style-a-html-f ...
- HTML&CSS学习笔记
<table> <thead> <tr> // table row <th></th> // table head & ...
- [codecademy]fonts in css
Great job! You learned how to style an important aspect of the user experience: fonts! Let's review ...
- 纯div+css制作的弹出菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- CSS 浏览器兼容
1. 兼容 IF <!--[if lte IE 7]> <style type="text/css"> .menu { position:relative ...
- [Angular] How to styling ng-content
Let's say you are builing a reuseable component. The style structure like this: div > input If yo ...
- (转) [it-ebooks]电子书列表
[it-ebooks]电子书列表 [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...
随机推荐
- 新一代Java高性能构建工具Maven-mvnd【实践可行版】
Maven-mvnd介绍 Maven 的优点是稳定可靠,在绝大多数的项目上工作良好,社区生态很完善,几乎所有的 Java 开发者都在用.Maven 的缺点是,对于大一点的项目来说,构建太慢了.有时候只 ...
- 【干货】顶级 Java 源码教程项目大汇总!
大家好,我是鱼皮,今天分享几个 GitHub 上顶级的 Java 源码教程项目. 区别于书籍.文档.视频等形式的教程,这些项目几乎都是由 精简的代码片段 和 Demo 组成的,能够轻松地在本地执行,非 ...
- [oeasy]python0088_字节_Byte_存储单位_KB_MB_GB_TB
编码进化 回忆上次内容 上次 回顾了 字符大战的结果 ibm 曾经的 EBCDIC 由于字符不连续的隐患 导致后续 出现 无数问题 无法补救 7-bit 的 ASA X3.4-1963 字母序号连续 ...
- [oeasy]python0013_ASCII码表_英文字符编码_键盘字符
ASCII 码表 回忆上次内容 ord(c)和chr(i) 这是俩函数 这俩函数是一对,相反相成的⚖️ ord 通过 字符 找到对应的 数字 chr 通 ...
- STL 算法 <algorithm>,
STL 算法部分主要由头文件 <algorithm>,<numeric>,<functional > 组成.要使用 STL 中的算法函数必须包含头文件 < a ...
- CCF 任务调度
样例的示意图 查了一圈,然后很烦,不想学习方法,好卡.查了一些题解,发现都是10分,30分先搁置的博客,最后翻到 堪称官方标称的思路 (CCF题目pat题目各大poj/hdoj好戏那个都没有标程,这里 ...
- 《HelloGitHub》第 100 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. github.com/521xueweihan/HelloG ...
- Java 监听POST请求
要监听POST请求,我们可以使用Java中的HttpServlet类.以下是一个使用Servlet API监听POST请求的完整示例.这个示例使用了Servlet 3.1规范,不需要在web.xml中 ...
- Aic 应用开发基础一(概念与场景)
Agi通用人工智能应用概念与场景 大家看到,自美国OpenAI主导的GPT发布以来,全球科技领域掀起了革命性的浪潮.比如最近看到的aigc 人工绘图,智能机器人等行业,很多新概念掘起, 随着人工智能技 ...
- Redis的事务transactions与管道pipeline
1.Redis的事务仅仅是保证事务里的操作会被连续独占的执行,Redis的命令执行是单线程, 2.Redis不保证事务的所有指令可以同时成功或者同时失败,只可以决定是否开始执行全部指令的能力,因此也没 ...
