Ich bin auf der Suche nach einer besseren Lösung für Sticky Bar Problem.Sticky Floating Bar: genaue Position
Die '-----' zwischen 2. & 3. Box ist ein Schwellenwert, ab dem die klebrige Leiste angezeigt werden soll. Wenn es angezeigt wird, überlappt es die dritte Box vollständig.
In der realen Lösung habe ich css (margin-top) mit jQuery hinzugefügt, um dieses Element darunter zu schieben; aber das Problem ist, dass es in Firefox nachläuft. Man kann diesen Bereich für Sekundenbruchteile auf UI sehen.
Was ist die beste Lösung, um die Ausgabe zu erzielen (oder Margin-Top zu vermeiden)?
$(document).ready(function(){
function toggleDock() {
if($(window).scrollTop() >= $('.second').offset().top+$('.second').height()) {
$('.sticky').show();
}
else {
$('.sticky').hide();
}
}
$(window).bind('scroll',toggleDock);
});
.box {
border: 1px dotted red;
height: 100px;
width: auto;
margin: 20px 0;
}
.sticky {
height: 80px;
border: 1px dotted green;
margin: 20px 0;
display: none;
position: sticky;
top: 20px;
background: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body class='page docked'>
<div class='sticky'>
</div>
<div class='box'>
First
</div>
<div class='box second' >
2nd
</div>
-------
<div class='box'>
3rd
</div>
<div class='box'>
4th
</div>
<div class='box'>
5th
</div>
<div class='box'>
6th
</div>
<div class='box'>
7th
</div>
<div class='box'>
8th
</div>
</body>
Entschuldigung .. aber es scheint, dass ich nicht in der Lage war zu sagen, was die gewünschte Erwartung ist. Wenn Sie beobachtet haben, wenn Sticky angezeigt wird, sollte es die dritte Box darunter schieben und etwas Platz für die Sticky machen. Was gerade oder in meiner Lösung passiert, überlappt die dritte Box. Das ist nicht was ich will. – Robin
Hallo @Robin, ich denke ich verstehe es besser. Können Sie das aktualisierte Code-Snippet ausprobieren? Es versetzt das 'sticky'-div in den normalen Ablauf zurück und verwendet die' hide/show'-Funktionen, die intern die 'display'-CSS-Eigenschaft umschalten. –