用 Javascript 获取滚动条位置等信息

有时为了准确定位一个元素,我们需要获取滚动条的位置,这种需求经常出现在 tooltip 和 拖放等应用中,其实这个技术很简单,关键是要考虑浏览器的兼容性,本文就是介绍这一问题的解决方法。

其实这段代码在之前的 “ 用 Javascript 实现锚点(Anchor)间平滑跳转” 一文已经介绍过了,但是由于这个需求并且经常用到,因此,本站专门发布此文介绍,方便查阅。

 
<script type="text/javascript">
 
// 说明:用 Javascript 获取滚动条位置等信息
// 来源 :ThickBox 2.1 
// 整理 :CodeBit.cn ( http://www.CodeBit.cn )
 
function getScroll() 
{
	var t, l, w, h;
	
	if (document.documentElement && document.documentElement.scrollTop) {
		t = document.documentElement.scrollTop;
		l = document.documentElement.scrollLeft;
		w = document.documentElement.scrollWidth;
		h = document.documentElement.scrollHeight;
	} else if (document.body) {
		t = document.body.scrollTop;
		l = document.body.scrollLeft;
		w = document.body.scrollWidth;
		h = document.body.scrollHeight;
	}
	return { t: t, l: l, w: w, h: h };
}
 
</script>

具体示例请参考 “ 用 Javascript 实现锚点(Anchor)间平滑跳转” 一文。

页面滚动条(scrollbar)颜色设置详解

一些网站为了整体效果,会调整页面滚动条的颜色,但是,这个解决方案只有 KDE 上的 Konqueror 浏览器和 Windows 上的 Internet Explorer 5.5+ 才支持,发在这里只是供有需要的人采用,因此,使用前要根据自己的用户群来进行选择。

 
<style type="text/css">
body, html {
	scrollbar-face-color: #353535;
	scrollbar-shadow-color: #565656;
	scrollbar-highlight-color: #565656;
	scrollbar-3dlight-color: #7F7F7F;
	scrollbar-darkshadow-color: #565656;
	scrollbar-track-color: #565656;
	scrollbar-arrow-color: #DADADA;
}
</style>

由于在 xhtml 中 定义在 body 上是没有效果的,所以为了通用,可以在 body 和 html 标签都定义一下。

这些属对应图例如下:

滚动条的显示与隐藏:

语法:

overflow : visible | auto | hidden | scroll

参数:

visible :  不剪切内容也不添加滚动条。假如显式声明此默认值,对象将被剪切为包含对象的window或frame的大小。并且clip属性设置将失效
auto :  此为body对象和textarea的默认值。在需要时剪切内容并添加滚动条
hidden :  不显示超过对象尺寸的内容
scroll :  总是显示滚动条

单独控制横向滚动条或者纵向滚动条可以用 :overflow-x 和 overflow-y ,语法和 overflow 相同。

将滚动条(scrollbar)保持在最底部的方法

有些时候(如开发聊天程序),我们需要将将滚动条(scrollbar)保持在最底部,比如聊天窗口,最新发出和收到的信息要显示在最下方,如果要看到最下方的内容,就必须保证滚动条保持在最底部。

将滚动条(scrollbar)保持在最底部的方法 – 示例

 
<script type="text/javascript">
 
function add()
{
	var now = new Date();
 
	var div = document.getElementById('scrolldIV');
 
	div.innerHTML = div.innerHTML + 'time_' + now.getTime() + '<br />';
 
	div.scrollTop = div.scrollHeight;
}
 
function scrollWindow()
{
	scroll(0, 100000);
	setTimeout('scrollWindow()', 200);
}
 
window.onload = function() { scrollWindow(); } 
 
</script>
 
<div id="scrolldIV" style="overflow:scroll; height: 100px; width: 400px; border: 1px solid #999;">
</div>
 
<input type="button" value="插入一行" onclick="add();">

javascript 代码中:

function add() 是在 id 为 scrolldIV 的 div 中插入一条信息,并将其滚动条固定在底部

function scrollWindow() 是将整个页面的滚动条固定在页面底部。