JavaScript中offset系列和scroll系列的总结

获取元素样式属性值

在写js代码的时候经常需要获取元素样式属性值,js中获取该值的基本方法有两种,分别是offset系列和getComputedStyle(或者currentStyle)两种,现在对两种方法分别做总结。

一、offset系列

1、定义以及用法

offset:js代码中是无法通过“对象.style.属性名”来获取属性值的,所以此时需要用到offset系列api来完成。常用的offset系列有四个,分别是offsetLeft(获取元素样式属性left的值),offsetTop(获取元素样式属性top的值),offsetWidth(获取元素样式属性width的值),offsetHeight(获取元素样式属性height的值)。用法是“元素对象.offset系列”。

2、注意事项

1、虽然在写元素样式属性值的时候带有单位px(或者其他单位),但是offset系列获取的属性值是没有单位的,所以可以直接做算数运算,并且在赋值给其他元素的时候,不要忘记加单位(+“px”或者其他);
2、offset系列得到的值并不是样式中的直接量。其中,offsetLeft获取的是left和margin-left属性值的和,offsetTop获取的是top和margin-top属性值的和,offsetWidth获取的是width和2倍padding以及2倍border的属性值的和。offsetHeight获取的是height和2倍padding以及2倍border属性值的和。因此在使用的过程中一定要注意这些问题。例如,当元素未脱离文档流的时候,设置left属性的值为200px,当使用offsetLeft的值就是零,而并不是样式中写的200px。

二、getComputedStyle和currentStyle

1、定义以及用法

getComputedStyle:使用getComputedStyle可以获取样式属性的直接量(属性名称冒号后边的值和单位),用法是window.getComputedStyle(element,null)[attr],其中element表示元素,attr表示需要获取的属性名称
currentStyle:使用currentStyle同样可以获取样式属性的直接量(属性名称冒号后边的值和单位),用法是element.currentStyle[attr];其中element表示元素,attr表示需要获取的属性名称
上述两种方法是针对不同浏览器的处理方式,第一种针对的是谷歌浏览器和火狐浏览器,第二种针对的是IE8浏览器,所以需要做兼容处理。兼容处理代码如下:
function getStyle(element,attr) {
return window.getComputedStyle? window.getComputedStyle(element,null)[attr]:element.currentStyle[attr];
}

2、注意事项

1、上述两种方法返回的是字符串,所以当需要进行运算处理的时候,需要用parseInt转换成数值之后再进行相应的运算和赋值
2、计算完成后进行赋值的时候不要忘记与“px”进行拼接,否则无法实现效果。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScriptoffsetscroll和client都是针对元素位置和大小的属性。 1. offset offset指的是一个元素相对于其定位父元素的位置。offset包含了元素的位置(left和top)和大小(width和height),以像素为单位。offset属性是只读的。 例如,假设有一个元素div,它的位置是相对于其父元素的,那么可以通过以下方式获取它的offset属性: ``` var div = document.getElementById("myDiv"); var offsetLeft = div.offsetLeft; var offsetTop = div.offsetTop; var offsetWidth = div.offsetWidth; var offsetHeight = div.offsetHeight; ``` 2. scroll scroll指的是一个元素的滚动位置。scroll包含了元素在水平和垂直方向上的滚动位置(scrollLeft和scrollTop),以像素为单位。scroll属性是可读写的。 例如,假设有一个元素div,它有滚动条,那么可以通过以下方式获取它的scroll属性: ``` var div = document.getElementById("myDiv"); var scrollLeft = div.scrollLeft; var scrollTop = div.scrollTop; ``` 3. client client指的是一个元素的可见区域大小。client包含了元素在水平和垂直方向上的可见区域大小(clientWidth和clientHeight),以像素为单位。client属性是只读的。 例如,假设有一个元素div,它有一些内容,但是只有一部分是可见的,那么可以通过以下方式获取它的client属性: ``` var div = document.getElementById("myDiv"); var clientWidth = div.clientWidth; var clientHeight = div.clientHeight; ``` 区别: 1. offset包含了元素的位置和大小,而client只包含了元素的可见区域大小。 2. scroll和client都只包含了元素在水平和垂直方向上的属性,而offset包含了元素相对于其定位父元素的属性。 3. offset和client是只读的,而scroll是可读写的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值