Ich habe mehrere divs absolut innerhalb seiner Eltern positioniert. Der Elternteil überläuft den Bildschirm und kann gescrollt werden.Ändern Position oben/links von Kindern unabhängig von der übergeordneten scrollTop Position
Beim Klicken sollten diese divs so positioniert werden, dass sie die Höhe des Bildschirms einnehmen (als ob sie ihre Position fixiert hätten). Jedem Div wird also eine bestimmte Breite und Höhe und ein Top-Wert zugewiesen. Das Problem ist, das funktioniert nur wie erwartet, wenn der Eltern nicht gescrollt wird (scrollTop = 0).
Ich möchte dies reibungslos mit CSS-Übergängen getan werden. Ich könnte einen Top-Wert zuweisen, der sich auf die Scroll-Position des Elternteils im Klick-Moment bezieht. Aber Ich suche nach einer CSS-Methode, um dies zu tun. Ich dachte daran, die Position in den Divs zu ändern, aber das ändert sich nicht.
Gibt es eine Möglichkeit, wie ich es funktionieren lassen könnte mit CSS?
Bearbeiten: Ich frage, ob jemand einen Vorschlag hat, wie dies mit CSS erreicht werden kann, oder etwas darüber nachdenken, wie man es anders angehen kann.
EDIT2: Diese GIF-Änderung nur die Position enthält (die Breite oder Höhe ist kein Wechsel), wie es ist, wo ich das Problem habe. Dies ist die gewünschte Lösung:
var $container = $('#container');
var $elements = $container.find('.element');
$container
.height(function() {
return ($elements.eq(-1).position().top - $elements.eq(0).position().top + $elements.eq(0).outerHeight());
})
.on('click', function() {
$elements.add($container).toggleClass('on');
});
#container {
width: 100%;
background: grey;
position: absolute;
}
.element {
border: 1px solid black;
position: absolute;
width: 100px;
height: 100px;
background: white;
left: 100px;
transition: all 1s ease;
}
.element:nth-child(2) {
top: 130px;
}
.element:nth-child(3) {
top: 340px;
}
.element:nth-child(4) {
top: 550px;
}
.element:nth-child(5) {
top: 660px;
}
.on.element {
left: 0;
height: 20vh;
width: 20vh;
}
.on.element:nth-child(2) {
top: 20vh;
}
.on.element:nth-child(3) {
top: 40vh;
}
.on.element:nth-child(4) {
top: 60vh;
}
.on.element:nth-child(5) {
top: 80vh;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
<div class="element"></div>
</div>
Was soll nicht auf 'scrollTop zu arbeiten = 0 ' –
Es nur auf scrollTop = 0. mich richtig sucht Let fügen Sie ein gif – Alvaro
Lassen Sie mich wissen, wenn das GIF nicht klar ist. – Alvaro