JavaScript中无法通过div.style.left获取值的解决方法

在前端开发中,我们可能会遇到无法通过 div.style.left 获取元素左偏移量的问题。这种情况通常发生在元素使用了绝对定位(absolute)或固定定位(fixed)时。

问题分析

为什么无法通过 div.style.left 获取值呢?这是因为这个属性只能获取内联样式(inline style)设置的值,而不能获取通过 CSS 样式表设置的值。当一个元素使用了绝对定位或固定定位时,其位置可以通过 CSS 样式表中的 left 属性进行设置,而不是通过内联样式进行设置。因此,使用 div.style.left 获取不到正确的值。

解决方案

要获取元素的真实左偏移量,可以使用 getComputedStyle() 方法来获取计算后的样式(computed style)。该方法返回一个包含所有计算后样式属性的对象,并且这些属性都是字符串类型。可以从中提取出所需的属性值,如下所示:

-- ----------
--- ------------- - ----------------------

-- ----------
--- ---- - -------------------

需要注意的是,获取到的值是一个字符串类型,如果需要数值类型,则需要进行转换,例如:

--- ------- - ---------------

示例代码

--------- -----
------
------
  ----- ----------------
  -----------------------
  -------
    ------ -
      --------- ---------
      ----- ------
      ---- -----
      ------ ------
      ------- ------
      ----------------- -------
    -
  --------
-------
------
  ---- --------------- --- ---------
  --------
    --- --- - ---------------------------------
    --- ------------- - ----------------------
    --- ---- - -------------------
    ------------ -- -------
    --- ------- - ---------------
    --------------- -- ---
  ---------
-------
-------

结论

在使用绝对定位或固定定位时,无法通过 div.style.left 获取元素的左偏移量。可以使用 getComputedStyle() 方法来获取计算后的样式,并从中提取出所需的属性值。这种方法对于获取元素的其他计算后样式属性也是适用的。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/2033