HTML Ankerlinks funktionieren nicht?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Ich denke, das liegt einfach daran, dass die Seite etwas braucht, um korrekt zu laden. Jeder moderne Browser kann Profiling:

Bild zum Beitrag

Das meiste davon (gelb) ist Javascript. Lila zeigt "Layout", also neu-Ausrichten der Seite. Darunter in Transparent-Blau sind die Netzwerk-Anfragen zu sehen, welche ebenfalls etwas brauchen.

Wenn der Browser nicht weiß, wo was hinkommt, kann er natürlich nicht die Position für den Link halten.

Dagegen etwas zu tun, ist etwas komplizierter. Es hilft, so vielen Elementen wie möglich eine explizite Größe zu geben oder zumindest das Layout so zu gestalten, dass es früh feststeht. So kann der Rest dann laden, ohne alles zu verschieben.

Zur Not können auch Elemente zunächst versteckt sein und dann durch JS nach dem Laden gezeigt werden, sodass es nicht ständig flackert (css display).

Ebenfalls ist es mit Javascript möglich, den Anker abzufangen und erst wieder zu setzen, wenn die Seite geladen ist (https://developer.mozilla.org/en-US/docs/Web/API/Location/hash)

 - (programmieren, HTML, WordPress)

BadgerSlayer 
Beitragsersteller
 25.10.2024, 13:12

Danke! Das war es tatsächlich :) Ich habe das ganze jetzt per code in head tag (danke an ChatGPT :D) gelöst:

<script> window.onload = function() { if (window.location.hash) { setTimeout(function() { const target = document.querySelector(window.location.hash); if (target) { target.scrollIntoView({ behavior: 'smooth', block: 'start' }); } }, 500); } }; </script>

Danke für die Hilfe!