我想在我的DIV顶部添加一个褪色部分,这样当用户滚动时,内容会逐渐淡出。我已经设置了一些实现此目的的CSS,但有一个问题..褪色部分滚动内容而不是保持固定。
我怎样才能解决这个问题?我是否需要jQuery的帮助,或者是否可以使用CSS,这适用于任何兼容CSS3的浏览器吗? (我知道我没有正确的供应商前缀 linear-gradient
但是)
这是我到目前为止的代码和一个 小提琴:
.fadedScroller {
overflow: auto;
position: relative;
height: 100px;
}
.fadedScroller:after {
content: '';
top: 0;
left: 0;
height: 20px;
right: 0;
background: linear-gradient(to bottom, rgba(251,251,251,1) 0%,rgba(251,251,251,0) 100%);
position: absolute;
}
更新
我已经更新了 我的小提琴 指出使用 position: fixed
并没有实际工作,因为褪色部分然后出现在包含div而不是固定在顶部。
创建第二个div以保持渐变并将其移动到内容div上。
我知道这有点脏,写起来也不是很直观,但它确实有用。
HTML:
<div class="fadedScroller">
...
</div>
<div class="fadedScroller_fade"></div>
CSS:
.fadedScroller {
overflow: auto;
position: relative;
height: 100px;
}
.fadedScroller_fade {
content:'';
margin-top: -100px;
height: 40px;
background: linear-gradient(to bottom, rgba(251, 251, 251, 1) 0%, rgba(251, 251, 251, 0) 100%);
position: relative;
}
演示:
http://fiddle.jshell.net/hP3wu/12/
很简单,使用 position:fixed
代替 position:absolute
:
.fadedScroller:after {
content:'';
position: fixed;
top: 0;
left: 0;
height: 20px;
right: 0;
background: linear-gradient(to bottom, rgba(251, 251, 251, 1) 0%, rgba(251, 251, 251, 0) 100%);
}
https://jsfiddle.net/hP3wu/4/
UPDATE1
https://jsfiddle.net/hP3wu/7/
UPDATE2
https://jsfiddle.net/hP3wu/9/
这是一个 巨大 解决方案,所以道歉,但这是我能想到的唯一方法: http://fiddle.jshell.net/hP3wu/17/
所以首先我做了另一个 div
同 class="after"
因为我无法选择 :after
使用JQuery的伪元素
然后我做了 div.after
每次滚动发生时重新定位自己 .fadedScrollbar
div
同
$(".fadedScroller").scroll(function () {
$(".fadedScroller .after").css("top", $(this).scrollTop());
});
http://fiddle.jshell.net/ne1baj4e/1/ 这是我对yckart解决方案的修改,它可以在div滚动到顶部时减少淡入淡出。它只是添加了一点Javascript / JQuery:
const FADE_HEIGHT = 40;
let oldStyle = $(`<style>.fadedScroller:after {top: -${FADE_HEIGHT}px;}</style>`).appendTo("head");
$(".fadedScroller").scroll(() => {
let offset = Math.min($(".fadedScroller").scrollTop() - FADE_HEIGHT, 0);
oldStyle.remove();
oldStyle = $(`<style>.fadedScroller:after {top: ${offset}px;}</style>`).appendTo("head");
});
div底部的淡入淡出是类似的,除非你需要计算偏移量
$(".fadedScroller")[0].scrollHeight - $(".fadedScroller")[0].clientHeight - $(".fadedScroller")[0].scrollTop