Ich kann nicht aufhören, an diese Seite zu denken. Es sieht nach einer ziemlich Standardkost aus; eine Website mit Links zu verschiedenen Seiten. Nichts Besonderes, außer dass… die ganze Website in einer einzigen HTML-Datei enthalten ist.
Was ist mit dem Klicken auf die Navigationslinks, fragen Sie? Jeder Link zeigt und verbirgt lediglich bestimmte Teile des HTML.
<section id="home">
<!-- home content goes here -->
</section>
<section id="about">
<!-- about page goes here -->
</section>
Jede <section> wird mit CSS versteckt
section { display: none; }
Jeder Link in der Hauptnavigation verweist auf einen Anker auf der Seite
<a href="#home">Home</a>
<a href="#about">About</a>
Und sobald Sie auf einen Link klicken, wird die <section> für diesen speziellen Link über
section:target { display: block; }
Sehen Sie diesen :target Pseudo-Selektor? Das ist die Magie! Sicher, er existiert schon seit Jahren, aber das ist eine clevere Art, ihn zu nutzen. Meistens wird er verwendet, um den Anker auf der Seite hervorzuheben, sobald ein Ankerlink darauf geklickt wurde. Das ist eine praktische Möglichkeit, dem Benutzer zu helfen zu wissen, wohin er gerade gesprungen ist.
Wie auch immer, die Verwendung von :target auf diese Weise ist super clever! Es sieht aus wie eine normale Website, wenn man herumklickt.
Verdammt – ich liebe das.
Ich mag die ganze Idee, sie ist fast perfekt, aber…
Lazy Loading wird nicht gut unterstützt
https://caniuse.com/loading-lazy-attr
Safari wird alles auf einmal laden, besonders auf Mobilgeräten, habe ich Recht?
Keine Respektlosigkeit, aber… das ist NICHTS.
Schauen Sie sich tiddlywiki.com an, wenn Sie die leistungsstärkste HTML-Datei sehen möchten, die Sie sich vorstellen können.
Aber da ist viel JavaScript.
Noch eine dieser Sachen, bei denen man sich fragt: "Warum bin ich da nicht selbst drauf gekommen?"
Clever.
Genau so haben wir früher Flash-Websites gemacht. Komplett mit Hash-Bangs und allem Drum und Dran. Was kann da schon schiefgehen?!
Was ist mit der Indexierung von
display:none;Abschnitten durch Suchbots? Würden die das nicht ignorieren?Nein, meines Wissens nach führen Suchmaschinen-Indexierungsbots kein CSS aus, sie sehen sich den Quellcode an.
Ich bin mir da nicht ganz sicher. Ja, natürlich sehen sich Bots den Quellcode an. Aber sie wissen, was versteckte Inhalte sind. Sie führen JavaScript aus. Sie sind sehr schlau, und wenn Sie etwas tun, das nur sehr wenige andere Seiten tun, denke ich, es ist berechtigt, sich Sorgen zu machen, dass ein Bot, der für Milliarden von Seiten entwickelt wurde, bei einem Ausreißer möglicherweise nicht richtig funktioniert.
Anstatt
display: nonezu verwenden, sollten die Abschnitte inklusiv versteckt werden (https://www.scottohara.me/blog/2017/04/14/inclusively-hidden.html), um mögliche Probleme mit Web-Crawlern zu beheben.Sehr interessant! Leider wird, es sei denn, der Seitentitel wird ebenfalls aktualisiert, die Browser- (oder Zurück-Button-)Historie schnell völlig unbrauchbar.
Der Zurück-Button und die Historie funktionieren bei mir (auf Firefox) mit der Beispielwebsite in diesem Beitrag einwandfrei.
Aber denken Sie an den unnötigen Datenverkehr. Wenn ich den Inhalt nur einer Seite sehen möchte, lade ich den gesamten Inhalt ohne Grund. Sie könnten sagen, das spielt bei den heutigen Breitbandleitungen keine Rolle, aber was ist mit mobilen Nutzern?
Man kann es auch mit Eleventh SSG haben: Solo
Ich verwende einen ähnlichen Trick auf einer meiner Websites: Fast die gesamte Website verwendet kein JavaScript außer auf einer Permalink-Seite, aber es gibt einen reinen CSS-Fallback für den Fall, dass JavaScript aus irgendeinem Grund nicht funktioniert.
Sie können es hier überprüfen (der Inhalt ist übrigens auf Portugiesisch). Funktioniert mit oder ohne JavaScript. Erfordert einen Klick, aber es funktioniert.
All die Jahre und ich kann nicht glauben, dass ich nie daran gedacht habe,
:targetauf diese Weise zu verwenden!Sehr interessant in der Tat.
Wird überall unterstützt
https://caniuse.com/?search=%3Atarget
Ich denke, Ihnen könnte dieses kleine verrückte Projekt gefallen, das vor 10 Monaten entstanden ist. Dies ist ein 'Pixelzeichner' nur mit HTML/CSS: https://sdp.iglou.eu/
Oder meine alte persönliche Website mit 0 % JS und viel Ankerverwendung: https://iglou.eu/
Sehr interessantes Konzept! Ich denke, es könnte JavaScript für teilweise oder alternative Inhalte ersetzen, wenn angebracht. Wie z. B. die Anzeige von markierten Elementen aus einer Blog-Liste oder Navigation auf kleinen Bildschirmen. Die Art von Inhalten, die nicht unbedingt ihren eigenen Titel und Meta-Tags benötigen. Wahrscheinlich eine gute Alternative zu einem vollständigen Seiten-Neuladen in einigen Fällen in einer Jamstack-Architektur. Vielen Dank für das Teilen!
Ist es möglich, den aktuell ausgewählten Link (mit CSS) auszuwählen?
Das sieht für mich wie eine SPA aus. Sie hat sogar (buchstäblich!) CSR.
Sehr cool.
Gepaart mit einem guten SSG ist eine Ein-Seiten-Website eine Gewinnerticket für kleine Projektdokumentationen oder Entwicklerblogs.
Keine Notwendigkeit, sich um clientseitiges JavaScript zu kümmern.
Ich habe Solo mit diesem Gedanken im Hinterkopf innerhalb weniger Tage entwickelt, nachdem ich Gregorys Repository entdeckt hatte.
Aufbauend auf Gregorys großartigem Konzept habe ich einen Single-File-Blog-Generator namens PHPetite entwickelt.
https://phpetite.org
(Nur für zukünftige Leser dieser Kommentare)
Ich hasse es, altmodisch zu klingen, aber so haben wir früher Websites gebaut.
Das ist lustig. Ich habe etwas überraschend Ähnliches in den Jahren 2002-2003 (mit Hilfe von einfachem JS) für ein Universitäts-Projekt gemacht. Mein Tutor sagte mir damals: « Interessant, aber zu seltsam, um verallgemeinert zu werden »
Als ich den Titel sah, dachte ich, dies wäre ein weiteres SPA-Tutorial.
Gut gemacht.
Ich habe die Idee weiterentwickelt und eine Website für solche Websites erstellt. Sie finden sie hier
https://www.zengardenwebsites.com