zoukankan      html  css  js  c++  java
  • Js:offsetWidth的Bug

    offsetWidth 得到的并不是当前元素width的宽度,而是当前元素盒模型的宽度。
    例如:

    #div1{width:200px; height:200px; border:1px solid black; background:red; padding:5px;}
    <div>test<div>

    这个时候的offsetWidth应该是200px+1px(左边框)+1px(右边框)+5px(左内边距)+5px(右内边距)


    如果分不清这个会导致程序出问题。如下:

    <script>
        setInterval(funtion(){
            var oDiv = document.getElementById("div1);
            oDiv.style.width = oDiv.offsetWidth - 1 + "px";
    },30)
    </script>
    <style>
    #div1{width:200px; height:200px; border:1px solid black; background:red;}
    </style>
    <body>
        <div id="id1"></div>
    </body>

    div1会越来越宽,而不是越来越窄。
    因为定时器第一次执行时
    offsetWidth是202px,-1之后是201px赋值给width(这里是元素的实际宽度)
    定时器第二次执行时
    offsetWidth是203px(201之前赋值给width的值+2边框),-1之后是202px赋值给width
    ……
    所以div1会越变越宽而不是越变窄

  • 相关阅读:
    08测试环境配置_数据库配置
    11等价类
    15状态迁移
    12边界值分析法
    10用例格式
    python的转义字符和原字符
    13数据分析法
    14正交试验
    python软件安装
    cookie的secure属性
  • 原文地址:https://www.cnblogs.com/czm0718/p/5203935.html
Copyright © 2011-2022 走看看