Meine Empfehlungen:
Semantische Tags verwenden, also <header> statt <div id="header">, <nav> statt <div id="navbar">, so wie von Basti empfohlen.
Auf iFrame verzichten, er hat den Nachteil, dass sich die Größe zunächst nicht an den Inhalt anpasst und zusätzliche Tricks mit Javascript erfordert.
Dann für jede Seite eine einzelne Datei anlegen und die Teile, die auf allen Seiten gleich sind, mit PHP-include einziehen. Also
index.php:
<!DOCTYPE html>
<html>
<head>
<title>...</title>
<meta charset="utf-8" />
<meta name="description" content="..." />
<meta name="Keywords" content="..." />
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="javascript.js"></script>
</head>
<body>
<?php include("header.html"); ?>
<main>
Hier die Inhalte der Hauptseite
</main>
<?php include("footer.html"); ?>
</body>
</html>
Alles anzeigen
header.html:
<header>
<div id="logo">
<img src="img\logo.header.jpg" />
</div>
<div id="res_btn" onclick="show_hide_nav('navbar')">
<img src="img\button.png" />
</div>
<nav>
<ul>
<li>
<a href="index.php">Home</a>
</li>
<li>
<a href="1.php">1</a>
</li>
<li>
<a href="2.php">2</a>
</li>
<li>
<a href="3.php">3</a>
</li>
<li>
<a href="4.php">4</a>
</li>
<li>
<a href="impressum.php">Impressum</a>
</li>
</ul>
</nav>
</header>
Alles anzeigen
1.php:
<!DOCTYPE html>
<html>
<head>
<title>...</title>
<meta charset="utf-8" />
<meta name="description" content="..." />
<meta name="Keywords" content="..." />
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="javascript.js"></script>
</head>
<body>
<?php include("header.html"); ?>
<main>
Hier die Inhalte von Seite 1
</main>
<?php include("footer.html"); ?>
</body>
</html>
Alles anzeigen
usw. für den Footer und die weiteren Seiten.
Das wäre mein Vorschlag als Ausgangspunkt. Natürlich gibt es andere Möglichkeiten, wie nur eine Seite zu haben und den Main-Content mit Javascript einzuziehen.