js 获取鼠标在页面上的位置实例与返回顶部代码

**
 * 获取鼠标在页面上的位置
 * @param ev  触发的事件
 * @return   x:鼠标在页面上的横向位置, y:鼠标在页面上的纵向位置
 */
function getmousepoint(ev) {
 // 定义鼠标在视窗中的位置
 var point = {
  x:0,
  y:0
 };
 
 // 如果浏览器支持 pageyoffset, 通过 pagexoffset 和 pageyoffset 获取页面和视窗之间的距离
 if(typeof window.pageyoffset != 'undefined') {
  point.x = window.pagexoffset;
  point.y = window.pageyoffset;
 }
 // 如果浏览器支持 compatmode, 并且指定了 doctype, 通过 documentelement 获取滚动距离作为页面和视窗间的距离
 // ie 中, 当页面指定 doctype, compatmode 的值是 css教程1compat, 否则 compatmode 的值是 backcompat
 else if(typeof document.compatmode != 'undefined' && document.compatmode != 'backcompat') {
  point.x = document.documentelement.scrollleft;
  point.y = document.documentelement.scrolltop;
 }
 // 如果浏览器支持 document.body, 可以通过 document.body 来获取滚动高度
 else if(typeof document.body != 'undefined') {
  point.x = document.body.scrollleft;
  point.y = document.body.scrolltop;
 }
 
 // 加上鼠标在视窗中的位置
 point.x += ev.clientx;
 point.y += ev.clienty;
 
 // 返回鼠标在视窗中的位置
 return point;
}

视窗 (浏览器可视窗口) 就像是页面上的掩板开了一个洞. 滚动条可以改变页面和视窗之间的偏移量, 从而可以通过视窗看到页面的各个位置.
鼠标在页面上的位置 = 页面和视窗之间的偏移量 + 鼠标在视窗中的位置

右图中的 cursorx 和 cursory 分别是鼠标在视窗中的横向和纵向位置, scrolly 是页面和视窗之间的纵向距离. 当然, 当视窗宽度小于页面宽度的时候, 还会存在 scrollx. 那么鼠标在页面上的位置就是: (scrollx+cursorx, scrolly+cursory)

ie 以外的浏览器 (本人测试过 firefox 3.6, opera 10.10, chrome 4.1 和 safari 4.0.4) 均可以通过 pagexoffset 和 pageyoffset 来获取页面和视窗间的横纵距离. 但 ie (本人测试过 ie6, ie7, ie8) 只能通过滚动位移来获取页面和视窗间的距离, 并存在一到两个像素的偏离.

网页特效 实现变速回到顶部

我们会获取滚动条到页面顶部的距离, 然后上移一定的距离; 再获取滚动条到页面顶部的距离, 上移一定的距离 (比上一次小一点); ...
function gotop(acceleration, time) {
 acceleration = acceleration || 0.1;
 time = time || 16;
 
 var x1 = 0;
 var y1 = 0;
 var x2 = 0;
 var y2 = 0;
 var x3 = 0;
 var y3 = 0;
 
 if (document.documentelement) {
  x1 = document.documentelement.scrollleft || 0;
  y1 = document.documentelement.scrolltop || 0;
 }
 if (document.body) {
  x2 = document.body.scrollleft || 0;
  y2 = document.body.scrolltop || 0;
 }
 var x3 = window.scrollx || 0;
 var y3 = window.scrolly || 0;
 
 // 滚动条到页面顶部的水平距离
 var x = math.max(x1, math.max(x2, x3));
 // 滚动条到页面顶部的垂直距离
 var y = math.max(y1, math.max(y2, y3));
 
 // 滚动距离 = 目前距离 / 速度, 因为距离原来越小, 速度是大于 1 的数, 所以滚动距离会越来越小
 var speed = 1 + acceleration;
 window.scrollto(math.floor(x / speed), math.floor(y / speed));
 
 // 如果距离不为零, 继续调用迭代本函数
 if(x > 0 || y > 0) {
  var invokefunction = "gotop(" + acceleration + ", " + time + ")";
  window.settimeout(invokefunction, time);
 }
}

document.documentelement.scrolltop, document.body.scrolltop, window.scrolly 其实都是一样的, 但它们只在某些浏览器中起作用. 至于那哪个在哪些浏览器起作用可以自己调试一下.

html 代码:
1
 <a href="#" onclick="gotop();return false;">top</a>

时间: 2024-11-10 10:33:19

js 获取鼠标在页面上的位置实例与返回顶部代码的相关文章

js 获取元素在页面上的偏移量的方法汇总_javascript技巧

使用js制作效果时,我们常常要获取某个元素在页面上的偏移量(例如tip提示框功能).而获取偏移量可以直接获取相对于document的偏移量,也可以获取相对与视口的偏移量(viewpoint)加上页面滚动量(scroll)获得. 1.获取相对与document的偏移量 function getOffsetSum(ele){ var top= 0,left=0; while(ele){ top+=ele.offsetTop; left+=ele.offsetLeft; ele=ele.offsetP

js获取鼠标位置(兼容 Firefox 3.6, Opera 10.10, Chrome 4.1)

js获取鼠标位置(兼容 Firefox 3.6, Opera 10.10, Chrome 4.1) <script language="网页特效"> function document.onmouseo教程ver() {   document.all("txtbox").value=event.screenX+"x"+event.screenY; } private void Button1_Click(object sender,

JS获取鼠标坐标位置实例分析_javascript技巧

本文实例分析了JS获取鼠标坐标位置的方法.分享给大家供大家参考,具体如下: 取鼠标坐标位置有这些:鼠标在视口的坐标位置(clientX,clientY),鼠标在页面的坐标位置(pageX,pageY),鼠标在屏幕的坐标位置(screenX,screenY),其中鼠标在视口的坐标位置(clientX,clientY),以及鼠标在屏幕的坐标位置(screenX,screenY)在所有的浏览器中都支持,但是鼠标在页面的坐标位置(pageX,pageY)在IE8及更早版本不支持,但是没有关系,可以通过s

JS获取鼠标相对位置的方法_javascript技巧

本文实例讲述了JS获取鼠标相对位置的方法.分享给大家供大家参考,具体如下: <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"/> <title>位置</title> <script language="javascript" type="text/javascript"&

JS获取鼠标坐标、获取鼠标像素点示例

 运行代码之后随意移动鼠标的位置,可适时显现鼠标的坐标点,不占用系统资源 JS获取鼠标坐标,获取鼠标像素点的典型实例,运行本页面后,随意移动鼠标的位置,可适时显现鼠标的坐标点,不占用系统资源 .    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <h

JS获取鼠标坐标的实例方法

这篇文章介绍了JS获取鼠标坐标的实例方法,有需要的朋友可以参考一下   复制代码 代码如下: var restrictX;  var restrictY;  var tip;  // 鼠标坐标   function mousePosition(ev) {  return {          x : ev.clientX + document.documentElement.scrollLeft - document.documentElement.clientLeft,          y

js实现鼠标悬停图片上时滚动文字说明的方法

 这篇文章主要介绍了js实现鼠标悬停图片上时滚动文字说明的方法,涉及js操作鼠标事件的使用技巧,需要的朋友可以参考下     本文实例讲述了js实现鼠标悬停图片上时滚动文字说明的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: <html> <title>js实现鼠标悬停图片上时的滚动文字说明</title> <body> <SCRIPT LANGUAGE="JavaScript"> <!-- Begin

鼠标移动-WPF中,窗体设置为可穿透后,怎么获取鼠标在窗体上的坐标

问题描述 WPF中,窗体设置为可穿透后,怎么获取鼠标在窗体上的坐标 <Window x:Class="mtWPFScratchPad.DeskForm" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="mtWPFScratch

js实现鼠标悬停图片上时滚动文字说明的方法_javascript技巧

本文实例讲述了js实现鼠标悬停图片上时滚动文字说明的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <html> <title>js实现鼠标悬停图片上时的滚动文字说明</title> <body> <SCRIPT LANGUAGE="JavaScript"> <!-- Begin function showtip2(current,e,text){   if (document.all&&a