Zusätzlich sollten die Flyouts dann auch erst mit dem unteren roten Rand der Hauptnavigation beginnen.
Wie meinst du das?
Edit: Ich glaube, ich weiß jetzt, was du meinst. Kurzfassung: der aufklappende Bereich soll einfach etwas weiter runter, damit er nicht den roten Unterstrich des horizontalen Menüs verdeckt, richtig? Macht Sinn.
Genau.
Semantisch und insgesamt (HTML-)handwerklich sind da schon noch einige Schnitzer drin.
Der Code ist aber weitgehend valide. Ein paar Kleinigkeiten sind noch zu verbessern, die aber vor allem auf die Einbindung der Gallery zurückzuführen sind, die ein paar invalide Attribute hat. Allerdings gibt es bestimmt bei der Menge der Seiten einige kleinere weitere Sachen, die verbessert werden können. Im Großen und Ganzen ist der Code aber ok. Vielleicht wolltest du aber auf etwas Anderes hinaus?
Valide != gut
Wenn man HTML5 verwendet, sollte man auch die semantischen Möglichkeiten, die es bietet, verwenden um die Elemente und Inhalte zu strukturieren.
Beispiel: head, nav, section, article, foot
<input style="height:auto;" type="text" name="q" id="suchbegriff" value="Suchen" onfocus="this.value = (this.value == 'Suchen' ? '' : this.value)"/>
Um den onfocus-Teil zu vermeiden kannst du auch einfach das placeholder-Attribut in HTML5 verwenden.
Das sieht dann so aus:
<input type="text" name="q" id="suchbegriff" value="" placeholder="Suchen" />
Zusätzlich würde ich dir empfehlen, allen a- und img-Tags ein title-Attribut zu spendieren und dieses auch aussagekräftig zu füllen.
Bei img-Tags zusätzlich auch noch das alt-Attribut aussagekräftig setzen.
Außerdem nur eine CSS-Datei verwenden, Maps-API nur auf Seiten einbinden, auf denen du sich auch brauchst (kostet ziemlich viel Wartezeit, da du sie zudem im head-Bereich einbindest).
JavaScript-Dateien lädt man eigentlich auch nur wenn es unbedingt sein muss innerhalb des head-Tags.
Besser ist es stattdessen, das möglichst vor den schließenden body-Tag zu setzen, da der Benutzer so schon Inhalte angezeigt bekommt während im Hintergrund der JS-Kram geladen wird.
Die Verwendung von inline CSS macht man eigentlich gar nicht, außer es geht nicht anders.
Besser ist es, stattdessen Klassen zu verwenden.
Auch solltest du im CSS selbst Adressierungen a la "#cssmenu_blau ul ul li" (das ist nur ein Beispiel) so wenig wie möglich verwenden.
Lieber stattdessen Klassen verwenden und contextabhängig nur da wo es sich um Sonderfälle handelt. Konstrukte mit :last-child usw. sind z.B. solche Sonderfälle.
Dann kannst du dir auch den ein oder anderen Tag sparen.
z.B. hier:
<li><a href='info_faq.php'><span>FAQ</span></a></li>
Der span ist bei guter Adressierung dann komplett unnötig.
Das nur mal so auf die Schnelle.
Wenn's zu technisch war, sorry, aber du hast gefragt.