Automatisch Scrollen?
Hallo,
auf meiner Website hab ich 2 Icons, die durch eine Klick Funktion jeweils ein Div darunter erscheinen lassen.
Sobald ein Div erscheint oder ich die passende Klasse hinzufüge soll nun zu den passenden Div runter oder zum Seitenanfang gescrollt werden.
Wo liegt der Fehler ?...ich steh etwas aufm Schlauch.
Das Problem muss nicht unbedingt mit einer Scroll function gelöst werden =)
function klick() {
let hauptDiv = document.getElementById('div_eins');
if (hauptDiv.classList.contains('unsichtbar') == true) {
hauptDiv.classList.remove('unsichtbar');
hauptDiv.classList.add('sichtbar');
window.scrollTo(0, 100);
} else if (hauptDiv.classList.contains('sichtbar') == true) {
hauptDiv.classList.remove('sichtbar');
hauptDiv.classList.add('unsichtbar');
} else {
return;
}
}
1 Antwort
Eine Frage: "Wozu JavaScript dafür?"
Einfach
<a href="#eins">Runter zu eins</a>
<a href="#zwei">Runter zu zwei</a>
<div id="eins"></div>
<div id="zwei"></div>
wilst du noch smooth scroll dann im CSS code
html {
scroll-behavior: smooth;
}
Das Beispiel zeigt dir genau wie es funktioniert. Mit nem <a> Tag arbeiten und zu den ID's der Div's verlinken
Bitte hol nicht gleich den Knüppel ausm Sack, aber warum kann ich nicht auch mein image (icon) als link nutzen ? Wenn doch nur href gesetzt werden muss... ?
Und ich frage mich immer noch warum mein Fenster nicht scrollen will per window.scroll() =D
Da a ein Link ist. Nicht jedes html Element hat die selbe Aufgabe/Funktion und unterstützt somit nicht alle Attribute.
Das heißt wenn ich das richtig nachgelesen hab, ich packe mein image mit in den link.
Also wenn ich das richtig sehe hast du 2 Optionen:
- bild in den a Tag rein packen /*Ist aber glaube ich kein valides html5*/
- a Tag als bild stylen mit css und background-image
hab das Bild jetzt in de Tag gepackt. Funzt leider auch nicht.. Sobald ich aufs Image klicke springt er zum Anfang der Website =(
Ich geb dir mal ein Beispiel für whgofflien's 1. Beispiel :)
<a href="#div1"><img src="assets/images/img1.png" width="Breite deines Bilder" heigh="Höhe deines Bilder"></a>
Damit erreichst du, das, wenn du auf dein Bild klickst, du zum Div mit der ID "div1" scrollst.
Hier mal ein Beispiel aus meinem aktuellen Projekt:
<a class="nav-link dropdown-toggle hide-arrow" href="javascript:void(0);" data-bs-toggle="dropdown">
<div class="avatar avatar-online">
<img src="assets/img/avatars/1.png" alt class="w-px-40 h-auto rounded-circle" />
</div>
</a>
Das das Bild in nem DIV ist sei mal dahingestellt. Wenn du jetzt dort statt javascript:void(0) eben dein "#div1" einträgst, funktioniert es genauso :)
und ich meinte natürlich "height", anstelle von "heigh" bei meinem ersten Codebeispiel. ^^
Vielen vielen Dank, habs verstanden und auch schon Umgesetzt. Mein Fehler lag darin, dass ich die falsche Html im Browser offen hatte..... deswegen hatte ich die letzten 10 min keine Veränderung festgestellt *kopfschüttel*... Dass dann auch keine Fehler in der Konsole geloggt werden is auch klar.. . Ich such mir jetzt ein Loch und versinke darin.
Mache seit gestern Morgen eine Übung nach der nächsten, komme nicht mehr von dem Kram weg :D .. hatte 4std Schlaf und MUSSTE =) dann weiter machen..
Jetzt werde ich aber mal kurz den Bildschirm abschalten, sehe kaum noch den Text, die vom Kreislauf verzerrte Optik dominiert.
Nochmals Danke für die Hilfe, solche netten Menschen wie Sie machen diese Plattform zu dem was sie ist... Genial ! DANKE
Sehr gern!
Freut mich das ich dir helfen konnte :)
Mir wird auf dieser Plattform ja auch oft geholfen^^
Ich wünsch dir nen schönen Tag :)
Zu der Frage,
ich lerne im Moment aus Spass javascript. In Verbindung mit Html und Css kann das einen schon ganz schön bei Laune halten. Die möglichkeiten und "schnellen" Ergebnisse haben mich fasziniert =)
(ich habe und hatte weder beruflich noch schulisch was mit IT zu tun :D)
Muss ich wenn ich mit JavaScript das href attr setzen will, es auch vorher in der Html Datei ohne inhalt in den Tag einfügen (href=' ' ) ??
Wenn du das href von deinem js code aus dynamisch verändern willst/musst, dann kannst du sowas machen (angenommen der a Tag hat id="link")
let link = document.querySelector('#link');
link.setAttribute('href','neuerWert');
siehe https://developer.mozilla.org/de/docs/Web/API/Element/setAttribute
Nimm einfach genau das hier ;)