【发布时间】:2014-12-31 08:34:38
【问题描述】:
我想根据容器的滚动位置更改容器上的伪元素。我做了一个 jsfiddle 来演示我偶然发现的错误:http://jsfiddle.net/krzncu1k/1/
:after-元素显示当前滚动状态(“上半部分”或“下半部分”)。通过根据滚动位置切换 .upper-half 和 .lower-half 类来更改其内容:
.upper-half:after {content:'upper half'; top:0;}
.lower-half:after {content:'lower half'; bottom:0;}
对应的JS:
$wrap.toggleClass('upper-half', isUpper).toggleClass('lower-half', !isUpper);
当使用 Firefox 并通过拖动滚动条(而不是通过鼠标滚轮!)滚动时会发生该错误。如果你拖动它并穿过中间(类从.upper-half 变为.lower-half),你突然不能再拖动了。
关于为什么会发生这种行为以及如何解决它的任何想法?
【问题讨论】:
-
本身不是一个答案 - 看起来
toggleClass正在从 FF 的滚动条中移除焦点/鼠标,需要重新选择它 -
想法一样。所以这是一个错误?
-
这可能只是 FF 如何合理化对可滚动内容的更改的不同 - 注意
:after与元素的实际内容相关(它位于内容之后,在标签内),所以改变(位置)可能会被认为影响可滚动 - 失去焦点......或者它可能是一个错误:(
标签: javascript css firefox