如何自定义CSS滚动条的样式?

欢迎大家前往腾讯云 社区,获取更多腾讯海量技术实践干货哦~

本文由前端林子发表

本文会介绍CSS滚动条选择器,并在demo中展示如何在Webkit内核浏览器和IE浏览器中,自定义一个横向以及一个纵向的滚动条。

0.需求

有的时候我们不想使用浏览器默认的滚动条样式,因为不够定制化和美观。那么如何自定义滚动条的样式呢?下面一起来看看吧。

1 基础知识

1.1 Webkit内核的css滚动条选择器

::-webkit-scrollbar CSS伪类选择器影响了一个元素的滚动条的样式

属性:

::-webkit-scrollbar — 整个滚动条

::-webkit-scrollbar-track — 滚动条轨道

::-webkit-scrollbar-thumb — 滚动条上的滚动滑块

::-webkit-scrollbar-button — 滚动条上的按钮 (上下箭头)

::-webkit-scrollbar-track-piece — 滚动条没有滑块的轨道部分

::-webkit-scrollbar-corner — 边角,即当同时有垂直滚动条和水平滚动条时交汇的部分

::-webkit-resizer — 某些元素的corner部分的部分样式(例:textarea的可拖动按钮)

注意:

(1)浏览器的支持情况:

::-webkit-scrollbar 仅仅在支持Webkit的浏览器 (Chrome, Safari)可以使用。

(2)可设置竖直/水平方向的滚动条

可以设置水平方向的滚动条(:horizontal),不加默认是竖直方向(:vertical)。

(3)滚动条上的按钮(:decrement、:increment)

可以设置图片,这点会在下面demo中展示。

1.2 IE自定义滚动条样式

可自定义的样式比较少,只能控制滚动条各个部分显示的颜色,定制性较低。这里我只列举了部分样式,诸如scrollbar-3dlight-color、scrollbar-highlight-color等样式试了下没有效果,这里不再列出:

scrollbar-arrow-color — 滚动条三角箭头的颜色 scrollbar-face-color — 滚动条上滚动滑块颜色

scrollbar-track-color— 滚动条轨道、按钮背景的颜色 scrollbar-shadow-color— 滚动框上滑块边框的颜色

2.demo快速上手

2.1 Webkit内核的浏览器自定义滚动条样式 (chrome, safari)

如果觉得上述说明有些抽象,可以直接在浏览器中打开demo,结合demo中的注释来理解各个属性的意义。图中我对其中的一些属性做了标注,滚动条外层轨道属性并未在图中标注,可打开chrome浏览器控制台查看属性:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>scrollbar的demo--lynnshen</title><style type="text/css">* {margin: 0;padding: 0;}.scolltable {width: 500px;height: 300px;border: 1px solid black;/*实现水平垂直居中*/position: absolute;left: 50%;top: 50%;margin-left: -250px;margin-top: -150px;overflow: scroll;}.content {/*要设的比.scolltable更宽一些*/width: 600px;}/*整个滚动条*/::-webkit-scrollbar {width: 24px;background-color: transparent;}/*水平的整个滚动条*/::-webkit-scrollbar:horizontal {height: 24px;background-color: transparent;}/*滚动条轨道*/::-webkit-scrollbar-track {background-color: #f6f8fc;border-right: 1px solid #f1f5fa;border: 1px solid #f1f5fa;;}/*竖直的滑块*/::-webkit-scrollbar-thumb {background-color: rgba(220, 228, 243, 1);border-radius: 0px;border-top: 1px solid #edf2f9;border-bottom: 1px solid #edf2f9;border-left: 1px solid #f1f5fa;}/*水平的滑块*/::-webkit-scrollbar-thumb:horizontal {/* background-color: rgba(220, 228, 243, 1); */border-radius: 0px;border-top: 1px solid #edf2f9;/* border-right: 1px solid #f1f5fa;border-left: 1px solid #f1f5fa; */}/*滚动条上的按钮--竖直滚动条向上*/::-webkit-scrollbar-button:decrement {border-bottom: 1px solid #edf2f9;height: 26px;background: url("./images/scroll_up.png") 7px 9px no-repeat;border-right: 1px solid #f1f5fa;border-left: 1px solid #f1f5fa;}/*滚动条上的按钮--竖直滚动条向下*/::-webkit-scrollbar-button:increment {border-top: 1px solid #edf2f9;height: 26px;background: url("./images/scroll_down.png") 7px 10px no-repeat;border-right: 1px solid #f1f5fa;border-left: 1px solid #f1f5fa;border-bottom: 1px solid #f1f5fa;}/*滚动条上的按钮--水平滚动条向左*/::-webkit-scrollbar-button:horizontal:decrement {border-top: 1px solid #edf2f9;width: 26px;background: url("./images/scroll_left.png") 9px 7px no-repeat;border-top: 1px solid #f1f5fa;border-bottom: 1px solid #f1f5fa;border-right:1px solid #f1f5fa;}/*滚动条上的按钮--水平滚动条向右*/::-webkit-scrollbar-button:horizontal:increment {border-top: 1px solid #edf2f9;width: 25px;background: url("./images/scroll_right.png") 10px 7px no-repeat;border-left:1px solid #f1f5fa;}/*边角*/::-webkit-scrollbar-corner{border:1px solid #dce4f3;}</style></head><body><div class="scolltable"><div class="content">内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</div></div>
</body></html>

实现效果:

imgWebKit内核的浏览器

说明:

(1)滚动条两端的按钮使用的图片,四个角分别使用了四张图片;

(2).scolltable实现了水平垂直居中的效果,具体方法是:使用绝对对位,将元素的定点定位到body的中心。然后使用负margin(即元素宽高的一半)将其拉回到body的中心。

2.2 IE自定义滚动条样式

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>scrollbar for IE--lynnshen</title><style type="text/css">* {margin: 0;padding: 0;}.scolltable {width: 500px;height: 300px;border: 1px solid black;/*实现水平垂直居中*/position: absolute;left: 50%;top: 50%;margin-left: -250px;margin-top: -150px;overflow: scroll;scrollbar-face-color:greenyellow;scrollbar-arrow-color:goldenrod;scrollbar-shadow-color:red;scrollbar-track-color:pink;}.content {/*要设的比.scolltable更宽一些*/width: 600px;}</style></head><body><div class="scolltable"><div class="content">内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</div></div>
</body></html>

实现效果:

imgIE

3.小结

本文主要是想记录下在Webkit内核的浏览器和IE中,如何自定义滚动条的样式,并分别提供了两个demo。如有问题,欢迎指正。

此文已由作者授权腾讯云 社区发布,更多原文请点击

搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ基础知识

RabbitMQ基础知识 一、背景RabbitMQ是一个由erlang开发的AMQP&#xff08;Advanced Message Queue &#xff09;的开源实现。AMQP 的出现其实也是应了广大人民群众的需求&#xff0c;虽然在同步消息通讯的世界里有很多公开标准&#xff08;如 COBAR的 IIOP &#xff0c;或者是 …

iview 级联选择组件_使用 element-ui 级联插件遇到的坑

需求描述【省市区三级联动】组件&#xff1a;Cascader 级联选择器后端需要所选中的地区的名字&#xff0c;如&#xff1a;[北京市, 北京市, 东城区]获取后端省市区具体列表的接口返回数据&#xff1a;// 省 - 参数1 [{value: 1,label: 北京市},... ] // 市 - 参数2 [{value: 1,…

深入理解CPU和异构计算芯片GPU/FPGA/ASIC (上篇)

王玉伟&#xff0c;腾讯TEG架构平台部平台开发中心基础研发组资深工程师&#xff0c;专注于为数据中心提供高效的异构加速云解决方案。目前&#xff0c;FPGA已在腾讯海量图片处理以及检测领域已规模上线。 随着互联网用户的快速增长&#xff0c;数据体量的急剧膨胀&#xff0c;…

jenkins-基础配置

一&#xff0c;配置远程连接服务器 系统管理 --> 系统设置 SSH remote hosts 二&#xff0c;设置docke的URL&#xff08;设置jenkins构建镜像时候所连接的docker url &#xff0c;参考 docker开启远程访问https://www.cnblogs.com/galsnag/articles/10069709.html&#xf…

JSF:直接从页面将参数传递给JSF操作方法,这是JavaEE 6+的一个不错的功能

Java企业版JavaEE 6中提供的JSF 2的一项不错的功能是&#xff0c;您可以将参数传递给任何操作组件&#xff08;例如commandButton或commandLink组件&#xff09;的操作方法。 基于此&#xff0c;您可以最大程度地减少托管bean中的方法数量。 另外&#xff0c;为了最小化在bea…

海洋主题绘画_深圳举办风帆时代海洋绘画作品展,展出作品600余件

12月12日&#xff0c;第七届《风帆时代海洋绘画作品展》在位于蛇口邮轮中心3楼的深圳大学海洋文化科普教育基地举行开幕仪式。该项目得到深圳市宣传文化事业专项基金支持&#xff0c;由深圳大学海洋艺术研究中心主办&#xff0c;深圳市海洋文化艺术研究会承办。作为开幕式重要环…

不要被约束的意思_不要再奢望你会变得自律了丨“他律”比“自律”更重要

高三寒假和同学打赌一个假期做完400套卷子。否则给他1000元。。。然后每天早上六点晚上12点&#xff0c;春节也没过&#xff0c;最后做完了卷子&#xff0c;我也完成了自己的梦想&#xff01;&#xff01;&#xff01;然而上面这个大神不是我&#xff0c;是我引用的一颗真实栗子…

一篇文章为你深度解析HTTPS 协议

一、前言 微信小程序如期发布&#xff0c;开发者在接入微信小程序过程中&#xff0c;会遇到以下问题&#xff1a; 小程序要求必须通过 HTTPS 完成与服务端通信&#xff0c;若开发者选择自行搭建 HTTPS 服务&#xff0c;那需要自行 SSL 证书申请、部署&#xff0c;完成 https …

Shadow DOM及自定义标签

参考链接&#xff1a;点我 一、什么是Shadow DOM Shadow DOM&#xff0c;直接翻译的话就是 影子 DOM&#xff0c;可以理解为潜藏在 DOM 结构中并且我们无法直接控制操纵的 DOM 结构。类似于下面这种结构 Shadow DOM 可以在浏览器中生成一个独立于DOM树之外的 DOM结构 二、Shado…

二进制逆向工程师_利用Ghidra逆向分析Go二进制程序(下篇)

(接上文)动态分配字符串结构在第一种情况下&#xff0c;字符串结构是在运行时创建的&#xff0c;为此&#xff0c;需要使用一系列汇编指令在字符串操作之前设置相应的结构。由于指令集的不同&#xff0c;不同的架构之间的结构也是不同的。让我们通过几个案例&#xff0c;来展示…

工艺路线和工序有差别吗_你知道吗?市政道路排水工程的主要工序施工工艺是什么...

易筑教育给排水课程火热招生中&#xff01;张老师微信号&#xff1a;yizhujiaoyu999市政道排工程施工遵循的基本顺序是&#xff1a;先地下&#xff0c;后地上&#xff1b;先深后浅。按照这个顺序&#xff0c;正常的施工顺序为基础处理、排水管道(涵)施工(雨、污水)、道路基层(常…

如何:从Spring 4.0快速入门以构建简单的REST-Like API(演练)

如何&#xff1a;从Spring 4.0快速入门以构建简单的REST-Like API&#xff08;演练&#xff09; 关于使用Spring MVC创建Web API的另一篇教程。 不太复杂。 只是一个演练。 生成的应用程序将提供简单的API&#xff0c;将Mongo作为其持久性&#xff0c;并将通过Spring Security进…

01-Web客户端与服务器详解

1、CS与BS 软件使用方式上两种划分  C/S架构 Client/ServerPC客户端、服务器架构 特点&#xff1a;   在服务器当中就主要是一个数据库&#xff0c;把所有的业务逻辑以及界面都交给客户端完成 优点&#xff1a;   较为安全&#xff0c;用户界面丰富&#xff0c;用户体验好…

axi ps读写pl_PL读写DDR:Datamover能干什么

最近发现工程项目中一直在用AXI-DMA。这玩意儿搬数据倒是没问题&#xff0c;就是用axi-lite配置起来非常反人类。。。简单的办法其实是用datamover ip核。这个ip核能干嘛呢。准备写个文章解析一下。由于好多feature没用过&#xff0c;所以仅仅看文档可能理解有误&#xff0c;欢…

在10分钟内在新Mac中设置Java开发环境(更新)

这只是一个小的更新文章&#xff0c;它引用了2个较旧的条目&#xff08; a &#xff0c; b &#xff09;&#xff0c;我将它们合并为一个步骤&#xff0c;就像一步操作&#xff0c;并确保所有功能都在最新的MacOSX 10.9 Mavericks下工作 。 我主要针对的是初次尝试设置其环境的…

linux path 与 classpath 区别

linux path 与 classpath 区别 一、OS依据path中的路径信息来寻找可执行指令&#xff1b; 例如&#xff1a; cat /etc/profile 我们就可以在任意目录执行hadoop / hdfs / yarn / java 等相关命令了 export HADOOP_HOME/opt/hadoop/hadoop-2.6.0 export JAVA_HOME/home/jdk1.8.0…

开启9008端口进入深刷模式

除了前文所述&#xff0c;使用深刷线&#xff0c;还可以用命令开启9008端口&#xff0c;进入深刷模式。 adb reboot edl fastboot oem edl 这个在小米4c上测试ok 下面这个可能用于其他手机。 fastboot reboot emergency http://www.znsjw.net/nd.jsp?id19 小米绕BL锁9008工程…

hashmap为什么用红黑树_要看HashMap源码,先来看看它的设计思想

HashMap 是日常开发中&#xff0c;用的最多的集合类之一&#xff0c;也是面试中经常被问到的 Java 类之一。同时&#xff0c;HashMap 在实现方式上面又有十分典型的范例。不管是从哪一方面来看&#xff0c;学习 HashMap 都可以说是有利无害的。分析 HashMap 的源码的文章在网上…

实现CA和证书申请

文字说明 1 在CA上执行&#xff0c;建立CA cd /etc/pki/CA touch index.txt echo 0F > serial (umask 077;openssl genrsa -out private/cakey.pem 2048) openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650 填写多项内容&#xff1a;国家&#xff…

端口如何支持非localhost访问_新特性解读 | MySQL 8.0.19 支持 DNS SRV

转载自公众号&#xff1a;玩转MySQL作者&#xff1a;洪斌MySQL Router 是 InnoDB Cluster 架构的访问入口&#xff0c;在架构部署上&#xff0c;官方给出的建议是 router 与应用端绑定部署&#xff0c;避免 router 单点问题。之前还有客户咨询&#xff0c;能否 router 不与应用…