Wie kann der Scroll-Button ausgeblendet werden bzw. eingeblendet?
Warum funktioniert es nicht, der Button bleibt von Anfang bis Ende der Seite eingeblendet.
Ich möchte eine JS -Funktion schreiben, die diesen Button erst einblendet, wenn der Nutzer ein Stück weit herunter gescrollt hat. Ebenso soll der Button versteckt werden, wenn der Nutzer wieder nach oben gescrollt hat.
Mein bisheriger Code:
HTML:
<a href="#" id="topButton">Nach oben</a>
CSS:
#topButton {
position: fixed;
bottom: 20px; /* Abstand vom unteren Rand */
right: 30px; /* Abstand vom rechten Rand */
background-color: #007BFF; /* Blau */
color: white; /* Weißer Text */
padding: 10px 15px; /* Innenabstand */
border: none; /* Kein Rand */
border-radius: 5px; /* Abgerundete Ecken */
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); /* Schatten */
text-decoration: none; /* Keine Unterstreichung */
font-size: 14px; /* Schriftgröße */
cursor: pointer; /* Zeiger-Hand-Symbol */
transition: background-color 0.3s ease, transform 0.2s ease; /* Animation */
}
#topButton:hover {
background-color: #0056b3; /* Dunkleres Blau beim Hover */
transform: translateY(-2px); /* Leichtes Anheben beim Hover */
}
#topButton:active {
transform: translateY(0); /* Zurücksetzen bei Klick */
}
JavaScript:
// Element auswählen
let topButton = document.getElementById("topButton");
// Scroll-Event-Listener hinzufügen
window.addEventListener("scroll", function() {
// Zeigt den Button an, wenn mehr als 50px gescrollt wurde
if (window.scrollY > 50) {
topButton.style.display = "block"; // Button wird sichtbar
} else {
topButton.style.display = "none"; // Button wird versteckt
}
});
// Klick-Event für den Button
topButton.addEventListener("click", function(event) {
event.preventDefault(); // Standard-Aktion verhindern
window.scrollTo({
top: 0, // Scrollt nach oben
behavior: "smooth" // Sanftes Scrollen
});
});
1 Antwort
Vom Beitragsersteller als hilfreich ausgezeichnet
Da du deinem <a> Tag keine display Eigenschaft im CSS gibst, hat er automatisch ein display:inline;
Schreib hier also einfach ein display:none; mit rein
#topButton {
display:none;
position: fixed;
bottom: 20px; /* Abstand vom unteren Rand */
right: 30px; /* Abstand vom rechten Rand */
background-color: #007BFF; /* Blau */
color: white; /* Weißer Text */
padding: 10px 15px; /* Innenabstand */
border: none; /* Kein Rand */
border-radius: 5px; /* Abgerundete Ecken */
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); /* Schatten */
text-decoration: none; /* Keine Unterstreichung */
font-size: 14px; /* Schriftgröße */
cursor: pointer; /* Zeiger-Hand-Symbol */
transition: background-color 0.3s ease, transform 0.2s ease; /* Animation */
}
siehe https://jsfiddle.net/yLpuwkqm/
In dem Beispiel hab ich html mal noch ne Höhe von 1000px gegeben, weil es sonst nix zu scrollen gäbe.
alpakka892
15.01.2025, 14:49
@haveyou
in meinem fiddle geht es doch, oder? und mehr hab ich an deinem Code nicht verändert.
Funktioniert leider immer noch nicht, soweit ich weiß muss man das anhand das JS machen