js浏览器各种位置检测
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>属性检测</title>
<style>
*{margin: 0;padding:0;border:none;}
#tip{
width:400px;
height:300px;
}
#T{
width:400px;
height:200px;
margin-left:10px;
margin-top: 10px;
border-width: 100px;
border-style: solid;
border-top-color: blue;
border-right-color: red;
border-bottom-color: orange;
border-left-color:black;
background: green;
padding-left: 100px;
padding-top: 100px;
text-align:left;
padding-left-color: white;
color:orange;
overflow: scroll;
}
body{ }
</style>
</head>
<body>
<textarea id='tip'></textarea>
<div id='T'>
12312123112312123123121231123121231231212311231212312312123112312123
</div>
<script type="text/javascript">
var T=document.getElementById('T');
T.onmousemove=function(e){
var T=document.getElementById('T');
var clientWidth=T.clientWidth;
var clientHeight=T.clientHeight;
var offsetWidth=T.offsetWidth;
var offsetHeight=T.offsetHeight;
var scrollWidth=T.scrollWidth;
var scrollHeight=T.scrollHeight;
var scrollTop=T.scrollTop;
var scrollLeft=T.scrollLeft;
var screenTop=window.screenTop?window.screenTop:window.screenY;//火狐screenX
var screenWidth=window.screen.width;
var availWidth=window.screen.availWidth;
var offsetLeft=T.offsetLeft;
var offsetTop=T.offsetTop;
var clientTop=T.clientTop;
var offsetParent=T.offsetParent;
var pageX=e.pageX;
var pageY=e.pageY;
var clientX=e.clientX;
var clientY=e.clientY;
var screenX=e.screenX;
var offsetX=e.offsetX;
var offsetY=e.offsetY; var tip="clientWidth:"+clientWidth+" clientHeight:"+clientHeight+"\r\n";
tip+="offsetWidth:"+offsetWidth+" offsetHeight:"+offsetHeight+"\r\n";
tip+="scrollWidth:"+scrollWidth+" scrollHeight:"+scrollHeight+"\r\n";
tip+="scrollTop:"+scrollTop+" scrollLeft:"+scrollLeft+"\r\n";
tip+="screenTop:"+screenTop+"\r\n";
tip+="screen.width:"+screenWidth+"\r\n";
tip+="screen.availWidth:"+availWidth+"\r\n";
tip+="offsetLeft:"+offsetLeft+" offsetTop:"+offsetTop+"\r\n";
tip+="clientTop:"+clientTop+"\r\n";
tip+="offsetParent:"+offsetParent+"\r\n";
tip+="pageX:"+pageX+" pageY:"+pageY+"\r\n";
tip+="clientX:"+clientX+" clientY:"+clientY+"\r\n";
tip+="offsetX:"+offsetX+" offsetY:"+offsetY+"\r\n";
document.getElementById('tip').value=tip;
} </script> </body>
</html>
Js位置定位控制
某个盒子:出现滚动条时 可见宽度=(width-滚动条宽度)
某个元素下的属性
clientWidth:可见区域的宽度=(width-滚动条宽度(有时)+padding)
clientTop: 获取对象的border宽度
offsetWith:(border+width+padding)
offsetLeft: 当前对象到其上级层左边的距离
offsetParent:获取当前对象的上级层对象
scrollWidth:网页正文全文宽=(没滚动条时=clientWidth,没滚条时=client+拉动滚条才能看到的区域)
scrollLeft:有滚条时左边被隐藏的长度
scrollWidth=(scrollLeft(拉到最右时)+clientWidth)
下面事件属性
window.screenTop(只读属性)浏览器窗口上边距屏幕顶端距离(适用与chrome firefox下screenX,IE下是网页正文距屏幕上边界距离(scrollTop))
window.screen.width(屏幕分辨率)
window.screen.availWidth(屏幕可用工作区宽度等于分辨率宽)
window.pageX:鼠标的横坐标以当前文档开始为基准(以当前整个文档为基准(包括margin,border,padding等))
window.clientX:鼠标的横坐标以当前浏览器窗口为基准
没滚动条时pageX=clientX;
IE没pageX
在ie下pageX=clientX+scrollTop-clientTop(border-width (chrome测试无需减掉))
window.offsetX(鼠标相比较于触发事件的元素的位置,以元素盒子模型的内容区域的左上角为参考点)
与clientX区别(clientX以浏览器窗口为基准)
js浏览器各种位置检测的更多相关文章
- 前端(十一)—— JavaScript基础:JS存在的位置、JS变量定义、调试方式、JS数据类型、运算符
JS存在的位置.JS变量定义.调试方式.JS数据类型.运算符 一.JS语言介绍 1.概念 浏览器脚本语言 可以编写运行在浏览器上的代码程序 属于解释性.弱语言类型编程语言 2.组成 ES语法:ECMA ...
- JS代码的位置与事件响应代码块的封装问题
JS代码的位置 我们可以将JavaScript代码放在html文件中任何位置,但是我们一般放在网页的head或者body部分. 放在<head>部分最常用的方式是在页面中h ...
- JS代码放置位置、变量与数据类型、运算符与逻辑表达运算符
内容简要: 1.JS代码放置位置的问题: 2.变量与数据类型: 3.运算符与逻辑表达式的运算符 我的位置 全局问题:为何在网页推荐位置(一般在<head></head>内部 ...
- 【全面总结】js获取元素位置大小
[js获取元素位置+元素大小]全面总结 目录 1.关于offset offsetParent(只读) offsetTop(只读) offsetLeft(只读) offsetHeight(只读) off ...
- js获取元素位置和style的兼容性写法
今天说一下js获取元素位置和style的方法.当然不只是element.style那么简单.. 主角:getBoundingClientRect,getClientRects,getComputedS ...
- JS和css实现检测移动设备方向的变化并判断横竖屏幕
这篇文章主要介绍了JS和css实现检测移动设备方向的变化并判断横竖屏幕,本文分别给出实现代码,需要的朋友可以参考下 方法一:用触发手机的横屏和竖屏之间的切换的事件 [自测可用, chrome , 手 ...
- Node.js event loop 和 JS 浏览器环境下的事件循环的区别
Node.js event loop 和 JS 浏览器环境下的事件循环的区别: 1.线程与进程: JS 是单线程执行的,指的是一个进程里只有一个主线程,那到底什么是线程?什么是进程? 进程是 CPU ...
- atitit.js浏览器环境下的全局异常捕获
atitit.js浏览器环境下的全局异常捕获 window.onerror = function(errorMessage, scriptURI, lineNumber) { var s= JSON. ...
- Atitit.android js 的键盘按键检测Back键Home键和Menu键事件
Atitit.android js 的键盘按键检测Back键Home键和Menu键事件 1. onKeyDown @Override public boolean onKeyDown(int keyC ...
随机推荐
- java泛型的限制
1.不能实例化泛型数组,除非是无上界的类型通配符,如:Gennerid<String> []a=new Gennerid<String>[10] 而Gennic<?> ...
- 搭建hive1.2.1图形界面
下载:apache-hive-1.2.1-src.tar apache-hive-1.2.1-src.tar 解压,cd apache-hive-1.2.1-src/hwi 命令:jar cfM hi ...
- 单源最短路_SPFA_C++
当我们需要求一个点到其它所有点的最短路时,我们可以采用SPFA算法 代码特别好写,而且可以有环,但是不能有负权环,时间复杂度是O(α(n)n),n为边数,α(n)为n的反阿克曼函数,一般小于等于4 模 ...
- 初探接口测试框架--python系列5
点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是 ...
- delphi调用web service出现 Unable to retrieve the URL endpoint for Service/Port .....
delphi调用web service出现 Unable to retrieve the URL endpoint for Service/Port, 错误截图如下 查了很长时间, 发现在DataM ...
- 【翻译习作】 Windows Workflow Foundation程序开发-前言
Windows Workflow Foundation程序开发-基于XAML和C#的WF实战技术与例程 ——C#程序员的WF功能与编程接口技术指导 前言 Windows Workflow Founda ...
- json 和 pickel 详解
一.json json,用于字符串 和 python数据类型间进行转换 Json模块提供了四个功能:dumps.dump.loads.load 1.json.loads()用于将字符串形式的字典,列表 ...
- hibernate进阶--一对多映射配置
hibernate作为一款优秀的ORM框架,广受大家喜爱,也被Java社区公认为持久层的首选.虽然jdbc为Java数据库操 作带来了诸多便利,但是并没有统一SQL语句的写法,而且具体操作数据库的代码 ...
- asp.net(c#)修改时的赋值操作
赋值操作方法(将信息显示至文本框中): public void Show_Infobase(int _peoid) { DataSet ds = new DataSet(); ds = platbll ...
- c#中如何得到百分比数值
//此方法得到的百分比后小数太多,不行double percent=Convert.ToDouble(2)/Convert.ToDouble(34);string result=(percent*10 ...