【问题标题】:Html scroll: how to avoid it to "cut" my inner elementsHtml 滚动:如何避免它“剪切”我的内部元素
【发布时间】:2009-03-15 10:40:50
【问题描述】:

这个问题是针对自动完成下拉列表,当您在 html 文本框中书写时,我必须这样做。

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

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

如果您使用滚动条,它会以“像素”为单位向上或向下滚动,因此它会削减我的元素,使其看起来一点也不圆滑。

当您使用滚动条时,我想覆盖上下整个 div 元素的行为。我什至不知道如何用谷歌搜索这个......

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

提前非常感谢

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

【问题讨论】:

    标签: javascript jquery html internet-explorer firefox


    【解决方案1】:

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

    【讨论】:

    • 呃,恐怕没有比这更容易的事情了……真是一场噩梦!谢谢
    • 没有什么比赞成和接受的答案更能表达“感谢”的了! :)
    • 亲爱的上帝,我变成了什么?
    • @DanielEarwicker 开个玩笑,回复会是:“乞丐?”。
    【解决方案2】:

    你能不能不为那个元素触发一个“滚动”事件(DOM 3 事件为一个元素提供了一个滚动事件,不确定它的支持程度),这样每当滚动位置发生变化时,它就会调用一个小例程您自己通过四舍五入到最接近的“缺口”来调整滚动位置?

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

    【讨论】:

      【解决方案3】:

      第一:

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

      第二:

      您可以“修补” div,因此只有少数元素可见。当您滚动时,您会隐藏顶部的动画并在动画中显示底部的动画,而不使用 scrollTopscrollHeight

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

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

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

      【讨论】:

        【解决方案4】:

        这根本做不到,没有解决办法,句号。人们必须忍受这种限制。

        为什么没有解决方案?

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

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

        【讨论】:

        • 对不起,你错了。它可以在没有 preventDefault 的情况下完成。
        猜你喜欢
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-26
        相关资源
        最近更新 更多