js的各个offset!offsetHeight,offsetTop

相信大家刚接触js的时候,总是被offsetHeight,offsetTop,clientHeight,clientTop等等一系列的offset问题搞的头晕。刚刚看高程,也看到了这方面的知识。记录一下,增加理解。

一、首先说偏移量:offsetHeight,offsetTop.

看图说话,方便理解。

这是我画的一个简单的偏移量图。黄色区域是我们的元素,她包括边框,内边距。我们要知道宽、高是对应的。上下左右是对应的。所以最起码不要把offsetLeft和offsetWidth混淆在一起。width和height是一对,top和left是一对。

offsetHeight:说白了就是垂直高度,只要在边框以内的全部算上,什么内边距啊、边框啊,以及水平的滚动条啊等等。也就是上图黄色区域的高度。

offsetWidth:和上面的小伙伴是一样的。

看下面的一对:

offsetTop:举个栗子就是你桌面上的一本书,书头到桌子头的距离。

offsetLeft:一样。

再看:

offsetParent:声明:offsetParent不一定等于parentNode。说白了,offsetParent不一定该元素的爹!有可能是她爷爷,爷爷的爹.......

下面举个例子:

<div id="outer">

<div id="inner">

</div>

</div>

<script>

window.onload = function () {

var inner = document.getElementById("inner");

var outer = document.getElementById("outer");

console.log(inner.offsetLeft);

console.log(inner.offsetTop)

console.log(inner.offsetParent)

console.log(outer.offsetLeft);

console.log(outer.offsetTop)

console.log(outer.offsetParent)

}

</script>

 body {
        padding-top: 100px;
        padding-left: 200px;
        margin: 0;
        background-color: #333333;
    }
    #outer{
        height: 300px;
        width: 300px;
        background-color:rebeccapurple;
        padding-top: 30px;
        padding-left: 50px;
    }
    #inner{
        background-color: blue;
        height: 50px;
        width: 50px;
    }

一个大div,一个小div。outer和inner。

输入结果:

从结果上:inner的offsetTop是body的padding+outer的padding。

两个div的offsetParent都是body。所以可以得出结论:div元素的offsetParent都是body。

明天再更新。



js的各个offset!offsetHeight,offsetTop

时间: 2024-12-28 23:27:04

js的各个offset!offsetHeight,offsetTop的相关文章

关于offsetWidth,offsetHeight,offsetTop,offsetLeft和二维数组的声明

offsetWidth,offsetHeight,offsetTop,offsetLeft 为只读状态,返回的值是int形式 只读形式即不能通过修改其值的大小. 想要修改某元素的这些值的大小(width,height,top,left) 可以使用一下方法 elementId.style.width = '20px'; elementId.style.height = '40px'; elementId.style.left = '20px'; elementId.style.top = '10p

js 位置属性offsetLeft,offsetTop,scrollLeft,scrollTop等测试

一直对这几个属性,有点模糊,今天有时间,好好研究一下. 一下上网上前辈写的关于这方面的博客链接: http://blog.csdn.net/wgw335363240/article/details/5580654 http://blog.csdn.net/fswan/article/details/17238933 看了几篇之后,有点小懂,还是亲身测试一下比较好,实践是检验真理的唯一标准.嘿嘿!! 下面是我写的demo的截图.这个demo上列出了,js的常用位置属性,可以拖拽.缩放元素,来观察各

js中的offsetParent,offsetLeft,offsetTop及jquery的offset(),position()比较

1.offsetParent 元素的offsetParent并不是元素的父元素,判断元素的offsetParent要根据以下情况: 1)当DOM结构层次中的元素均没有进行css定位(设置position为absolute或relative),则offsetParent为根目录: 2)当元素的父元素没有进行css定位,则offsetParent取最近的已经定位的元素: 3)当元素的父元素进行了css定位,则offsetParent为父元素: 2.offsetLeft,offsetTop 在IE中:

图片滚动(UP)的JS代码详解(offsetTop、scrollTop、offsetHeigh)【转】

源地址 信息技术教材配套的光盘里有一段设置图片滚动的JS代码,与网络上差不多,实现思路:一个设定高度并且隐藏超出它高度的内容的容器demo,里面放demo1和 demo2,demo1是滚动内容,demo2为demo1的直接克隆,通过不断改变demo的scrollTop或者scrollLeft达到滚动的目的,当demo1与demo2的交界处滚动至demo顶端时直接跳回初始位置,因为demo1与demo2一样,所以分不出跳动的瞬间,从而达到“无缝”滚动的目的. 代码如下:  <DIV id=demo

js进阶之js三大家族:offset,scroll,client

offset与style的区别offset可以得到任意样式表中的样式值offset系列的数值没有单位offsetWidth包含padding+border+widthoffsetwidth等属性是只读属性,只能获取,不能赋值 所以,我们想要获取元素大小的位置,用offset更合适stylestyle只能获取到行内样式表stylewidth获得的是带有单位的字符串style.width不包括padding和border的值style.width是可读属性,可以获取也可以赋值 点语法与offset获

JS 中的 offset、scroll、client

---恢复内容开始--- offset的使用 css部分 *{ margin:0; padding: 0 } #offset{ width: 100px; height:100px; padding:20px; background: red; margin-top:30px; } #fixed{ position: absolute; right:100px; top:200px; width: 200px; height: 200px; background: black; } html部分

js 三大家族之offset

JS中的offset家族: 一.offsetWidth与offsetHeight: 获取的是元素的实际宽高 = width + border + padding 注意点: 1.可以获取行内及内嵌的宽高 2.获取到的值是一个number类型,不带单位 3.获取的宽高包含border和padding 4.只能读取,不能设置 console.log ( div.offsetWidth );//width + border + padding console.log (div.offsetHeight

JavaScript中的 offset, client,scroll

在js 中我们要用到的 offset, client, scroll 在这我把自己理解的给大家分享一下. offset div.offsetTop 指div距离上方或上层控件的距离,单位像素 div.offsetLeft 指div距离左侧或上层控件的距离,单位像素 div.offsetWidth 指div 控件本身的宽度,单位像素 div.offsetHeight 指div 控件本身的高度,单位像素 混淆点 clientWidth 指对象看到的宽度,不包含border scrollWidth 是

zepto.js 源码注释

/* Zepto v1.0-1-ga3cab6c - polyfill zepto detect event ajax form fx - zeptojs.com/license */ ;(function(undefined) { if (String.prototype.trim === undefined) // fix for iOS 3.2 String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''