width 与 offsetWidth 的区别

比较width 与 offsetWidth 的区别
1、offsetWidth >= width 
 offsetWidth = width + padding +  border; 

2、offsetWidth 属性仅仅可读,而style.width 是可写的; 
所以通常用 style.width用作进JavaScript中设置元素的宽度,而offsetWidth不可以。

3、offsetWidth 属性返回值是整数,如果实际值是小数,会根据实际值进行四舍五入操作,返回处理后的整数。width=44.499px;输出结果为49; 
width=44.5px;输出结果为45; 
而style.width的返回值是字符串,并且带有单位 
width=44.499px;输出结果为44.499px;

4、style.width仅仅能返回以style方式定义的内部样式表的width属性值。 
因此样式写在行内的时候<div id="box" style="width:100px">,用style.width或者offsetWidth都可以获取元素的宽度; 
如果写在css样式表中的时候,.box{width:100px;},此时只能用offsetWidth来获取元素的宽度,而style.width所返回的值为空
但是也不绝对

例如

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style type="text/css">
    div{
        position: absolute;
        background: red;
        width: 10px;
        height: 10px;
    }
</style>
<script type="text/javascript">
window.onload = function(){
    var oDiv = document.getElementsByTagName('div');
    document.onmousemove = function(ev){
        // var oScrollTop = document.documentElement.scrollTop || document.body.scrollTop; 
        // var oScrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft
        // 这个地方用的是style.left而不是offsetLeft.
        var oEvent = ev || event;
        for (var i = oDiv.length -1 ; i > 0; i--) { 

            // oDiv[i].style.left = oDiv[i-1].offsetLeft +'px'  ;
            // oDiv[i].style.top = oDiv[i-1].offsetTop + 'px' ;
            oDiv[i].style.left = oDiv[i-1].style.left  ;
            oDiv[i].style.top = oDiv[i-1].style.top ;
            console.log(oDiv[i].style.top)
        }  
        oDiv[0].style.left = oEvent.clientX +'px';     
        oDiv[0].style.top = oEvent.clientY +'px';    
    }
}
</script>
</head>
<body>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值