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 ...
随机推荐
- 求bat文件创建mysql数据库,并调用一个SQL文件的代码
@echo off set path=C:\program files\mysql\mysql server 5.5\bin cd ./ set CURR_PATH=%cd% mysql -h loc ...
- getdata
public partial class GetData : System.Web.UI.Page { protected void Page_Load(object sender, EventArg ...
- cocos2d-lua 3.5 android搭建步骤
cocos2d-lua 3.5 android搭建步骤 如何安装eclipse,jdk,android sdk,ndk这里都不说了,资料很多,而且以前用eclipse搭建cocos2d-x-c++的时 ...
- (Loadrunner)Error: Failed to send data by channels - post message failed.(转)
把Diagnotics-configure-Web Page Diagnotics 设置为 转自: http://www.51testing.com/html/64/371664-3708254.ht ...
- tesseract-orc 合并识别结果
在实际使用 tesseract-orc 识别库的时候,初次制作的识别库很有可能识别率不太理想,需要后期慢慢补充 本文演示如何将多个修正过的box文件合并成一个识别库. 首先,需要图片样本.tif文件, ...
- JS(AS)中的原子操作
原子操作这是Java多线程编程的老生常谈了.所谓原子操作是指不会被线程调度机制打断的操作:这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程). 当然 ...
- 大陆地区OpenStack项目Core现状(截至2016年1月28日,转载自陈沙克日志)
陈沙克 经常有朋友问,大陆地区大概有多少位OpenStack项目的Core.这个问题,现在其实不太好回答,如果需要准确统计的话.下面仅仅是一个大概估计,有遗漏的,希望朋友指出,我来补全. 文档修改历史 ...
- Crystal Report 处理当前系统时间
Changed the print date format to HH/yy/MM/mm/SS/dd (For Example:2014/01/23 16:30:45= 161430014523) ...
- DNS协议 实践
根据DNS协议发送UDP请求,然后获取IP地址 头文件: #ifndef __DNS__ #define __DNS__ #include <stdio.h> #include <s ...
- 在集群环境中使用 EhCache 缓存系统|RMI 集群模式
RMI 是 Java 的一种远程方法调用技术,是一种点对点的基于 Java 对象的通讯方式.EhCache 从 1.2 版本开始就支持 RMI 方式的缓存集群.在集群环境中 EhCache 所有缓存对 ...