clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y ,offsetTop,offsetLeft 详解
clientX/Y:
clientX/Y获取到的是触发点相对浏览器可视区域左上角距离,不随页面滚动而改变
兼容性:所有浏览器均支持
pageX/Y:
pageX/Y获取到的是触发点相对文档区域左上角距离,会随着页面滚动而改变
兼容性:除IE6/7/8不支持外,其余浏览器均支持
offsetX/Y:
offsetX/Y获取到是触发点相对被触发dom的左上角距离,不过左上角基准点在不同浏览器中有区别,其中在IE中以内容区左上角为基准点不包括边框,如果触发点在边框上会返回负值,而chrome中以边框左上角为基准点。
兼容性:IE所有版本,chrome,Safari均完美支持,Firefox不支持
layerX/Y:
layerX/Y获取到的是触发点相对被触发dom左上角的距离,数值与offsetX/Y相同,这个变量就是firefox用来替代offsetX/Y的,基准点为边框左上角,但是有个条件就是,被触发的dom需要设置为position:relative或者position:absolute,否则会返回相对html文档区域左上角的距离
兼容性:IE6/7/8不支持,opera不支持,IE9/10和Chrome、Safari均支持
screenX/Y:
screenX/Y获取到的是触发点相对显示器屏幕左上角的距离,不随页面滚动而改变
兼容性:所有浏览器均支持
拖拽小例子
<style>
#div1 {
width: 100px;
height: 100px;
background: red;
position: absolute;
}
</style>
<div id="div1"></div>
<script>
var oDiv1 = document.getElementById("div1");
oDiv1.onmousedown = function(event) {
var disX = event.clientX - oDiv1.offsetLeft;
var disY = event.clientY - oDiv1.offsetTop;
document.onmousemove = function(event) {
oDiv1.style.left = event.clientX - disX + "px";
oDiv1.style.top = event.clientY - disY + "px";
}
document.onmouseup = function() {
document.onmousemove = null;
document.onmouseup = null;
}
}
</script>
obj.clientWidth //元素的宽度(可视区的宽度)不包含border 只读属性
obj.clientHeight //元素的高度(可视区的高度度)不包含border 只读属性
obj.offsetLeft //元素相对于父元素的left 只读属性,也就是margin-left的值,不含单位
obj.offsetTop //元素相对于父元素的top 只读属性,也就是margin-top的值,不含单位
obj.offsetWidth //元素的宽度(实际的宽度)包含border 只读属性
obj.offsetHeight //元素的高度(实际的宽度)包含border 只读属性
区别:
clientWidth = width + padding
clientHeight = height + padding
offsetWidth = width + padding + border
offsetHeight = width + padding + border
offset比client多了border的宽度
obj.scrollLeft 是父元素在滚动,就像页面内容把body撑开了出现滚动条,我们是在滚动body的滚动条,而不是滚动内容
无缝滚动小例子
#div1 {
width: 363px;
overflow: hidden;
}
</style>
<div id="div1">
<img src="http://457375608.github.io/public/images/test01.jpg" alt="">
</div>
<script>
var oDiv1 = document.getElementById("div1");
setInterval(function() {
if (oDiv1.scrollLeft >= oDiv1.offsetWidth) {
oDiv1.scrollLeft = 0
} else {
oDiv1.scrollLeft++
}
}, 30)
</script>
无缝滚动代码,注意是oDiv0在滚动,当滚动的距离大于自身的宽度是让它重新滚动以达到无缝滚动的目的
利用left也可做无缝滚动
<style>
#div1 {
width: 363px;
height:100px;
overflow: hidden;
position: relative;
}
#div1 img{
width:726px;
height:100px;
position: absolute;
top:0;
left:0;
}
</style>
<div id="div1">
<img src="http://457375608.github.io/public/images/test01.jpg" alt="">
</div>
<script>
var oDiv1 = document.getElementById("div1");
var oImg1 = oDiv1.getElementsByTagName('img')[0];
oImg1.num=0
setInterval(function() {
oImg1.num--;
if (parseInt(oImg1.style.left) <= -oDiv1.offsetWidth) {
oImg1.style.left =oImg1.num= 0
} else {
oImg1.style.left=oImg1.num+"px"
}
}, 30)
</script>
clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y ,offsetTop,offsetLeft 详解的更多相关文章
- JavaScript 中事件对象参数:clientX、clientY、offsetX、offsetY、screenX、screenY
JavaScript 中一些概念理解 :clientX.clientY.offsetX.offsetY.screenX.screenY clientX 设置或获取鼠标指针位置相对于窗口客户区域的 x ...
- clientX、pageX、offsetX、screenX的区别
这几个属性的区别说难不难,可是很容易搞混,很长一段时间没用,发现又忘记区别了,记不清哪个是哪个!真的很抓狂! 区别: clientX.clientY: 相对于浏览器窗口可视区域的X,Y坐标(窗口坐标) ...
- JavaScript 中一些概念理解 :clientX、clientY、offsetX、offsetY、screenX、screenY
clientX 设置或获取鼠标指针位置相对于窗口客户区域的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条. clientY 设置或获取鼠标指针位置相对于窗口客户区域的 y 坐标,其中客户区域不包 ...
- 原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y【转】
关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种 event.clientX/Y event.pageX/Y event.offsetX/Y event.layerX/Y event.sc ...
- 原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y
关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种 event.clientX/Y event.pageX/Y event.offsetX/Y event.layerX/Y event.sc ...
- clientX/Y pageX/Y offsetX/Y layerX/Y screenX/Y clientHeight innerWidth...
关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种 event.clientX/Y event.pageX/Y event.offsetX/Y event.layerX/Y event.sc ...
- pagex/y offsetx/y screenx/y clientx/y 用法及区别
1 pagex/pagey:鼠标相对于整个页面的x/y坐标 注:整个页面的意思就是你整个页面的全部 例如:宽200px 高400px 那么pagex/y他们最大值就是它 2,offsetX/y与pa ...
- pageX/Y, offset(), position(), scrollTop(), screenX/Y, clientX/Y, pageX/Y
event.pageX get mouse position Description: The mouse position relative to the left edge of the docu ...
- pageX、clientX、screenX、offsetX、layerX、x
参考:http://www.cnblogs.com/xesam/archive/2011/12/08/2280509.html chrome: e.pageX--相对整个页面的坐标e.layerX-- ...
随机推荐
- 用 localhost 访问正常,替换成 IP ,部分 CSS 或 JS 就失效了
这应该是浏览器的兼容性问题. 经测试,只要不是360浏览器的兼容模式,将 localhost 替换成 IP 无影响. 来自为知笔记(Wiz)
- win7IIS错误修改路径最全的
http://blog.csdn.net/testcs_dn/article/details/8726480 http://www.myexception.cn/asp-dotnet/1341569. ...
- 佛山Uber优步司机奖励政策(2月1日~2月7日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Oracle的SCN与检查点机制
Oracle的SCN与检查点机制 SCN在Oracle的文档上以多种形式出现,一种是System Change Number,另一种是System Commit Number,在大多数情况下,Syst ...
- Node调试工具JSHint
Node调试工具JSHint的安装及配置教程 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-27我要评论 Node的优势我就不再乱吹捧了,它让javascript统一web的前后台成 ...
- web 网站安全证书已过期或不可信 是否继续浏览
发生环境:魅族MX4 uc浏览器 IIS部署SSL证书后提示不可信的解决方案 第一步:打开mmc——点击文件——添加删除管理单元——证书——计算机帐户 第二步:在计算机帐户的个人证书里面导入pfx格 ...
- use SWF / Flash in cocos2d-x; cocos2d(cocos2d-x) 直接播放flash / SWF文件
前段时间移植一个页游到手游,原先页游的项目里面有1000+的Flash人物,宠物动画,特效. 这要是全部重新做一遍,还不累死人?所以就想干脆直接在Cocos2d(x)里面播放SWF文件.(包括场景,过 ...
- delegate和event
经过查阅资料和自己的理解整理出来的,欢迎大家指教. delegate和event 何时使用: 异步的时候,比如加载完成通知. 需要回调的时候,比如按钮点击.动画播放结束等. 发送事件通知的时候. 比如 ...
- FileZilla命令行实现文件上传以及CreateProcess实现静默调用
应用需求: 用户在选择渲染作业时面临两种情况:一是选择用户远程存储上的文件:二是选择本地文件系统中的文件进行渲染.由于渲染任务是在远程主机上进行的,实际进行渲染时源文件也是在ftp目录 ...
- hdu2011java
多项式求和 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...