Я только что закончил создавать свою домашнюю / index.html страницу. Чтобы панель навигации оставалась на месте и оставалась, пока пользователи переходят по всем моим страницам. Нужно ли мне копировать и вставлять навигационный код в верхнюю часть каждой страницы? Или есть другой способ сделать так, чтобы он выглядел чище?
HMTL nav:
<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>
about.html
, браузер загрузит их. Значит, он должен содержать ту же навигацию.Ответы:
Вот что мне помогло. Моя панель навигации находится в теге body. Весь код для панели навигации находится в
nav.html
файле (без каких-либо тегов html или body, только код для панели навигации). На целевой странице это входит вhead
тег:<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
Затем в теге body создается контейнер с уникальным идентификатором и блоком javascript для загрузки
nav.html
в контейнер, как показано ниже:<!--Navigation bar--> <div id="nav-placeholder"> </div> <script> $(function(){ $("#nav-placeholder").load("nav.html"); }); </script> <!--end of Navigation bar-->
источник
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
то что произойдет с вашей страницей, когда выйдет версия 1.10.3 или 1.11.0?jquery.min.js:4 Access to XMLHttpRequest at 'nav.html' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
Есть идеи?Я знаю, что это довольно старый вопрос, но когда у вас есть JavaScript, вы можете использовать jQuery и его методы AJAX.
Сначала создайте страницу со всем HTML-содержимым панели навигации.
Затем используйте
$.get
метод jQuery для получения содержимого страницы. Например, предположим, что вы поместили весь HTML- код панели навигации в файл с именемnavigation.html
и добавили тег-заполнитель (Like<div id="nav-placeholder">
) в свойindex.html
, тогда вы должны использовать следующий код:<script src="//code.jquery.com/jquery.min.js"></script> <script> $.get("navigation.html", function(data){ $("#nav-placeholder").replaceWith(data); }); </script>
источник
Вы можете использовать php для создания многостраничного сайта.
<? php include 'header.php'; ?>
(Приведенный выше код сбросит весь HTML-код перед этим) Содержимое тела вашего сайта.
источник
<?php include 'header.php'; ?>
Перейдите на php.net или w3schools для получения базового обучения.Очень старый, но достаточно простой метод - использовать «Server-Side Includes» для включения HTML-страниц в страницу верхнего уровня, имеющую
.shtml
расширение. Например, это будет вашindex.shtml
файл:<html> <head>...</head> <body> <!-- repeated header: note that the #include is in a HTML comment --> <!--#include file="header.html" --> <!-- unique content here... --> </body> </html>
Да, хромает, но работает. Не забудьте включить поддержку SSI в конфигурации вашего HTTP-сервера ( вот как это сделать для Apache ).
источник
Brando ZWZ дает отличные ответы на этот вопрос.
Re: Одна и та же панель навигации на нескольких страницах 21 августа 2018 г., 10:13 | ССЫЛКА
Насколько я знаю, есть несколько решений.
Например:
Весь код для панели навигации находится в файле nav.html (без каких-либо тегов html или body, только код для панели навигации).
Затем мы могли загружать его напрямую из jquery без написания большого количества кода.
Как это:
<!--Navigation bar--> <div id="nav-placeholder"> </div> <script> $(function(){ $("#nav-placeholder").load("nav.html"); }); </script> <!--end of Navigation bar-->
Решение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]; } } } }
HTML:
<!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>
https://forums.asp.net/t/2145711.aspx?Same+navbar+on+multiple+pages
источник