Ich versuche, ein Logo nach rechts scrollen und schließlich in ein Hamburger-Symbol animiert werden. Hier ist ungefähr mein letztes Ziel, aber fertig, wenn die Seite geladen wird, anstatt zu scrollen. https://codepen.io/mthauv/pen/gxJNWqVersuch zu animieren und Element beim Scrollen
Ich begann mit dem Versuch, das Logo in die richtige Position zu bringen. Das Problem, das ich habe, ist, dass es nur funktioniert, wenn Sie sorgfältig scrollen. Wenn Sie zu schnell bewegen sie entweder geht zu weit oder nicht weit genug in Abhängigkeit von der Linie ...
if(target - mContainer.getBoundingClientRect().right > 0 || startLine - startLine * scrollY/240 > 16){
mContainer.style.right = startLine - startLine * scrollY/240 + "px";
check = mContainer.style.right.replace(/[^\d.-]/g, '');
}
Oder Aussage erlaubt es zu weit zu bewegen, wo ein und Anweisung ermöglicht es kurz zu stoppen. Ich habe ein paar andere Anweisungen ausprobiert, aber die meisten verhindern, dass das Logo beim Zurückscrollen zurückkehrt.
Hier ist der Stift https://codepen.io/mthauv/pen/aygNbe
HTML
<body>
<div id="logo-container" class="first-step">
<div id="m-container" onclick="toggleMenu('menu-btn')">
<div id="m-1" class="m"></div>
<div id="m-2" class="m"></div>
<div id="m-3" class="m"></div>
</div>
</div>
<div id="menu-container">
<ul id="menu">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
<div id="content-container" onclick="toggleMenu('body')">
<h1>Content</h1>
</div>
</body>
Und JS
var logoContainer = document.getElementById('logo-container');
var mContainer = document.getElementById('m-container');
var menuContainer = document.getElementById('menu-container');
var contentContainer = document.getElementById('content-container');
var m = document.getElementsByClassName('m');
var w = window.innerWidth;
var check = mContainer.style.right.replace(/[^\d.-]/g, '');
var startLine = w/2 - 90;
var totalDistance = window.innerWidth/2;
var target = window.innerWidth - 16;
mContainer.style.right = w/2 - 90 + "px"
window.addEventListener("resize", function(){
var w = window.innerWidth;
mContainer.style.right = w/2 - 90 + "px"
check = mContainer.style.right.replace(/[^\d.-]/g, '');
startLine = w/2 - 90;
totalDistance = w/2;
target = w - 16;
});
window.addEventListener('scroll', function(e){
var scrollY = (window.pageYOffset) ;
var x = scrollY/240;
if(target - mContainer.getBoundingClientRect().right > 0 || startLine - startLine * scrollY/240 > 16)
{
mContainer.style.right = startLine - startLine * scrollY/240 + "px";
check = mContainer.style.right.replace(/[^\d.-]/g, '');
}
});
Das funktioniert und ist so viel eleganter als das, was ich hatte. Plus es adressiert das Problem (das ich noch nicht gefunden hatte) der Fenstergrößenänderung nach etwas Scrollen. Danke dafür. – Matt