Frames

Das Grundgerüst dieser Website wurde ursprünglich mit Hilfe von HTML-Frames aufgebaut. Dies ermöglicht die einfache Realisierung einer zentralen Navigationsleiste.
Die Nachteile von Frames sind seit langem hinreichend bekannt und im Web diskutiert. In den letzten Jahren ist ein weiterer Nachteil hinzu gekommen: Für die Nutzung verschiedener Endgeräte (Smartphones, Tablets etc.) lässt sich der Aufbau von Webseiten mittels HTML5 und CSS anpassen. Dem steht die mittels Frames vorgegebene starre Anordnung - links Menü, rechts Inhalt - entgegen.
Daher habe ich mich inzwischen mit Alternativen zu Frames beschäftigt, wobei ich allerdings nicht auf eine zentrale Navigationsleiste verzichten möchte.

HTML5 und CSS

Mittels HTML5 und CSS lässt sich das Menü in einem Block unterbringen, der je nach Abmessungen des Bildschirms bzw. Fensters an unterschiedlichen Stellen platziert werden kann: bei klassischen PC's und Notebooks weiterhin links oder auch rechts als Navigationsleiste, bei Smartphones wegen der beschränkten Breite beispielsweise unten, unterhalb des Inhalts.
Leider gibt es dabei ein Problem: Das Menü muss auf jeder Webseite codiert werden, es sollte aber besser an zentraler Stelle stehen um dort zentral verwaltet werden zu können.
Um dies dennoch zu erreichen, sind folgende Möglichkeiten denkbar:

PHP

Mit der PHP-Include-Anweisung könnte das Menü aus einer zentralen Datei eingebunden werden.
PHP läuft auf dem Webserver, funktioniert also nicht bei lokalen Seiten auf dem PC.
PHP ist auf dem Webserver meist nur gegen zusätzliches Entgelt verfügbar - für eine nicht kommerzielle private Homepage ein Ausschlusskriterium.
In den folgenden Abschnitten wird versucht, ein Menü über PHP einzubinden:

SSI

Mittels dynamischem HTML mit Server Side Includes könnte das Menü aus einer zentralen Datei eingebunden werden.
SSI wird vom Webserver ausgeführt, funktioniert also nicht bei lokalen Seiten auf dem PC.
SSI ist auf dem Webserver in der Regel unentgeltlich verfügbar, allerdings ignoriert der Webserver SSI-Anweisungen, wenn diese in einer gewöhnlichen HTML-Datei mit der Endung .htm oder .html stehen. Es müssten also alle HTML-Dateien auf die Endung .shtml umgestellt werden, einschliesslich aller Verweise auf diese Dateien.
Mit folgendem Link wird das Menü beispielhaft mittels SSI aufgerufen:
menu.shtml

HTML-Inlineframes

Mit einem HTML-Inlineframe - Tag IFRAME - kann ein Menü aus einer zentralen Datei eingebunden werden. Mittels CSS kann dieses Menü dann beliebig formatiert und auf der Seite positioniert werden.
Um auf kleinen Bildschirmen keinen unnötigen Platz zu verbrauchen, kann das Menü vollständig hinter einem Icon versteckt und erst dann aufgeklappt werden, wenn es vom Mauszeiger oder - bei einem Touchscreen-Gerät - vom Finger überfahren wird. Dies habe ich mit der kleinen Grafik oben rechts auf dieser Seite ausprobiert.

Weitere Alternativen?

...

Fazit

Mit einer zentralen Menü-Datei, die als IFRAME in jede Seite eingebunden und mittels CSS positioniert und formatiert wird, steht eine brauchbare Alternative zu der bisher verwendeten Frame-Struktur zur Verfügung, die sich ohne Nachteile und zusätzliche Kosten umsetzen lässt. Daher wird dieses Projekt schrittweise entsprechend umgestellt.