<header>
  <h2 class="title">PopState Events</h2>
  <p class="description">Демонструє навігацію між розділами без перезавантаження сторінки</p>
</header>
<main>
  <div class="result">
    <button onclick="navigateTo('home')">Головна</button>
    <button onclick="navigateTo('about')">Про нас</button>
    <button onclick="navigateTo('contact')">Контакти</button>
    
    <div id="content">
      <!-- Тут з'являється відповідний розділ -->
      <p>Виберіть розділ, щоб переглянути його вміст.</p>
    </div>
  </div>
</main>
body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

button {
  margin-right: 5px;
  padding: 8px 12px;
  cursor: pointer;
}
function navigateTo(section) {
  const sectionsContent = {
    home: "<h3>Головна</h3><p>Ласкаво просимо на головну сторінку!</p>",
    about: "<h3>Про нас</h3><p>Тут ви знайдете інформацію про нас.</p>",
    contact: "<h3>Контакти</h3><p>Зв'яжіться з нами за вказаними контактами.</p>",
  };

  // Оновлюємо вміст розділу
  document.getElementById("content").innerHTML = sectionsContent[section];
  
  // Додаємо новий стан до історії
  history.pushState({ section }, "", `#${section}`);
}

// Обробник для події popstate
window.addEventListener("popstate", function(event) {
  const section = event.state ? event.state.section : "home";
  
  const sectionsContent = {
    home: "<h3>Головна</h3><p>Ласкаво просимо на головну сторінку!</p>",
    about: "<h3>Про нас</h3><p>Тут ви знайдете інформацію про нас.</p>",
    contact: "<h3>Контакти</h3><p>Зв'яжіться з нами за вказаними контактами.</p>",
  };

  document.getElementById("content").innerHTML = sectionsContent[section];
});

// Завантажуємо початковий розділ відповідно до URL
document.addEventListener("DOMContentLoaded", () => {
  const initialSection = location.hash.replace("#", "") || "home";
  navigateTo(initialSection);
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.