我要做的是在显示下拉菜单元素之前先计算其宽度,然后将该宽度添加到下拉菜单元素中。
在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的结果