【问题标题】:firefox scrollHeight vs overflowFirefox scrollHeight vs溢出
【发布时间】:2013-04-12 17:47:32
【问题描述】:

demo

HTML:

<div id="relative">
  <div id="absolute"></div>
</div>

CSS:

#relative {
  position : relative;
  width    : 200px;
  height   : 200px;
  overflow : visible;
}
#absolute {
  position   : absolute;
  width      : 200px;
  height     : 300px;
  background : #eee;
}

JavaScript:

console.log($("#relative").get(0).scrollHeight);
$("#relative").css({
  "overflow-x" : "hidden",
  "overflow-y" : "scroll"
});
console.log($("#relative").get(0).scrollHeight);

它在 chrome 中返回“300, 300”,在 Firefox 中返回 9, “200, 300”。

有没有办法在不改变溢出的情况下检测“300”?

【问题讨论】:

  • 你想做什么?请详细解释。

标签: javascript html css firefox


【解决方案1】:

没有滚动条 = 没有 scrollHeight。

当一个元素的内容不产生垂直滚动条时,它的 scrollHeight 属性等于它的 clientHeight 属性。

https://developer.mozilla.org/en-US/docs/DOM/element.scrollHeight

【讨论】:

  • 你不想只取子元素的高度吗? $('#relative > div') 还是只是 $('#absolute')?
  • 这只是一个例子。真实网页中有大量嵌套的相对和绝对元素。检测 scrollHeight 是使自定义滚动条正常工作的唯一方法
  • var 高度 = 0; $('#parent > div').each(function(){ height = height + $(this).height() });没有?
  • 我不知道“я ржал в голос”在英语中的正确用法。也许“我笑得很厉害”=)
  • 您可以在任何序列中嵌套任意数量的相对和绝对块。只有 scrollHeight 可以检测是否从根块中弹出了某个绝对块
猜你喜欢
  • 2013-01-31
  • 2011-05-21
  • 2012-04-18
  • 2010-11-11
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
相关资源
最近更新 更多