答案 0 :(得分:0)
CSSTricks在如何做到这一点上有一个很好的例子(这是常见的解决方案)。
此解决方案的基础是您收听滚动事件并检查何时到达正确的位置(如果需要,可以以编程方式计算该点)。如果这样做,则向执行以下操作的标头添加一个类:
使标题颜色为您想要的颜色
制作标题position: fixed; top: <num>;
或position: absolute; top: <num>
(我已在现场看到两种解决方案)
!重要! position:absolute
解决方案不太安全,因为position: fixed
将元素相对于视口定位。 position:absolute
如果没有position:relative
的任何前任,position: sticky
将执行相同的 [更多信息,请查看this link]
有一个实验性的css功能,可以添加A = set(range(10,20))
B = set(range(5,17))
C = set(range(15,25))
D = set(range(18,30))
A.intersection(B).intersection(C)
set([15, 16])
A.intersection(B)
set([10, 11, 12, 13, 14, 15, 16])
A.intersection(C).intersection(D)
set([18, 19])
A.intersection(B).intersection(C).intersection(D)
set()
选项。从理论上讲,这将自己做粘性部分[你可以通过MDN旁边的实验徽章看到它的实验]。
https://css-tricks.com/scroll-fix-content/
它还包含一个demo,代码在codepen.io上。请注意,您需要滚动视图框(class =&#34; wrap&#34;)而不是页面本身。
答案 1 :(得分:0)
你必须结合一些事情。
首先,在标题position: fixed
然后您必须设置透明度。类似的东西应该足够了:opacity: 0.5
。您甚至可以使用RGBA指定颜色和透明度(我更喜欢这个):background-color: rgba(255, 0, 0, 0.3)
最后,您必须使用JavaScript绑定处理程序以滚动事件。如果你可以使用jQuery,这样的东西就足够了(我想你有一个id =&#34的元素;标题&#34;):
$("#header").scroll(myScrollHandler);
function myScrollHandler () {
if (window.pageYOffset > 50)
{
$("#header").fadeTo(200, 0.9);
}
else
{
$("#header").fadeTo(200, 0.3);
}
}
我使用了样本值,第一个是以ms为单位的持续时间,第二个是目标不透明度,其中0是不可见的,1是满的。如果我将页面的偏移量与标题开始出现之后的像素数进行比较。
所以,回顾一下,在你的CSS中你应该有这样的东西:
#header {
position: fixed;
top: 0;
width: 100%;
rgba(255, 0, 0, 0.3);
}
在你的html中就像这样
<script>
$("#header").scroll(myScrollHandler);
function myScrollHandler () {
if (window.pageYOffset > 50)
{
$("#header").fadeTo(200, 0.9);
}
else
{
$("#header").fadeTo(200, 0.5);
}
}
</script>
<div id="header">
Your header content
</div>