`

用CSS美化你的滚动条

 
阅读更多

本文将会告诉你如何用CSS修改/美化浏览器页面上出现的滚动条。改变它们的颜色,调整它们的外形,适配你对页面UI设计。我们首先将会看看谷歌(Webkit)浏览器提供了哪些CSS属性,最后,还将介绍如何用jQuery支持其它类型的浏览器。

 

各种浏览器对CSS滚动条的支持情况

这 里说的Webkit浏览器包括谷歌浏览器,苹果公司的Safari浏览器,以及最新的Opera浏览器。这些浏览器加起来占有超过半数的桌面浏览 器市场份额。对于移动端浏览器,基本上是谷歌浏览器和Safari浏览器的天下。唯一的遗憾是火狐浏览器,至今没有对CSS滚动条属性做任何的改进。至于 IE浏览器,我们期待吧。

鉴于目前浏览器市场的格局,我们很有信心相信CSS滚动条美化功能会有很好的很光明的前景。

 

滚动条会出现在哪些地方

在真正开始对CSS滚动条的讲解之前,先让我们做一个简单的演示页面;一个含有滚动条的页面。滚动条通常会出现在这些地方:

  • 浏览器边框,当页面内容超过浏览器视窗大小
  • textarea,内容过多时
  • iframe
  • div或任何block元素,当它们的被设定成overflow属性时。

对于我们的演示页面,使用的HTML代码是下面这些:

<div class="container">

    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur rhoncus tortor eget orci fringilla non semper magna aliquet. Aliquam convallis elit sem. Proin fringilla fermentum pretium. Phasellus id nisl eu eros convallis eleifend. In hac habitasse platea dictumst. In at felis massa. Maecenas vitae quam non elit porta pellentesque ac in erat. Nullam a ante felis, ullamcorper suscipit felis. Maecenas sit amet nisl mattis ipsum ullamcorper aliquam vitae sed sapien. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>

    <p>Sed sed tellus dolor, non lobortis felis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In eget nisl viverra risus feugiat vulputate tempus et leo. Nam metus nibh, tristique non sodales non, interdum et neque. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed imperdiet aliquet vestibulum. Curabitur viverra tortor augue, a aliquet tellus. Vivamus eu felis vel lorem tincidunt imperdiet. Fusce iaculis luctus convallis. Proin adipiscing malesuada enim, et feugiat tortor sagittis eu. Cras convallis felis eu leo tempus et fermentum urna accumsan. In quis metus at metus ultricies fringilla. Maecenas sed lacus aliquam nibh semper dignissim et quis est.</p>
    
    <p>Praesent sodales, sapien sit amet congue egestas, sem ligula ornare massa, vitae suscipit felis ligula quis velit. Phasellus lectus massa, sodales ac vulputate ac, pharetra quis lacus. Morbi tempus pretium nisi sed pretium. Pellentesque dictum volutpat vulputate. Fusce dapibus sagittis felis, ut consequat nisi posuere id. Cras elit orci, vehicula in sagittis a, faucibus vitae dui. Nunc non lorem in metus adipiscing adipiscing non a sapien. Sed dictum ultrices nibh in tristique. Nulla dapibus laoreet tincidunt. Sed accumsan erat quis mi luctus porta.</p>

    <p>Sed mollis justo enim, ut pharetra nunc. Fusce vehicula viverra magna, et fringilla lectus porta quis. Donec eu fermentum mi. Donec congue pellentesque iaculis. Phasellus est leo, cursus eget consectetur in, tristique sit amet tortor. Cras eleifend felis sit amet eros vehicula aliquet. Pellentesque fringilla metus in libero luctus eu condimentum nulla pretium. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam consequat sodales lorem, nec dignissim turpis pharetra et. Nullam commodo hendrerit elementum. Donec porta faucibus ligula non blandit. In ultrices vehicula pretium.</p>

    <p>Sed ac sagittis sapien. Curabitur varius pellentesque nunc eget molestie. Vivamus in massa arcu, ut auctor tellus. Aliquam convallis lobortis magna, ut posuere odio euismod ac. Vestibulum in enim vitae metus vulputate interdum. Mauris a risus auctor nunc fermentum dapibus. Proin iaculis, nunc ut viverra varius, augue augue porta libero, id viverra nisl elit in mauris. Aenean quis risus ante. Donec bibendum erat a sem vestibulum eu aliquet lectus tincidunt. Vivamus imperdiet congue leo, non ultricies urna sodales sed. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla vitae rhoncus dui. Nunc in nisi in ante imperdiet tincidunt sagittis eu ipsum. Aenean orci justo, faucibus placerat tincidunt vitae, vehicula at libero.</p>

</div>

 

其实只有一个div元素,但因为有太多的内容而出现滚动条。我们给它最初的CSS样式是固定高度和宽度,使它出现横向和纵向滚动条,CSS代码是这样的:

	.container {
		  width: 400px;
		  height: 300px;
		  background-color: #DCDCDC;
		  overflow: scroll; /* 让它显示滚动条 */
	}

 

 

它的原始显示效果大概是这个样子:firefox1

 

用CSS美化滚动条

很多年前谷歌浏览器就已经开始支持对滚动条的CSS美化。这些Webkit浏览器专属的CSS属性需要使用-webkit-浏览器引擎前缀,我们在这里将只会使用一些基本的CSS滚动条属性,在代码里会增加一些必要的解释说明。

	::-webkit-scrollbar {
		  width: 15px;
	} /* 这是针对缺省样式 (必须的) */

 

 

当CSS中出现伪元素样式时,Webkit引擎将会关闭它的缺省滚动条样式输出,只使用CSS里提供的样式信息。 – Surfin’ Safari

这里是其它一些伪元素样式:

       ::-webkit-scrollbar-track {
		  background-color: #b46868;
	} /* 滚动条的滑轨背景颜色 */

	::-webkit-scrollbar-thumb {
		  background-color: rgba(0, 0, 0, 0.2); 
	} /* 滑块颜色 */

	::-webkit-scrollbar-button {
		  background-color: #7c2929;
	} /* 滑轨两头的监听按钮颜色 */

	::-webkit-scrollbar-corner {
		  background-color: black;
	} /* 横向滚动条和纵向滚动条相交处尖角的颜色 */

 

 

如果你对这里为什么会使用双引号标注伪元素,请看《理解:Before和:After伪元素》里的讲解。

加上了这些CSS属性,你将会看到下面的效果(再次提醒:你需要使用Webkit浏览器,比如谷歌浏览器才能看到效果)。chrome1

 

IE浏览器有自己的滚动条CSS属性!

你可能会感到意外,IE浏览器是最早的一个支持滚动条外观CSS自定义的浏览器。早在IE5.5版时就支持,但仅支持颜色的改变。

这些属性今天仍然是延用的;看看这IE9里的演示效果:

  body {
      scrollbar-face-color: #b46868;
  }

 

 

将会是下面这个样子:ie1

 

兼容支持非Webkit浏览器

谷歌浏览器的用户是最幸福的。但我们也不能放弃火狐浏览器和IE浏览器用户。对于这些浏览器,有一个非常有效的补救方案,就是使用javascript插件。网上有不少人推荐一个由Kelvin Luck开发的一个jQuery插件:jScrollPane。但也有人评论这个插件是“PITA”,我翻了一下字典,发现“PITA”中文意思是“让人蛋疼”。经过试用,感到它的确是让人蛋疼。不推荐使用它。我发现了另外一个插件malihu-custom-scrollbar-plugin,感觉相当不错,它的用法是:

<link rel="stylesheet" href="js/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.min.css">
<!-- latest jQuery direct from google's CDN -->
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="js/jquery-migrate-1.2.1.min.js"></script>

<script src="js/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js"></script>

<script>
if (!$.browser.webkit) {

					$.mCustomScrollbar.defaults.scrollButtons.enable=true; //enable scrolling buttons by default
					$.mCustomScrollbar.defaults.axis="yx"; //enable 2 axis scrollbars by default
					
					$(".container").mCustomScrollbar({theme:"dark"});
}
</script>

 

 

火狐浏览器中的效果截图:firefox_jscrollpane

 

总结

已经有很多网站都使用了这些滚动条的CSS美化技巧,特别是谷歌的一些应用和网站上,比如Gmail和Google+。相信很快火狐浏览器和IE浏览器也会提供自己的解决方案。如果你在使用滚动条的CSS美化上有非常漂亮的例子,请留在评论里供大家欣赏,谢谢。

 

原文:http://www.webhek.com/scrollbar

 

justcode.ikeepstudying.com

分享到:
评论

相关推荐

    css美化滚动条

    总的来说,CSS美化滚动条是一个提升网页设计细节和用户体验的重要步骤。通过合理的样式设置和适时的JavaScript辅助,我们可以创建出既美观又实用的自定义滚动条,使用户在浏览网页时享受更加流畅的体验。

    jQuery美化滚动条

    引入插件后,可以通过jQuery选择器找到需要美化滚动条的元素,并调用`.niceScroll()`方法进行初始化。同时,可以传递一个包含配置选项的对象,以定制滚动条的样式和行为。例如: ```javascript $("#your-element")....

    js滚动条美化

    本主题将探讨如何利用JavaScript(JS)和CSS来美化滚动条,使其与网站的整体设计更加协调,提升用户体验。 首先,我们需要了解CSS在滚动条美化中的作用。CSS3引入了`::-webkit-scrollbar`和`::-webkit-scrollbar-...

    css3 滚动条美化

    对于这些浏览器,通常需要使用JavaScript库或者CSS polyfill来实现跨浏览器的滚动条美化。 在实际应用中,开发者应确保在不影响滚动条基本功能的前提下进行美化,并考虑到不同设备和浏览器的兼容性。同时,滚动条的...

    自定义美化滚动条插件

    标题中的“自定义美化滚动条插件”是指一种专门用于改变和优化网页中默认滚动条外观的工具。在网页设计中,滚动条是必不可少的元素,但浏览器默认的滚动条样式通常较为简单,可能不符合设计师对网站整体美学的追求。...

    原生js scrollbars滚动条插件设置浏览器竖直滚动条美化.rar

    2. **浏览器兼容性处理**:由于不是所有浏览器都支持CSS3的滚动条样式,因此需要使用JavaScript来实现跨浏览器的滚动条美化。这可能涉及到监听滚动事件、创建自定义滚动条元素并动态调整它们的大小和位置。 3. **...

    javascript 美化滚动条 可自定义图片

    为了提升用户体验和网站美观度,开发者常常利用JavaScript来美化滚动条,使其更加符合网站的视觉设计。本主题将深入探讨如何使用JavaScript实现滚动条的自定义和美化。 首先,我们要了解浏览器对滚动条的支持情况。...

    Qt悬浮滚动条-滚动条样式

    为了深度美化滚动条,我们需要使用Qt的样式表(QSS,Qt StyleSheet)。QSS类似于网页的CSS,可以用来改变Qt控件的外观,包括颜色、字体、边框、背景等。例如,你可以设置滚动条的滑块颜色、轨道颜色、箭头图标等,使...

    美化滚动条

    "美化滚动条"这个主题,就是针对这一需求,利用 jQuery UI 插件 mCustomScrollbar 来实现网页滚动条的自定义和美化。 mCustomScrollbar 是一款强大的 jQuery 插件,它提供了丰富的功能和高度的定制性,允许开发者...

    原生js scrollbars滚动条插件设置浏览器竖直滚动条美化

    本文将深入探讨如何使用原生JavaScript来创建一个滚动条插件,以实现浏览器竖直滚动条的美化。 首先,我们需要了解浏览器默认的滚动条样式通常是单调且功能单一的。为了实现自定义的滚动条,我们需要使用CSS3的伪...

    滚动条美化

    总的来说,滚动条美化是一个细致入微的设计环节,它能够提升用户在浏览网页或使用软件时的视觉享受和操作体验。通过合理运用CSS和JavaScript技术,我们可以创造出既实用又美观的滚动条,为用户带来更优质的交互体验...

    jquery滚动条美化插件

    总的来说,jQuery.nicescroll插件是一个强大且易用的解决方案,它为网页设计师和开发者提供了美化滚动条的便利,让滚动条成为网站设计中的一道亮丽风景线。通过灵活的配置和丰富的API,你可以创造出符合自己项目需求...

    前台滚动条美化

    通过美化滚动条,我们可以将其转变为界面的亮点,使整体设计更加和谐统一,同时也提高了用户操作的舒适度。 要实现滚动条美化,我们可以利用CSS3的新特性,如伪元素`:hover`, `:active`, 和`:focus`来改变滚动条的...

    滚动条DIY美化

    4. **性能优化**:虽然美化滚动条可以提升视觉效果,但过度复杂的样式可能会影响页面性能。因此,需要注意优化CSS和JavaScript代码,避免不必要的计算和渲染开销。 5. **无障碍性(Accessibility)**:美化滚动条时...

    jquery滚动条使用图片自定义美化(可使用图片替换滚动条)

    本教程将围绕“jQuery滚动条使用图片自定义美化”这一主题,教你如何通过图片替换滚动条,以实现更美观、更符合网站设计的滚动条。 首先,我们需要了解jQuery库,这是一个强大的JavaScript库,提供了丰富的功能,...

    jquery.nicescroll仿IOS滚动条美化插件.zip

    jQuery.nicescroll插件就是一款专门用于美化滚动条的工具,它能够帮助开发者创建出类似于iOS设备上的平滑、简洁的滚动效果,提升网站的整体视觉体验。 一、jQuery.nicescroll简介 jQuery.nicescroll是一款基于...

    jQuery插件:Tiny Scrollbar滚动条插件(滚动条美化、默认滚动条)

    Tiny Scrollbar的核心在于CSS,你可以通过修改提供的CSS类来改变滚动条的样式。主要的CSS类包括`viewport`, `track`, `thumb`, `hover`等,分别对应滚动区域、轨道、滑块和鼠标悬浮状态。 8. **兼容性与性能** ...

    asp.net 垂直滚动条Css样式,Js实现源码

    本资源提供了一种方法,通过CSS样式和JavaScript实现ASP.NET页面中的垂直滚动条美化。下面将详细阐述这个主题。 首先,CSS(层叠样式表)是用于控制网页元素外观的关键工具。在ASP.NET中,我们可以利用CSS来改变...

    好看的滚动条样式

    标题中的“好看的滚动条样式”指的是在网页设计中对浏览器默认滚动条进行美化和定制的一种技术。滚动条作为用户浏览长内容时不可或缺的交互元素,其样式和用户体验往往被开发者忽视,但通过自定义,可以提升网站的...

    跨浏览器响应式滚动条美化jQuery插件

    "跨浏览器响应式滚动条美化jQuery插件",即jQuery Scrollbar,是实现这一目标的优秀工具。这个插件专门用于解决默认滚动条在视觉上的不协调,尤其是在追求美观和一致性的现代网页设计中。 jQuery Scrollbar 支持IE7...

Global site tag (gtag.js) - Google Analytics