EDIT: bewiesen, dass es nicht auf Firefox funktioniert, so Wahrscheinlich ist das nur eine seltsame Sache von Chrome, immer noch ein interessantes Verhalten, also werde ich diese Antwort hinterlassen, wenn jemand nur eine reine Chrome-Implementierung erstellen möchte oder wenn Firefox und andere Browser mitkommen.
Dort habe ich "feste" es (pun intended :))
Schauen Sie sich das Arbeits Geige: JSFiddle example of fixed, relative and overflow working together
Sie relative
Eltern mit overflow
verwenden können, um die Wirkung der wechselnden Farben zu imitieren .
Downside: Sie müssen Ihr Menü duplizieren (das ist semantisch gut, einfach falsch). Sie könnten einige grundlegende Javascript verwenden, um die Duplizierung des Menüs zu tun, das würde es ein wenig verbessern. Ich habe das auch nur auf Chrome getestet, aber es scheint wirklich einfaches CSS zu sein, also stelle ich mir vor, dass dies auf jedem Browser/Gerät funktioniert.
-Code-Schnipsel (die relevanten Teile)
HTML
<div class="topbar">
<h1>Whoo pink!</h1>
<div class="fixed-menu">Fixed!</div>
</div>
<div class="loads-of-content">
<div class="fixed-menu">Fixed!</div>
</div>
CSS
.topbar {
position: relative;
overflow: hidden;
z-index: 3;
}
.topbar .fixed-menu {
color: red;
}
.fixed-menu {
position: fixed;
top: 20px;
right: 50px;
}
.loads-of-content {
position: relative;
overflow: hidden;
}
Überprüfen Sie die [CSS-Clip-Eigenschaft] (https://developer.mozilla.org/en-US/docs/Web/CSS/clip). 'clip-path' ist neuer, wird aber nicht von IE unterstützt. – joews
Könnte eine Mischung aus Javascript und Farbverläufen verwenden, indem Sie unsichtbare Objekte platzieren, können Sie Skript verwenden, um zu überprüfen, ob das Menü das Objekt berührt und dann Frame für Frame, obwohl dies Probleme beim Zurückkehren verursachen kann. Sie können diese Objekte auch verschwinden lassen, wenn Sie an ihnen vorbeigehen und jeder für die Rückkehr verschwindet. Id Build eine ganze Lösung, aber ich bin nicht so stark mit Javascript, aber es wäre wie eine Animation, könnte auch ein Bild Sprite mit jedem Rahmen anstelle von Gradienten. – RyeNyeTheComputerScienceGuy
Hier ist ein Beispiel für die CSS-Clip-Eigenschaft wie zuvor erwähnt. Vielleicht könnten Sie dieses Beispiel analysieren und eine Lösung finden. http://codepen.io/lbebber/pen/xrwja –