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

Bootstrap导航栏未正常显示求助(Drupal主题开发)

排查Bootstrap导航栏不显示的问题

首先直接回应你的疑问:jQuery确实是影响Bootstrap导航栏功能的关键因素,但你的代码里还有几个更优先的问题需要解决,我们一步步来理清楚:

1. CSS文件加载顺序错误

你把Bootstrap的CSS引用放在了<body>里的脚本之后,这会导致页面渲染时先加载HTML结构,再加载样式,不仅会出现闪屏,还可能导致导航栏样式无法正常应用。正确的做法是把所有CSS文件都放在<head>标签内:

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Pauvre mais ravi theme</title>
  <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet" />
  <link rel="stylesheet" type="text/css" href="css/app.css">
</head>

2. Bootstrap 4已废弃navbar-default类

你用的是Bootstrap 4.0.0-beta,这个版本已经移除了Bootstrap 3里的navbar-default类,取而代之的是navbar-light(搭配浅色背景)或navbar-dark(搭配深色背景),再加上bg-*类来设置背景色。比如改成:

<nav class="navbar navbar-expand-lg navbar-light bg-light">

这里的navbar-expand-lg是用来控制响应式折叠的断点,确保在大屏上导航栏展开,小屏上显示折叠按钮。

3. jQuery版本与Bootstrap的兼容性

你用的jQuery 2.1.1虽然满足Bootstrap 4的最低要求(1.9.1+),但要注意Drupal本身可能已经加载了jQuery,容易出现版本冲突。建议你:

  • 检查Drupal的jQuery版本,如果自带的版本符合Bootstrap要求,就不要再重复引入外部jQuery,避免冲突
  • 如果必须引入,确保它是第一个加载的脚本(你现在的顺序是对的:jQuery → Popper → Bootstrap,这个顺序不能乱)

修正后的完整导航栏代码示例

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Pauvre mais ravi theme</title>
  <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet" />
  <link rel="stylesheet" type="text/css" href="css/app.css">
</head>
<body>
  <nav class="navbar navbar-expand-lg navbar-light bg-light">
    <a class="navbar-brand" href="#">Navbar</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

    <div class="collapse navbar-collapse" id="navbarsExampleDefault">
      <ul class="navbar-nav mr-auto">
        <li class="nav-item active">
          <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Link</a>
        </li>
        <li class="nav-item">
          <a class="nav-link disabled" href="#">Disabled</a>
        </li>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown</a>
          <div class="dropdown-menu" aria-labelledby="dropdown01">
            <a class="dropdown-item" href="#">Action</a>
            <a class="dropdown-item" href="#">Another action</a>
            <a class="dropdown-item" href="#">Something else here</a>
          </div>
        </li>
      </ul>
      <form class="form-inline my-2 my-lg-0">
        <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
        <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
      </form>
    </div>
  </nav>

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-beta/js/bootstrap.min.js"></script>
</body>
</html>

另外,在Drupal环境中开发主题时,建议通过Drupal的库(Libraries)系统来加载Bootstrap和jQuery,而不是直接在模板里写外链,这样能更好地管理依赖和避免版本冲突。

内容的提问来源于stack exchange,提问作者Jules Perrelet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:32:15