Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Html滚动条:如何避免它到";削减;我的内在因素_Javascript_Jquery_Html_Internet Explorer_Firefox - Fatal编程技术网

Javascript Html滚动条:如何避免它到";削减;我的内在因素

Javascript Html滚动条:如何避免它到";削减;我的内在因素,javascript,jquery,html,internet-explorer,firefox,Javascript,Jquery,Html,Internet Explorer,Firefox,这个问题是针对一个自动完成下拉列表,我必须这样做,当你在html文本框中写作时,它会触发 它基本上由一个包含建议元素的div组成,每个元素都是div 我已经到了它开始正常工作的地步,但现在我在包含的div中添加了一个垂直滚动条,以便您可以限制下拉列表的高度,我得到了以下行为: 如果你使用滚动,它会以“像素”的形式上下滚动,因此它会剪切我的元素,使它看起来一点也不光滑 我想重写在使用滚动时上下移动整个div元素的行为。我甚至不知道如何用谷歌搜索这个 任何人都知道这方面的有用资源,或者可以提供关于从

这个问题是针对一个自动完成下拉列表,我必须这样做,当你在html文本框中写作时,它会触发

它基本上由一个包含建议元素的div组成,每个元素都是div

我已经到了它开始正常工作的地步,但现在我在包含的div中添加了一个垂直滚动条,以便您可以限制下拉列表的高度,我得到了以下行为:

如果你使用滚动,它会以“像素”的形式上下滚动,因此它会剪切我的元素,使它看起来一点也不光滑

我想重写在使用滚动时上下移动整个div元素的行为。我甚至不知道如何用谷歌搜索这个

任何人都知道这方面的有用资源,或者可以提供关于从何处开始的任何提示,如果可以覆盖滚动移动事件,或者我应该查看另一个方向

提前多谢


注意:我不能使用jquery自动完成插件。

你可以实现你自己的滚动条,使用鼠标事件和手动更新位置。

你可以实现你自己的滚动条,使用鼠标事件和手动更新位置。

你不能点击该元素的“滚动”事件吗(DOM 3 Events为元素提供了一个滚动事件,但不确定它的支持程度),因此每当滚动位置发生变化时,它都会调用一个自己的小例程,通过将滚动位置四舍五入到最近的“凹口”来调整滚动位置


或者,您可以定期轮询滚动位置,并在滚动位置移动时进行调整。这似乎相当跨浏览器。

您是否可以点击该元素的“滚动”事件(DOM 3事件为元素提供滚动事件,但不确定其支持程度),这样每当更改滚动位置时,它都会调用您自己的一个小例程,通过将滚动位置四舍五入到最近的“凹口”来调整滚动位置


或者,您可以定期轮询滚动位置,并在滚动位置移动时对其进行调整。这似乎相当跨浏览器。

这根本无法做到。,没有解决方案,句号。必须接受此限制

为什么没有解决办法

因为即使您实现了自己的滚动条,您仍然必须依赖于滚动事件,这些事件既不能被取消,也不能阻止冒泡到body元素。实际上,它们不能,您可以调用preventDefault()和stopPropagation()这是标准化机构和浏览器实现者深思熟虑的决定


如果滚动事件是可取消的,那么EïpïrtEïchangeï可能会阻止您滚动到页面底部查看答案;)(别担心,我在“EïpïrtEïchangeï”中使用了一些西里尔字母,因此它们不会得到可索引的提及。)

这根本无法做到,没有解决方案,句号。人们必须接受这种限制

为什么没有解决办法

因为即使您实现了自己的滚动条,您仍然必须依赖于滚动事件,这些事件既不能被取消,也不能阻止冒泡到body元素。真的,他们不能,你可以调用preventDefault()和stopPropagation(),直到奶牛回家,它们还在冒泡。这是标准化机构和浏览器实现者经过深思熟虑的决定

如果滚动事件是可取消的,则EöpörtEöchangeö可能会阻止您滚动到页面底部以查看答案;)(别担心,我用了一些西里尔字母在“EƏpƏrtEƏchangeƏ”中,这样它们就不会被索引了)。

首先:

使用您自己的滚动条,创建一个滚动事件处理程序。在这里,您可以通过
delta
(可在
evt
中找到)使用动画,您可以通过顶部或底部可见元素的
offsetHeight
自行设置元素的
scrollTop
。此外,如果div高度确实切断了一个元素,只需使上一个或下一个元素稍微“高一点”,即设置它的高度以向上或向下推动切断的元素

第二:

您可以“修补”div,以便只有少数元素可见。当你滚动时,你可以隐藏最上面的一个,并在动画中显示最下面的一个,而不使用s
crollTop
scrollHeight

注意Firefox中的滚动事件。它有另一个名称,但您可以这样测试它:

eventName = eventName === 'mousewheel' ? ((/Firefox/i.test(navigator.userAgent)) ? "DOMMouseScroll" : eventName) : eventName;
祝你好运。如果你需要任何帮助,在大约2天,我会有它的实施,因为我也需要一个

首先:

使用您自己的滚动条,创建一个滚动事件处理程序。在这里,您可以通过
delta
(可在
evt
中找到)使用动画,您可以通过顶部或底部可见元素的
offsetHeight
自行设置元素的
scrollTop
。此外,如果div高度确实切断了一个元素,只需使上一个或下一个元素稍微“高一点”,即设置它的高度以向上或向下推动切断的元素

第二:

您可以“修补”div,以便只有少数元素可见。当你滚动时,你可以隐藏最上面的一个,并在动画中显示最下面的一个,而不使用s
crollTop
scrollHeight

注意Firefox中的滚动事件。它有另一个名称,但您可以这样测试它:

eventName = eventName === 'mousewheel' ? ((/Firefox/i.test(navigator.userAgent)) ? "DOMMouseScroll" : eventName) : eventName;

祝你好运。如果你需要任何帮助,在大约2天,我会有它的实施,因为我也需要一个

Uff,恐怕没有比这更容易的了。。。真是一场噩梦!感谢任何表达“感谢”的东西都像是一张赞成票和一个被接受的答案亲爱的上帝,我变成什么了?@DanielEarwicker就像一个笑话,回答是:“一个乞丐?”。Uff,恐怕没有比这更容易的了。。。真是一场噩梦!感谢任何表达“感谢”的东西都像是一张赞成票和一个被接受的答案亲爱的上帝,我变成了什么