《精通JavaScript》读书笔记(五)

1.鼠标位置


1)首先需要确定的两个变量是:光标相对于整个页面的x和y位置。如下所示

/*
 * 获取鼠标相对于整个页面的偏移量
 * @param {Object} e
 */
var getX = function(evt){
	evt = evt || window.event;
	return evt.pageX || evt.clientX + document.body.scrollLeft;
};

var getY = function(evt){
	evt = evt || window.event;
	return evt.pageY || evt.clientY + document.body.scrollTop;
};

上面的代码中pageX只存在于非IE的浏览器中,代表着鼠标事件相对于整个页面(包括滚动条位置)的坐标,而clientY在IE和其他浏览器下均存在,代表着鼠标事件相对于整个页面(不包括滚动条位置)的坐标,所以需要加上滚动条的偏移量。

2)光标相对于正在交互元素的x和y的位置。代码如下:

/*
 *获取光标相对于当前正在交互的元素的x和y位置 
 *layerX的作用:网上很多解释说layerX与offsetX的作用相同.可以返回鼠标指针在触发事件元素内的x坐标
 *也有解释说相对于父元素的x坐标.经过我的测试得出以下结论:
 *layerX可以返回两种结果.第一:layerX属性可以返回鼠标指针相对于父元素的x坐标水平位置.
 *第二:layerX属性可以返回鼠标指针相对于元素本身的x坐标水平位置.
 *比如说我需要在某个div内获取鼠标指针的x水平位置.
 *如果你没有使用Css中的position属性来对该div进行任何设置.那么这时layerX返回的是相对于div父元素的x坐标.
 *也就是包含该div的那个元素.
 *如果将div的position属性设置为absolute或relative时.layerX则返回元素本身的x水平位置.
 *这时返回的值与clientX的值相同.另外提醒的是layerX支持FF和Safari浏览器,在IE和Opear中无法使用.
 */
var getElementX = function(evt){
	evt = evt || window.event;
	return evt.offsetX || evt.layerX;
};

var getElementY = function(evt){
	evt = evt || window.event;
	return evt.offsetX || evt.layerX;
};

上述代码事实上不太准确,主要是layerX这个属性的问题,详细见注释,offsetX则是准确的,目前测试,在IE和Chrome下支持offsetX,在FF下不支持。因此要想在FF下获得准确的相对于事件元素的光标位置,则需要将元素的position设置为absolute或relative.


2. 视口

1)页面尺寸

以下函数返回了页面的完整高度和宽度(即包括滚动条外的内容):

/*
 * 返回页面的潜在完整宽度和高度(包括滚动条之外的内容)
 */
var getPageHeight = function(){
	return document.body.scrollHeight;
};

var getPageWidth = function(){
	return document.body.scrollWidth;
};

2)滚动条位置

以下函数返回了滚动条的位置:

/*
 * 确定浏览器滚动条位置的函数
 * pageXOffset:经测试,chrome和FF下存在,IE下无效
 */
var getScrollX = function(){
	//用于IE6/7的严格模式中
	var de = document.documentElement;
	
	return self.pageXOffset || (de && de.scrollLeft) || document.body.scrollLeft;
};

var getScrollY = function(){
	//用于IE6/7的严格模式中
	var de = document.documentElement;
	
	return self.pageYOffset || (de && de.scrollTop) || document.body.scrollTop;
};

3)视口尺寸

以下函数能够获得页面的视口尺寸(即不包含滚动条之外的内容):


/*
 *获得页面的视口尺寸(不包括滚动条之外的内容) 
 *innerHeight: FF和Chrome支持,IE不支持
 */
var getWindowHeight = function(){
	//用于IE6/7的严格模式中
	var de = document.documentElement;
	
	return self.innerHeight || (de && de.clientHeight) || document.body.clientHeight;
};

var getWindowWidth = function(){
	//用于IE6/7的严格模式中
	var de = document.documentElement;
	
	return self.innerWidth || (de && de.clientWidth) || document.body.clientWidth;
};




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章(\1) 示例描述:变量。 1_1.htm 变量声明。 1_2.htm 局部变量和全局变量。 1_3.htm JavaScript中的强制类型转换。 1_4.htm 在HTML中为JavaScript传递变量。 1_5.htm 在HTML中引用JavaScript的变量。 1_6.htm 比较undefined和"undefined"。 第2章(\2) 示例描述:客户端的流程控制。 2_1.htm 条件判断语句if…else 2_2.htm 多条件判断语句switch。 2_3.htm 嵌套循环语句for。 2_4.htm 循环语句while。 2_5.htm 控制循环过程break和continue。 2_6.htm 利用流程控制语句实现冒泡排序。 第3章(\3) 示例描述:字符串操作。 3_1.htm 连接字符串。 3_2.htm 在字符串中查找指定字符。 3_3.htm 提取字符串中的字串。 3_4.htm 替换字符串中的指定字符。 3_5.htm 将字符串分解为数组。 3_6.htm 字符串大小写的书写和判断。 第4章(\4) 示例描述:数组技术。 4_1.htm 创建空数组。 4_2.htm 创建带初始值的数组。 4_3.htm 将数组转换为字符串。 4_4.htm 遍历数组中的元素。 4_5.htm 合并两个数组。 4_6.htm 创建多维数组。 4_7.htm 数组排序。 第5章(\5) 示例描述:JavaScript快速处理日期时间的操作。 5_1.htm 获取当前日期并显示在HTML页中。 5_2.htm 分别获取当前时间的年月日时分秒。 5_3.htm 时间的水中倒影。 5_4.htm 简单的日历。 5_5.htm 标题栏显示日期。 5_6.htm 标题栏显示时间。 5_7.htm 不同时间的不同问候。 第6章(\6) 示例描述:JavaScript页面处理技巧。 6_1.htm 用JavaScript实现一个页面两份样式表。 6_2.htm 用JavaScript动态更换图像元素中的图像。 6_3.htm 利用搜索引擎引用来高亮页面关键字。 6_4.htm 使用匿名函数为定时器传递参数。 6_5.htm Web页面中的tooltip提示。 6_6.htm 在Web页面中控制其元素的选择状态。 第7章(\7) 示例描述:JavaScript的鼠标事件和键盘事件。 7_1.htm 按钮的鼠标单击事件。 7_2.htm 用鼠标点亮文本。 7_3.htm 渐显图片。 7_4.htm 跟随鼠标的图片。 7_5.htm 跟随鼠标的*。 7_6.htm 跟随鼠标的文字。 7_7.htm 判断Ctrl键是否被按下。 7_8.htm 设置页面中某按钮的热键。 第8章(\8) 示例描述:窗口大小自动化管理。 8_1.htm 按指定要求打开的窗口。 8_2.htm 控制窗口的打开和关闭。 8_3.htm 从天而降的窗口。 8_4.htm 打开慢慢变大的窗口。 8_5.htm 打开一个四面变大的窗口。 8_6.htm 页面左右分开。 8_7.htm 定时打开网页。 8_8.htm 自动打开新的窗口。 第9章(\9) 示例描述:JavaScript结合文字实现特殊页面。 9_1.htm 逐隐逐现的文字特效。 9_2.htm 超酷的文字特效。 9_3.htm 阴影文字的特殊效果。 9_4.htm 彩色文字的特殊效果。 9_5.htm 升降文字的特殊效果。 9_6.htm 打字效果的文字特效。 9_7.htm 淡入淡出的文字效果。 9_8.htm 炽热文字的特殊效果。 第10章(\10) 示例描述:页面中的链接地址个性化。 10_1.htm 按时消失的链接。 10_2.htm 带滚动提示的链接。 10_3.htm 动态变换的链接。 10_4.htm 滚动链接。 10_5.htm 不断闪动的链接。 10_6.htm 在按钮上显示不同的链接。 10_7.htm 带链接的滚动字幕。 第11章(\11) 示例描述:在HTML中用JavaScript控制图像页面。 11_1.htm 不停闪烁的图片。 11_2.htm 图片展示选项。 11_3.htm 图片的渐显播放。 11_4.htm 将图片固定在页面左上角。 11_5.htm 左右移动的图片。 11_6.htm 图像滚动公告版。 11_7.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值