You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多页面网站复用Header/Footer的方案求助与实现方法

如何在网站中插入可复用的站点头部并嵌入到所需页面?

我正在开发一个影院管理网站,想把重复出现的Header(头部)和Footer(底部)单独存成文件,之后嵌入到需要的页面里。试过PHP方案,但因为要保留HTML扩展名没法用;也试过HTML5的<link rel="import" href="mypath.html">标签,没生效。

可行解决方案

我通过JS Fetch API实现了需求,具体步骤如下:

1. 创建加载头部的JS文件

新建header.js文件,写入以下代码:

const nav = document.querySelector('.header')
fetch('../header/header.html')
.then(res=>res.text())
.then(data=>{
  nav.innerHTML=data
})

2. 在主页面中预留容器并引入JS

需要插入头部的页面里,先预留一个空的<header>容器,再引入上面的header.js:

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
  <meta charset="utf-8">
  <title>Cate Cinema</title>
  <link rel="stylesheet" href="../page_film/page_film.css">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.4.0/css/all.css">
  <!-- Font -->
  <link href="https://fonts.googleapis.com/css2?family=Ysabeau+Office:wght@500&display=swap" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css2?family=Ysabeau+Infant:wght@300&display=swap" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital@1&display=swap" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css2?family=Belanosima&display=swap" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css2?family=Lora:ital,wght@1,500&display=swap" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@1,500&display=swap" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css2?family=Hind+Siliguri&display=swap" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css2?family=Didact+Gothic&display=swap" rel="stylesheet">

</head>
<body id="homepage">
      <header class="header"></header>
      <script type="text/javascript" src="../script/header.js"></script>
    </body>
  </html>

3. 单独存放头部HTML内容

创建header.html文件,只保留头部的核心代码,不需要完整的HTML结构:

<nav class="navigation-open">
<div class="global container grid-x">
  <div class="logowrapper grid-x">
    <div class="logo-container">
      <a href="index.html">
        <img class="logo" src="../img/logo.png" alt="logo">
      </a>
    </div>
  </div>
  <div class="dashboard-nav cell grid-x">
    <nav class="choicewrapper">
      <ul class="wrapper">
        <li class="page-cinema">
          <a href="#" class="gradient-fill-hover">
            <span>A</span>
            <span>l</span>
            <span>&nbsp</span>
            <span>C</span>
            <span>i</span>
            <span>n</span>
            <span>e</span>
            <span>m</span>
            <span>a</span>
          </a>
        </li>
        <li class="page-card">
          <a href="#" class="gradient-fill-hover">
            <span>C</span>
            <span>a</span>
            <span>r</span>
            <span>d</span>
            <span>&nbsp</span>
            <span>e</span>
            <span>&nbsp</span>
            <span>P</span>
            <span>r</span>
            <span>o</span>
            <span>m</span>
            <span>o</span>
          </a>
        </li>
        <li class="page-pass">
          <a href="#" class="gradient-fill-hover">
            <span>P</span>
            <span>a</span>
            <span>s</span>
            <span>s</span>
          </a>
        </li>
      </ul>
    </nav>
  </div>
  <nav class="loginwrapper grid-x cell align-right">
    <div class="form-search-s grid-x">
      <form class="form-search" onsubmit="event.preventDefault();" role="search">
        <label for="search">Search for stuff</label>
        <input class="input-search" type="search" id="search" placeholder="Search..." autofocus required />
        <button type="submit" class="btn-search" onclick="index.html">Go</button>
      </form>
    </div>
    <div class="profile-login">
      <a href="../login/login.html" title="Accedi / Registrati">
        <i class="fas fa-user"></i>
        <span>Login</span>
        <i class="fas fa-caret-down"></i>
      </a>
      <div class="container-login open grid-x">
        <div class="dropdown-content grid-x cell">
          <div class="container-dashboard cell d-flex auto">
            <ul>
              <li class="list-login">
                <a href="#" class="login">
                  <i class="fas fa-user"></i>
                  <span>Login</span>
                </a>
              </li>
              <li class="list-login">
                <a href="#" class="registration">
                  <i class="fas fa-square-poll-horizontal"></i>
                  <span>Registrati</span>
                </a>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </div>
  </nav>
</div>
</nav>

内容的提问来源于stack exchange,提问作者Caterina Romano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 10:19:52