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-- ...
随机推荐
- ReadingNotes@02-12-2013
ReadingNotes@02-12-2013 */--> pre { background-color: #2f4f4f;line-height: 1.6; FONT: 10.5pt Cons ...
- date 、cal、bc
date cal date是显示日期与时间 date +%Y/%M/%D date +%Y/%m/%d date +%H:%M cal cal 2016
- pgsql自动安装shell脚本整理
前面不断在vm虚拟机上测试pgsql,发觉安装还是有些麻烦的. 所以就收集了一些 1,http://www.davidghedini.com/pg/entry/postgresql_9_5_scrip ...
- 详解Android动画之Tween Animation
前面讲了动画中的Frame动画,今天就来详细讲解一下Tween动画的使用. 同样,在开始实例演示之前,先引用官方文档中的一段话: Tween动画是操作某个控件让其展现出旋转.渐变.移动.缩放的这么一种 ...
- DNS的查找机制、中文扩展,及其对手机扫描商标名称的支持
DNS的查找机制.中文扩展.及其对手机扫描商标名称的支持 DNS的查找机制 当DNS查找主机时,它首先在本域里查找,假设找不到则交给更上一级的域查找,直至顶级的域. 因此,假设计算机在北大域名(pku ...
- hdu2025java字符题
查找最大元素 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- MDA系统分析实战--图书馆管理系统
MDA系统分析实战--图书馆管理系统 本文通过MDA系统分析方法,对图书馆管理系统进行分析,简要叙述系统分析的一般过程.首先,简要介绍什么是MDA:MDA(Model-Driven Architect ...
- HTML+CSS基础学习笔记(5)
一.文字排版--字体 Eg: body{font-family:"宋体";} body{font-family:"Microsoft Yahei";}//微软雅 ...
- 9张思维导图学习Javascript(转)
思维导图小tips:思维导图又叫心智图,是表达发射性思维的有效的图形思维工具 ,它简单却又极其有效,是一种革命性的思维工具.思维导图运用图文并重的技巧,把各级主题的关系用相互隶属与相关的层级图表现出来 ...
- Node.js + Express + Mongodb 开发搭建个人网站(二)
二.路由 1.打开 routes/index.js ,这个意思就是 捕获到访问主页的get请求: 并通过 app.js 分配到对应的路由里: 看到这里,打开 http://127.0.0.1:300 ...