前言

Scrollbar 能 styling 的东西不多 (尤其是 IOS 基本上只能 display:none 而已),但有时候我们不得不 styling。

这里记入我自己在项目中修改过的 scrollbar 经历。

参考

can i use webkit-scrollbar

MDN – ::-webkit-scrollbar

MDN – scrollbar-width

MDN – scrollbar-color

例子

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的更多相关文章

  1. 用CSS调整scrollbar(滚动条)的配色

    可以通过调整CSS的方式,来给滚动条换色. 代码如下: .uicss-cn{ height:580px;overflow-y: scroll; scrollbar-face-color:#EAEAEA ...

  2. CSS:scrollbar的属性及样式分类

    overflow            内容溢出时的设置(设定被设定对象是否显示滚动条) overflow-x         水平方向内容溢出时的设置 overflow-y         垂直方向 ...

  3. 【转】Styling And Animating SVGs With CSS

    原文转自:http://www.smashingmagazine.com/2014/11/03/styling-and-animating-svgs-with-css/?utm_source=CSS- ...

  4. 自定义文件上传的按钮的样式css+js

    核心就是一段css遮住了原生的input框,然后用js将文件的值传入到另一个指定的input框中 原文链接 http://geniuscarrier.com/how-to-style-a-html-f ...

  5. HTML&CSS学习笔记

    <table> <thead> <tr>            // table row <th></th> // table head & ...

  6. [codecademy]fonts in css

    Great job! You learned how to style an important aspect of the user experience: fonts! Let's review ...

  7. 纯div+css制作的弹出菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. CSS 浏览器兼容

    1.  兼容 IF <!--[if lte IE 7]> <style type="text/css"> .menu { position:relative ...

  9. [Angular] How to styling ng-content

    Let's say you are builing a reuseable component. The style structure like this: div > input If yo ...

  10. (转) [it-ebooks]电子书列表

    [it-ebooks]电子书列表   [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...

随机推荐

  1. linux系统&自动清理日志实现脚本

    文章来源:https://blog.csdn.net/lakelise/article/details/93711932 编写清理脚本,添加到定时任务中:创建可执行文件cd /hometouch cl ...

  2. Django 自定义创建密码重置确认页面

    要实现上述功能,你需要修改模板文件以添加"忘记密码"链接,并创建新的视图函数来处理密码丢失修改页面.验证和密码修改.下面是你可以进行的步骤: 1. 修改模板文件 在登录页面的表单下 ...

  3. Arch Linux install i3-wm

    Arch Linux install i3-wm 简介 i3-wm 是一种动态的平铺式窗口管理器,它的设计目标是提供一个快速.简洁.可定制的桌面环境,适合开发者和高级用户使用.它有以下几个特点: 它使 ...

  4. 配置docker镜像时碰到的问题

    在配置docker镜像时,首先我是这样操作的 , echo "registry-mirrors": ["https://ry1ei7ga.mirror.aliyuncs. ...

  5. 滑块解锁-scratch编程作品

    程序说明: <滑块解锁>是一款基于Scratch平台制作的益智类小游戏.游戏中存在多个黄色滑块阻挡红色滑块通往出口的路径.玩家需要通过逻辑思考和精确操作,滑动黄色滑块以开辟道路,使红色滑块 ...

  6. 基于禅道数据库对bug进行不同维度统计

    工作中经常需要在周报.月报.年报对禅道bug数据进行不同维度统计导出,以下是我常用的统计sql 1.统计2022年每个月bug数(deleted='0'是查询未删除的bug) select DATE_ ...

  7. 1、Springboot2简介

    在学习 SpringBoot 之前,建议先具备 SpringMVC(控制层).Spring(业务层)和 Mybatis(持久层)的相关知识 1.1.概述 1.1.1.Spring的缺点 Spring ...

  8. 【Java】JDBC Part4 Transaction 事务

    JDBC Part4 Transaction 事务 什么是事务? 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消. 也就是原子性,一个事务中的一系列的 ...

  9. 什么样的AI计算框架才是受用户喜欢的?

    说明,本文是个人的一些胡想. 背景: AI计算框架现在从国外的百家争鸣过度到了国内百家争鸣的局面了.在7.8年前的时候,国外的AI计算框架简直是数不胜数,从14.15年前Nvidia公司的显卡需要手动 ...

  10. 在使用pytorch官方给出的torchvision中的预训练模型参数时为保证收敛性要求使用原始的数据预处理方式

    本文主要内容如题: 在使用pytorch官方给出的torchvision中的预训练模型参数时为保证收敛性要求使用原始的数据预处理方式 具体的pytorch官方讨论: https://github.co ...