gpt4 book ai didi

javascript - 更改 :after Contents 时 Firefox 滚动错误

转载 作者:行者123 更新时间:2023-11-29 21:53:31 24 4
gpt4 key购买 nike

我想根据容器的滚动位置更改容器上的伪元素。我做了一个 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 的地方)你突然不能再拖了。

关于为什么会出现这种行为以及如何解决它有什么想法吗?

最佳答案

不知道为什么在 Firefox 中会出现这种情况,但我有一个解决方法。使用 :before 创建上半部分,使用 :after 创建下半部分,并在类更改时以不透明度隐藏和显示。也可以加入平滑的 transition。由于位置没有改变,所以这个错误被阻止了。

(您也可以使用 display: none 代替不透明度,但它不能被转换)

工作示例

$(function() {
var $wrap = $('.wrap'),
$ul = $('ul'),
ulHeight = $ul.height();

$ul.scroll(function(e) {
var isUpper = (this.scrollTop + ulHeight / 2) / this.scrollHeight <= 0.5;
$wrap.toggleClass('upper-half', isUpper).toggleClass('lower-half', !isUpper);
});
});
ul {
overflow: auto;
max-height: 200px;
background-color: #ddd;
}
li {
font-size: 200%;
}
.wrap {
position: relative;
width: 200px;
}
.wrap:before,
.wrap:after {
position: absolute;
left: 0;
width: 100px;
height: 40px;
background-color: rgba(128, 128, 128, 0.3);
text-align: center;
color: white;
line-height: 40px;
transition: opacity 0.5s;
}
.wrap:before {
content: 'upper half';
top: 0;
}
.wrap:after {
content: 'lower half';
bottom: 0;
}
.upper-half:after {
opacity: 0;
}
.lower-half:before {
opacity: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="wrap upper-half">
<ul>
<li>Some</li>
<li>Random</li>
<li>Bullet</li>
<li>Points</li>
<li>Just</li>
<li>To</li>
<li>Make</li>
<li>This</li>
<li>Awesome</li>
<li>List</li>
<li>A</li>
<li>Little</li>
<li>Longer</li>
<li>And</li>
<li>Longer</li>
<li>And</li>
<li>Longer</li>
</ul>
</div>

关于javascript - 更改 :after Contents 时 Firefox 滚动错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27718393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com