与Chrome相比,IE11中计算的offsetWidth值有所不同

时间:2018-07-26 09:54:40

标签: javascript

我要做的是在显示下拉菜单元素之前先计算其宽度,然后将该宽度添加到下拉菜单元素中。

在Chrome中,JavaScript的工作方式是正确的,并给了我width: 349px正确的信息,但是在IE11中,由于某种原因,它计算出该元素的宽度为width: 89px,而我并不完全当然。

其他信息: 导航栏下拉列表的构建方式与stripe.com中的下拉列表类似,因此它们在第一次加载时就被隐藏了,尽管没有被display: none隐藏,而只是被opacity: 0隐藏,所以我不认为计算宽度应该是问题

问题出在下面的JS上,但以防万一,您需要用于下拉菜单的完整Javascript代码,我已将其上载到this pastebin

JS

this.dropdownSections.forEach(function(section) {
  section.el.classList.remove("active");
  section.el.classList.remove("left");
  section.el.classList.remove("right");

  if (section.name == dropdownName) {
    section.el.classList.add("active");
    className = "right";

    // Width of the element is calculated here
    ddWidth = section.content.offsetWidth;
    ddHeight = section.content.offsetHeight;

    section.content.style.width = ddWidth + "px";
    section.content.style.height = ddHeight + "px";

    activeContent = section.content;

    if (options && options.keyboardNavigation) {
      self.registerArrowKeyNavigation(rootEl, section.el);
    }
  } else {
    section.el.classList.add(className);
  }
});

从屏幕截图中可以看到,Chrome vs IE11的结果

Dropdown Image 1 Dropdown Image 2

0 个答案:

没有答案