多个页面上的HTML/CSS导航栏

bla*_*953 53 html navbar

我刚刚完成了home/index.html页面.将导航栏保持在原位,并在用户点击我的所有页面时保持导航栏.我是否必须将导航代码复制并粘贴到每个页面的顶部?或者还有另一种方法可以看起来更干净吗?

HMTL导航:

<nav>
    <div>
        <a href="/">
            <div id="logo"><img src="image.png" alt="Home"/></div>
            <div id="headtag"><img src="image.png" alt="Home"/></div>
            <div id="tagline"><img src="image.png" alt="Home"/></div>
        </a>
    </div>
    <div> 
        <a href="/" class="here">Home</a>
        <a href="/about.html" >About</a>      
        <a href="/services.html" >Services</a>          
        <a href="/pricing.html" >Pricing</a>    
        <a href="/contact.html" >Contact Us</a>
        <input id="srchbar" type="search" placeholder="Search">
    </div>
</nav>
Run Code Online (Sandbox Code Playgroud)

Ram*_*tin 52

这对我有所帮助.我的导航栏位于body标签中.导航栏的整个代码都在nav.html文件中(没有任何html或body标签,只有导航栏的代码).在目标页面中,这包含在head标记中:

<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
Run Code Online (Sandbox Code Playgroud)

然后在body标签中,使用唯一的id和javascript块nav.html将容器加载到容器中,如下所示:

<!--Navigation bar-->
<div id="nav-placeholder">

</div>

<script>
$(function(){
  $("#nav-placeholder").load("nav.html");
});
</script>
<!--end of Navigation bar-->
Run Code Online (Sandbox Code Playgroud)

  • 稍微偏离主题,并原谅我的无知:如果你像在答案中那样对jQuery版本进行硬编码:`<script src ="https://code.jquery.com/jquery-1.10.2.js"> </脚本>`,那么当版本1.10.3或1.11.0出现时你的页面会发生什么? (3认同)
  • @LaryxDecidua 然后它继续工作。始终加载最新版本可能会导致页面损坏。考虑版本之间的重大更改。因此,建议在切换到不同版本时进行测试。 (3认同)
  • 我在本地电脑上的index.html中使用了上面的代码,在chrome中进行了测试,它给了我下面的错误,并且nav.html无法加载。 `jquery.min.js:4 Access to XMLHttpRequest at 'nav.html'来自原点“null”已被 CORS 策略阻止:跨源请求仅支持协议方案:http、data、chrome、chrome-extension、https。`知道吗? (2认同)

Jac*_*ais 26

我知道这是一个很老的问题,但是当你有JavaScript可用时,你可以使用jQuery和它的AJAX方法.

首先,创建一个包含所有导航栏HTML内容的页面.

接下来,使用jQuery的$.get方法来获取页面的内容.例如,假设您已将所有导航栏的HTML放入一个名为的文件中navigation.html<div id="nav-placeholder">在您的文件中添加了占位符标签(Like )index.html,那么您将使用以下代码:

<script src="//code.jquery.com/jquery.min.js"></script>
<script>
$.get("navigation.html", function(data){
    $("#nav-placeholder").replaceWith(data);
});
</script>
Run Code Online (Sandbox Code Playgroud)


Men*_*rel 24

使用纯 JavaScript:

将导航栏 html 代码保存在nav.html文件中。

使用以下代码创建nav.js文件:

fetch('nav.html')
.then(res => res.text())
.then(text => {
    let oldelem = document.querySelector("script#replace_with_navbar");
    let newelem = document.createElement("div");
    newelem.innerHTML = text;
    oldelem.parentNode.replaceChild(newelem,oldelem);
})
Run Code Online (Sandbox Code Playgroud)

在您想要导航栏的其他 html 文件中添加以下行:

<script id="replace_with_navbar" src="nav.js"></script>
Run Code Online (Sandbox Code Playgroud)

这将用 nav.html 的内容替换脚本本身

  • @Paradox是的,谢谢您指出这一点,这样做更优雅: ``` fetch("../header-nav.html") .then((response) =&gt; response.text()) 。 then((data) =&gt; { let old_element = document.querySelector( "script#replace-with-header-navbar" ); let new_element = new DOMParser() .parseFromString(data, "text/html") .querySelector(" nav"); old_element.parentNode.replaceChild(new_element, old_element); }) .catch((err) =&gt; console.log(err)); ```` (2认同)

Sac*_*ngo 8

您可以使用 php 制作多页面网站。

  • 创建一个 header.php,您应该在其中放置菜单和社交媒体等的所有 html 代码
  • 使用以下代码将 header.php 插入到您的 index.php 中

<? php include 'header.php'; ?>

(以上代码将转储在此之前的所有 html 代码)您的网站正文内容。

  • 同样,您可以轻松创建页脚和其他元素。PHP 内置支持其扩展中的 html 代码。因此,最好学习这个简单的修复方法。

  • 将扩展名更改为 .php 就完成了。使用以下代码大括号输入 php 代码 `&lt;?php include 'header.php'; ?&gt;` 前往 php.net 或 w3schools 进行基础学习。 (2认同)

小智 5

Brando ZWZ 为处理这种情况提供了一些很好的答案。

回复:多个页面上有相同的导航栏 2018 年 8 月 21 日上午 10:13|LINK

据我所知,有多种解决方案。

例如:

导航栏的完整代码位于 nav.html 文件中(没有任何 html 或 body 标签,只有导航栏的代码)。

然后我们就可以直接从jquery加载它,而不用写很多代码。

像这样:

    <!--Navigation bar-->
    <div id="nav-placeholder">

    </div>

    <script>
    $(function(){
      $("#nav-placeholder").load("nav.html");
    });
    </script>
    <!--end of Navigation bar-->
Run Code Online (Sandbox Code Playgroud)

解决方案2:

您可以使用 JavaScript 代码生成整个导航栏。

像这样:

JavaScript 代码:

$(function () {
    var bar = '';
    bar += '<nav class="navbar navbar-default" role="navigation">';
    bar += '<div class="container-fluid">';
    bar += '<div>';
    bar += '<ul class="nav navbar-nav">';
    bar += '<li id="home"><a href="home.html">Home</a></li>';
    bar += '<li id="index"><a href="index.html">Index</a></li>';
    bar += '<li id="about"><a href="about.html">About</a></li>';
    bar += '</ul>';
    bar += '</div>';
    bar += '</div>';
    bar += '</nav>';

    $("#main-bar").html(bar);

    var id = getValueByName("id");
    $("#" + id).addClass("active");
});

function getValueByName(name) {
    var url = document.getElementById('nav-bar').getAttribute('src');
    var param = new Array();
    if (url.indexOf("?") != -1) {
        var source = url.split("?")[1];
        items = source.split("&");
        for (var i = 0; i < items.length; i++) {
            var item = items[i];
            var parameters = item.split("=");
            if (parameters[0] == "id") {
                return parameters[1];
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

网页:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
    <div id="main-bar"></div>
    <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <%--add this line to generate the nav bar--%>
    <script src="../assets/js/nav-bar.js?id=index" id="nav-bar"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

https://forums.asp.net/t/2145711.aspx?Same+navbar+on+multiple+pages