2023年6月20日发(作者:)

CSS3⾃定义滚动条样式-webkit-scrollbar有没有觉得浏览器⾃带的原始滚动条很不美观,同时也有看到很多⽹站的⾃定义滚动条显得⾼端,就连chrome32.0开发板都抛弃了原始的滚动条,美观多了。那webkit浏览器是如何⾃定义滚动条的呢?前⾔webkit⽀持拥有overflow属性的区域,列表框,下拉菜单,textarea的滚动条⾃定义样式,所以⽤处还是挺⼤的。当然,兼容所有浏览器的滚动条样式⽬前是不存在的。演⽰来看看这2个滚动条demo:、滚动条组成::-webkit-scrollbar 滚动条整体部分::-webkit-scrollbar-thumb 滚动条⾥⾯的⼩⽅块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是⽔平滚动条)::-webkit-scrollbar-track 滚动条的轨道(⾥⾯装有Thumb)::-webkit-scrollbar-button 滚动条的轨道的两端按钮,允许通过点击微调⼩⽅块的位置。::-webkit-scrollbar-track-piece 内层轨道,滚动条中间部分(除去)::-webkit-scrollbar-corner 边⾓,即两个滚动条的交汇处::-webkit-resizer 两个滚动条的交汇处上⽤于通过拖动调整元素⼤⼩的⼩控件简洁版这⾥就不贴出详细代码了,demo⾥⾯可以通过查看源码寻找具体样式的设置。来看看demo2中第⼆个滚动条的样式/*定义滚动条⾼宽及背景 ⾼宽分别对应横竖滚动条的尺⼨*/::-webkit-scrollbar{ width: 16px; height: 16px; background-color: #F5F5F5;}/*定义滚动条轨道 内阴影+圆⾓*/::-webkit-scrollbar-track{ -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); border-radius: 10px; background-color: #F5F5F5;}/*定义滑块 内阴影+圆⾓*/::-webkit-scrollbar-thumb{ border-radius: 10px; -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); background-color: #555;}详细设置定义滚动条就是利⽤伪元素与伪类,那什么是伪元素和伪类呢?伪类⼤家应该很熟悉:link,:focus,:hover,此外CSS3中⼜增加了许多伪类选择器,如:nth-child,:last-child,:nth-last-of-type()等。CSS中的伪元素⼤家以前看过::first-line,:first-letter,:before,:after。那么在CSS3中,伪元素进⾏了调整,在以前的基础上增加了⼀个“:”也就是现在变成了“::first-letter,::first-line,::before,::after”,另外CSS3还增加了⼀个“::selection”。两个“::”和⼀个“:”在css3中主要⽤来区分伪类和伪元素。webkit的伪类和伪元素的实现很强,可以把滚动条当成⼀个页⾯元素来定义,再结合⼀些⾼级的CSS3属性,⽐如渐变、圆⾓、RGBa等等。然后如果有些地⽅要⽤图⽚,可以把图⽚也可以转换成Base64,不然每次都得加载那个多个图⽚,增加请求数。任何对象都可以设置:边框、阴影、背景图⽚等等,创建的滚动条任然会按照操作系统本⾝的设置来完成其交互的⾏为。下⾯的伪类可以应⽤到上⾯的伪元素中。有点⼩复杂,具体怎么写可以看第⼀个demo,那⾥也有注释。:horizontal//horizontal伪类适⽤于任何⽔平⽅向上的滚动条:vertical//vertical伪类适⽤于任何垂直⽅向的滚动条:decrement//decrement伪类适⽤于按钮和轨道碎⽚。表⽰递减的按钮或轨道碎⽚,例如可以使区域向上或者向右移动的区域和按钮:increment//increment伪类适⽤于按钮和轨道碎⽚。表⽰递增的按钮或轨道碎⽚,例如可以使区域向下或者向左移动的区域和按钮:start//start伪类适⽤于按钮和轨道碎⽚。表⽰对象(按钮 轨道碎⽚)是否放在滑块的前⾯:end//end伪类适⽤于按钮和轨道碎⽚。表⽰对象(按钮 轨道碎⽚)是否放在滑块的后⾯:double-button//double-button伪类适⽤于按钮和轨道碎⽚。判断轨道结束的位置是否是⼀对按钮。也就是轨道碎⽚紧挨着⼀对在⼀起的按钮。:single-button//single-button伪类适⽤于按钮和轨道碎⽚。判断轨道结束的位置是否是⼀个按钮。也就是轨道碎⽚紧挨着⼀个单独的按钮。:no-buttonno-button伪类表⽰轨道结束的位置没有按钮。:corner-present//corner-present伪类表⽰滚动条的⾓落是否存在。:window-inactive//适⽤于所有滚动条,表⽰包含滚动条的区域,焦点不在该窗⼝的时候。::-webkit-scrollbar-track-piece:start {/*滚动条上半边或左半边*/}::-webkit-scrollbar-thumb:window-inactive {/*当焦点不在当前区域滑块的状态*/}::-webkit-scrollbar-button:horizontal:decrement:hover {/*当⿏标在⽔平滚动条下⾯的按钮上的状态*/}原⽂地址:/

2023年6月20日发(作者:)

CSS3⾃定义滚动条样式-webkit-scrollbar有没有觉得浏览器⾃带的原始滚动条很不美观,同时也有看到很多⽹站的⾃定义滚动条显得⾼端,就连chrome32.0开发板都抛弃了原始的滚动条,美观多了。那webkit浏览器是如何⾃定义滚动条的呢?前⾔webkit⽀持拥有overflow属性的区域,列表框,下拉菜单,textarea的滚动条⾃定义样式,所以⽤处还是挺⼤的。当然,兼容所有浏览器的滚动条样式⽬前是不存在的。演⽰来看看这2个滚动条demo:、滚动条组成::-webkit-scrollbar 滚动条整体部分::-webkit-scrollbar-thumb 滚动条⾥⾯的⼩⽅块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是⽔平滚动条)::-webkit-scrollbar-track 滚动条的轨道(⾥⾯装有Thumb)::-webkit-scrollbar-button 滚动条的轨道的两端按钮,允许通过点击微调⼩⽅块的位置。::-webkit-scrollbar-track-piece 内层轨道,滚动条中间部分(除去)::-webkit-scrollbar-corner 边⾓,即两个滚动条的交汇处::-webkit-resizer 两个滚动条的交汇处上⽤于通过拖动调整元素⼤⼩的⼩控件简洁版这⾥就不贴出详细代码了,demo⾥⾯可以通过查看源码寻找具体样式的设置。来看看demo2中第⼆个滚动条的样式/*定义滚动条⾼宽及背景 ⾼宽分别对应横竖滚动条的尺⼨*/::-webkit-scrollbar{ width: 16px; height: 16px; background-color: #F5F5F5;}/*定义滚动条轨道 内阴影+圆⾓*/::-webkit-scrollbar-track{ -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); border-radius: 10px; background-color: #F5F5F5;}/*定义滑块 内阴影+圆⾓*/::-webkit-scrollbar-thumb{ border-radius: 10px; -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); background-color: #555;}详细设置定义滚动条就是利⽤伪元素与伪类,那什么是伪元素和伪类呢?伪类⼤家应该很熟悉:link,:focus,:hover,此外CSS3中⼜增加了许多伪类选择器,如:nth-child,:last-child,:nth-last-of-type()等。CSS中的伪元素⼤家以前看过::first-line,:first-letter,:before,:after。那么在CSS3中,伪元素进⾏了调整,在以前的基础上增加了⼀个“:”也就是现在变成了“::first-letter,::first-line,::before,::after”,另外CSS3还增加了⼀个“::selection”。两个“::”和⼀个“:”在css3中主要⽤来区分伪类和伪元素。webkit的伪类和伪元素的实现很强,可以把滚动条当成⼀个页⾯元素来定义,再结合⼀些⾼级的CSS3属性,⽐如渐变、圆⾓、RGBa等等。然后如果有些地⽅要⽤图⽚,可以把图⽚也可以转换成Base64,不然每次都得加载那个多个图⽚,增加请求数。任何对象都可以设置:边框、阴影、背景图⽚等等,创建的滚动条任然会按照操作系统本⾝的设置来完成其交互的⾏为。下⾯的伪类可以应⽤到上⾯的伪元素中。有点⼩复杂,具体怎么写可以看第⼀个demo,那⾥也有注释。:horizontal//horizontal伪类适⽤于任何⽔平⽅向上的滚动条:vertical//vertical伪类适⽤于任何垂直⽅向的滚动条:decrement//decrement伪类适⽤于按钮和轨道碎⽚。表⽰递减的按钮或轨道碎⽚,例如可以使区域向上或者向右移动的区域和按钮:increment//increment伪类适⽤于按钮和轨道碎⽚。表⽰递增的按钮或轨道碎⽚,例如可以使区域向下或者向左移动的区域和按钮:start//start伪类适⽤于按钮和轨道碎⽚。表⽰对象(按钮 轨道碎⽚)是否放在滑块的前⾯:end//end伪类适⽤于按钮和轨道碎⽚。表⽰对象(按钮 轨道碎⽚)是否放在滑块的后⾯:double-button//double-button伪类适⽤于按钮和轨道碎⽚。判断轨道结束的位置是否是⼀对按钮。也就是轨道碎⽚紧挨着⼀对在⼀起的按钮。:single-button//single-button伪类适⽤于按钮和轨道碎⽚。判断轨道结束的位置是否是⼀个按钮。也就是轨道碎⽚紧挨着⼀个单独的按钮。:no-buttonno-button伪类表⽰轨道结束的位置没有按钮。:corner-present//corner-present伪类表⽰滚动条的⾓落是否存在。:window-inactive//适⽤于所有滚动条,表⽰包含滚动条的区域,焦点不在该窗⼝的时候。::-webkit-scrollbar-track-piece:start {/*滚动条上半边或左半边*/}::-webkit-scrollbar-thumb:window-inactive {/*当焦点不在当前区域滑块的状态*/}::-webkit-scrollbar-button:horizontal:decrement:hover {/*当⿏标在⽔平滚动条下⾯的按钮上的状态*/}原⽂地址:/