Веб-сайт - Можно ли установить ссылки в центральном месте? - PullRequest
1 голос
/ 07 февраля 2012

Я сейчас нахожусь в процессе переделки веб-сайта, и все мои страницы будут иметь общую панель навигации вверху:

Небольшой фрагмент кода, о котором я говорю:

<div id="logoNavContainer">
    <nav>
        <ul>
            <li><a href="contentPage.html" class="glow">Services</a></li>
            <li><a href="contentPage.html" class="glow">Products</a></li>
            <li><a href="contentPage.html" class="glow">Training</a></li>
            <li><a href="contentPage.html" class="glow">Technology</a></li>
            <li><a href="contentPage.html" class="glow">Clients</a></li>
            <li><a href="publications.html" class="glow">Publications</a></li>
            <li><a href="contentPage.html" class="glow">Contact Us</a></li>
        </ul>
    </nav>
</div>

Первоначально, когда я кодировал это, я думал (и все еще думаю, если это возможно), что было бы очень удобно, если бы я мог создать свой файл mainTemplate.html для каждой страницы, а затем для их отдельного содержимого, создатьотдельная страница .html, которая будет отображаться в правильной области на главном шаблоне.

Таким образом, любые изменения в navBar, ссылках, фоне и т. д. могут быть сделаны из одного места, которое, как мне кажется, может существоватьиз-за цели CSS.

Но так как у меня просто есть одинаковый HTML-код в начале каждой страницы для панели навигации, но, по крайней мере, все это стилизовано одной формой CSS.

Так что я (и будущие программисты) могу редактировать стиль для всех страниц из одного места.

Теперь, когда я реализую каждую страницу, я замечаю, что мне приходится просматривать все больше страниц, чтобы изменить ссылки navBar, и каждый раз это одно и то же действие.

Мне было интересно, можно ли установить переменную или что-то в каждом html-файле (как в Java), который устанавливается в одном месте, чтобы все ссылки можно было поменять сразу?

Я просто пытаюсь сделать изменения проще и устранить избыточность.Я довольно новичок в HTML и CSS, поэтому я чувствую, что могу упустить очень очевидное решение.

Также, если бы исходная идея, которая у меня была, была возможна, я бы предпочел это решение, так как оно решает более одной проблемы и устраняет множество избыточного кода.

Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 07 февраля 2012

Вы можете увидеть эту статью .Чистый HTML не поддерживает включает.Статья содержит решение JavaScript, которое вы можете использовать (см. Ниже выдержку).

One Option

Итак, для своего кода вы можете сделать:

var navigationDiv = "<div id='logoNavContainer'>" +
                        "<nav>" +
                            "<ul>" +
                                "<li><a href='contentPage.html' class='glow'>Services</a></li>" +
                                "<li><a href='contentPage.html' class='glow'>Products</a></li>" +
                                "<li><a href='contentPage.html' class='glow'>Training</a></li>" +
                                "<li><a href='contentPage.html' class='glow'>Technology</a></li>" +
                                "<li><a href='contentPage.html' class='glow'>Clients</a></li>" +
                                "<li><a href='publications.html' class='glow'>Publications</a></li>" +
                                "<li><a href='contentPage.html' class='glow'>Contact Us</a></li>" +
                            "</ul>" +
                        "</nav>" +
                    "</div>";
document.write(navigationDiv);
1 голос
/ 07 февраля 2012

В чистом HTML это невозможно. Есть два возможных решения, о которых я могу подумать прямо сейчас:

Препроцессирование Вы можете обслуживать свою статическую HTML-страницу, используя любой процессор, например PHP. Это лучший подход на мой взгляд. Вам потребуется только вызвать include ('header.html'), и заголовок будет включен. Вот как это делается везде.

JavaScript Вы также можете загрузить панель навигации из другого места, используя JavaScript. Недостатком здесь является то, что он будет запрашивать два запроса на страницу, и вам придется установить какую-то анимацию загрузки, пока не загрузится панель навигации.

РЕДАКТИРОВАТЬ: Я только что понял, что вы можете использовать frames / iframes в чистом HTML. Имейте в виду, что я не придумал фреймы, потому что ... ну, фреймы отстой :)

0 голосов
/ 08 февраля 2012

Хорошо, я работал над этим некоторое время; исследуя каждый из ваших ответов и пытаясь включить его в мой код.

PHP, с которым я совершенно незнаком, поэтому я нигде не играл с ним, и хотя я работал с javascript, я тоже отказался от него.

Пока я не вернулся и не увидел обновленный ответ Рэйчел Дж. Я использовал это в сочетании с обсуждением создания html с помощью javascript вместе с моим собственным куском javascript, мне удалось выработать работающую версию именно того, что я хотел!

Вот как HTML, который я сейчас включаю в начале каждой страницы:

<!doctype html> 
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <link href="styleSheet.css" rel="styleSheet" />
            <script src="pageFeatures.js" type="text/javascript"></script>
        </head>

<body onload="init('tabs')">

    <div id="main-container">
        <div id="navBar">
            <!-- Loaded through Javascript; eliminates repeated code and all navBar Links are now set in one place -->
        </div>
       .... All page specific code.

И JavaScript, который создает navBar:

Ссылки:

// Links
var servicesPage = 'designAudit.html';
var productsPage = 'pageTemplate.html';
var trainingPage = 'pageTemplate.html';
var technologyPage = 'pageTemplate.html';
var clientsPage = 'pageTemplate.html';
var publicationsPage = 'publications.html';
var contactPage = 'pageTemplate.html';

Инициирование ()

function init(tabs) {
    initNavBar();
    if (tabs == 'tabs') {
      initTabs();
    }
}

InitNavBar ()

// BEGIN NAVBAR GENERATING CODE
function initNavBar() {
  var navBar = document.getElementById("navBar");

  var navContainer = document.createElement("div");
  navContainer.setAttribute('id','logoNavContainer');
      var header = document.createElement("header");
          var h1 = document.createElement("h1");
              var logo = document.createElement("a");
              logo.setAttribute('href','index.html');
          h1.appendChild(logo);

          var nav = document.createElement("nav");
            var ul = document.createElement("ul");
              var link1 = createLink(servicesPage, "Services");
              var link2 = createLink(productsPage, "Products");
              var link3 = createLink(trainingPage, "Training");
              var link4 = createLink(technologyPage, "Technology");
              var link5 = createLink(clientsPage, "Clients");
              var link6 = createLink(publicationsPage, "Publications");
              var link7 = createLink(contactPage, "Contact");

            ul.appendChild(link1);
            ul.appendChild(link2);
            ul.appendChild(link3);
            ul.appendChild(link4);
            ul.appendChild(link5);
            ul.appendChild(link6);
            ul.appendChild(link7);
      nav.appendChild(ul);
    header.appendChild(h1);
    header.appendChild(nav);
  navContainer.appendChild(header);

  navBar.appendChild(navContainer);
}

createLink ()

// Indented to Represent Html layering.
function createLink(destPage, text) {
  var link = document.createElement("li");        // <li>
    var linkAnchor = document.createElement("a");   //    <a>
    linkAnchor.setAttribute('href', destPage);      //    <a href="">
    linkAnchor.setAttribute('class','glow');      //    <a href="" class="glow">
      var services = document.createTextNode(text); //    <a href="" class="glow">Text
    linkAnchor.appendChild(services);         //    </a>
  link.appendChild(linkAnchor);             // <li>
  return link;
}

В любом случае, спасибо за помощь. Я думал, что опубликую решение, которое придумал, так как оно значительно отличается от того, что здесь.

Один вопрос, который у меня есть, хотя, если кто-нибудь проверит это, это полностью оставляет мой сайт эстетическим, если его нет в браузере клиента. Это то, что может случиться?

Я знаю, что никогда лично не использовал компьютер без JavaScript, но мир обычно не так прост.

0 голосов
/ 07 февраля 2012

Очень грязный раствор:

Создайте mymenu.js с содержанием:

document.write("<div id='logoNavContainer'><nav><ul><li><a href='contentPage.html' class='glow'>Services</a></li></ul></nav></div>");

Во всех html, которые вы хотите дать navbar, есть:

<script src="mymenu.js"></script>

Надеюсь, это поможет! Питер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...