Bootstrap药丸导航无法在主机上运行 如果您仍然希望使用相对路径:

问题描述

我正在使用Bootstrap药丸导航(Bootstrap 4)。代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <Meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link href="bootstrap-4.5.0-dist/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="js/jquery-3.5.1.min.js"></script>
    <script type="text/javascript" src="bootstrap-4.5.0-dist/js/bootstrap.min.js"></script>
  </head>

  <body>
    <div class="container-fluid">
      <ul class="nav nav-pills">
        <li class="nav-item"><a id="homeMenu" class="nav-link active" data-toggle="pill" href="#home">HOME</a></li>
        <li class="nav-item"><a class="nav-link" data-toggle="pill" href="#about">ABOUT</a></li>
        <li class="nav-item"><a class="nav-link" data-toggle="pill" href="#contact">CONTACT</a></li>
      </ul>
      <div class="tab-content container-fluid">
        <div id="home" class="tab-pane fade show active" style="background-color:yellow">
          <h1>Home</h1>
        </div>

        <div id="about" class="tab-pane fade" style="background-color:red">
           <h1>About</h1>
        </div>

        <div id="contact" class="tab-pane fade" style="background-color:orange">
          <h1>Contact</h1>
        </div>
      </div>
    </div>
  </body>
</html>

代码可在localhost上完美运行。但是当它上线时,链接不会重定向到相应的ID。而是,该域仅显示www.xyz.com/#(id)(单击相应链接时),并停留在初始视图(即主页选项卡)上。我是新手,所以不确定自己哪里出错了!请帮忙!

解决方法

尝试使用CDN版本的jquery和bootstrap,即替换这些行

<link href="bootstrap-4.5.0-dist/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="bootstrap-4.5.0-dist/js/bootstrap.min.js"></script>

使用

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
,

要创建锚链接,必须命名目标。您可以使用纯HTML。 如果没有href属性(表示超链接),则锚点不会被视为链接,但是其格式与“普通”文本是无法区分的。

W3C explanation

所以:

<a href="#home">This is the link</a>
<a name="home">This is the target</a>

您的情况:

<!-- Links -->
<ul class="nav nav-pills">
    <li><a href="#home">HOME</a></li>
    <li><a href="#about">ABOUT</a></li>
    <li><a href="#contact">CONTACT</a></li>
</ul>

<!-- Sections -->
<div id="home">
    <a name="home"><h1>Home</h1></a>
</div>
<div id="about">
    <a name="about"><h1>About</h1></a>
</div>
<div id="contact">
    <a name="contact"><h1>Contact</h1></a>
</div>
,

这通常是由于 Javascript,bootstrap和jquery 文件未正确引用而导致的,因为您正在本地使用它们,请确保它们已被正确定向,或使用其直接CDN链接指向引用它们。

可能的解决方案是:

  1. 在脚本src链接中添加“ ../”

这取决于文件夹的级别或层次结构。

  1. 使用bootsrap文件的CDN版本。

  1. 在页面底部而不是标题区域放置脚本。
,

毫不犹豫地尝试使用https://www.bootstrapcdn.com/的Bootstrap CDN for {CSS,JS ...}。

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">


<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">


<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

有时,当我们在本地计算机上工作时,我们只是基于操作系统提供静态路径,但是当我们部署网站时,本地开发操作系统和Deployment OS有时会有所不同。因此,如果我们使用CDN,则问题将轻松解决。

,

最简单的解决方案是使用CDN(也为手动方式)

您只需插入下面的代码段,它就可以为您工作!

<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous">
    </script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous">
    </script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous">
    </script>
    <link rel="stylesheet" href="./styles.css">
  </head>

  <body>
    <div class="container-fluid py-2">
      <ul class="nav nav-pills">
        <li class="nav-item mr-2"><a id="homeMenu" class="nav-link active bg-primary text-white" data-toggle="pill" href="#home">HOME</a></li>
        <li class="nav-item mr-2"><a class="nav-link bg-danger text-white" data-toggle="pill" href="#about">ABOUT</a></li>
        <li class="nav-item mr-2"><a class="nav-link bg-warning text-white" data-toggle="pill" href="#contact">CONTACT</a></li>
      </ul>
      <div class="tab-content mt-2">
        <div id="home" class="tab-pane fade show active bg-primary my-5 p-5">
          <h1>Home</h1>
        </div>

        <div id="about" class="tab-pane fade bg-danger my-5 p-5">
          <h1>About</h1>
        </div>

        <div id="contact" class="tab-pane fade bg-warning my-5 p-5">
          <h1>Contact</h1>
        </div>
      </div>
    </div>
  </body>

</html>

您可以直接从此处JSFiddle Link

试用该代码段

如果您仍然希望使用相对路径:

手动方法(在Windows中):

  1. 使用上面的代码在与您的libraries相同的目录中创建一个名为index.html的文件夹
  2. 使用此link下载文件。解压缩
  3. bootstrap.min.css文件从bootstrap-4.5.2-dist\css复制到库目录
  4. bootstrap.bundle.min.js中的bootstrap-4.1.3-dist\js复制到库目录
  5. 使用此link下载jquery文件。将内容复制到库目录中的jquery-3.5.1.min.js文件中
  6. 如下更新HTML代码:

<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width,initial-scale=1.0">
   <link rel="stylesheet" href="./libraries/bootstrap.min.css">
   <script src="./libraries/jquery-3.5.1.min.js"></script>
   <script src="./libraries/bootstrap.bundle.min.js"></script></script>
</head>

PS:我知道这很冗长,但可以肯定的是!