Содержание

Как сделать горизонтальное меню в HTML

Горизонтальное меню сделать достаточно легко, нужно лишь немного воображения и знания html и css.

Для начала попробуем сделать простое горизонтальное меню. Вот пример как оно будет выглядеть:

Самое главное понять принцип, потом самостоятельно сможете сделать более сложное. Само меню размечается следующим фрагментом html кода:


<div>
<ul>
<li><a href="#">Главная</a></li>
<li><a href="#">HTML</a></li>
<li><a href="#">CSS</a></li>
<li><a href="#">PHP</a></li>
<li><a href="#">SEO</a></li>
</ul>
</div>

Видно, что это простой ненумерованный список, где одному из пунктов присвоен id. Он присвоен пункту текущей страницы, чтобы этот пункт отображался по-другому. То есть на каждой странице он должен быть присвоен соответствующему пункту меню.

# — URL ссылки.

Теперь перейдём к правилам CSS. Первое что нам надо, это то, чтобы пункты меню отображались друг рядом с другом, а не друг под другом. Для этого пишем следующее:

#menu ul li {display: inline;}

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

#menu ul {border-bottom:1px solid #000000; margin-left:0; padding:3px 0;}

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

#menu ul li a {text-decoration:none; margin-left:3px; border:1px solid #000000; padding: 3px 4px; border-bottom:0; background:#CEDEFF;}

Задаем, как будут выглядеть посещённые, не посещённые и пункты меню под указателем мыши.

#menu ul li a:link {color:#493;}
#menu ul li a:visited {color:#647;}
#menu ul li a:hover {color:#000; background:#6699FF; border-color:#227}

И, наконец, указываем вид пункта текущей страницы.

#menu ul li a#nowopen {background:#fff; border-bottom: 1px solid #fff;}

Выровнять меню по центру можно, задав #menu {margin:0 25% 0 25%;}

Используя вместо однотонных фонов изображения, можно получить самые разнообразные по дизайну меню.

Подключаем CSS к HTML, меню готово. Файл таблицы стилей.

Применяя различные изображения, мы получим вполне серьезные меню.

 

Скачать меню 1

 

Скачать меню 2

Скачать меню 3

Скачать меню 4

Скачать меню 5

Если для каждого пункта меню фон разный, нужно будет присвоить свой класс каждому пункту меню и для каждого класса прописать правила CSS, как сделано в следующем примере для второго пункта меню: Пример с разными фонами пунктов меню, или по аналогии сделать через id. Если фоном у вас являются изображения, заменяем соответствующие значения background: #цвет на background: url(путь до картинки.gif)

Скачать меню 6

Как сделать горизонтальное меню на HTML? — RUUD

Содержание статьи:

Хороший веб-сайт должен иметь удобную систему навигации. Меню является одним из вариантов выбора нужного действия. Не столько важна ориентация элементов меню в пространстве, сколько удобство их использования. Хороший дизайн логики управления и его преемственность по всем элементам диалога делает сайт компактно-комфортным поставщиком нужного функционала.

Меню: привычное и комфортное

Как выполнить навигацию по веб-ресурсу — вопрос теоретический. Как сделать меню для сайта? HTML в горизонтальном или вертикальном варианте? Как на каждой странице управлять поведением посетителя и предоставлять ему реальный функционал?

Вам будет интересно:Excel: выбор из списка. Выпадающий список в ячейке листа

Привычное и комфортное меню — это актуально и востребовано. Посетителя не интересует теория. Посетителю нужно решение его реальных задач.

По обыкновению, документ HTML и горизонтальное меню располагаются на первой странице сайта и ориентируют посетителя в систематизированном представлении об услугах, продуктах или разделах сайта, владельце, новостях, контактах.

Вам будет интересно:Два способа, как возвести в квадрат в Excel

Ориентация в пространстве — не главное, но привычнее горизонтальная систематизация предлагаемого функционала. Читать слева направо и сверху вниз общепринято не только на русскоязычных сайтах.

Однозначно правильные сайты и их меню

На рисунке изображены однозначно правильные сайты. Их меню могут считаться образцами дизайна, логики и функциональности. Однако мнение лидеров не столь уж незыблемо, порой бывают и исключения.

В качестве образца можно рассматривать сайты:

  • международной биржи Forex;
  • Всемирной организации здравоохранения;
  • финансовой системы России;
  • нефтегазовой компании.

Но количество денег или социальная значимость — не критерии качества веб-разработки.

Всякое меню — дело рук конкретного разработчика и мнение коллектива разработчиков популярной системы управления сайтами (CMS), использованной при разработке веб-ресурса.

В шаблоны самых лучших CMS никогда не загнать реальную жизнь. Применение интернет-технологий всегда обуславливает в каждом конкретном случае необходимость выполнить теоретико-практические работы по созданию комфортного меню.

Вам будет интересно:Три способа, как из MP4 сделать MP3

Классический многофункциональный пример

Как можно видеть на изображении под цифрой 1, здесь сразу четыре разных меню. Главная страница: сначала ролик, затем документ HTML. Горизонтально все, но каждое меню выполнено с разным соотношением HTML-тегов, нагрузки на CSS и использования JavaScript.

Самое верхнее меню (1.1) относится к посетителю (частное или юридическое лицо, финансовая организация или инвестор). Самое нижнее (1.4) — зависит от всех остальных, и здесь властвует не HTML, а JavaScript и AJAX, которые динамично формируют нужный вариант тегов HTML.

Средние меню содержат функционал компании в зависимости от посетителя, мнения владельца и его интересов.

Простая динамичная навигация

Пример с Google (на фото под цифрой 2) — классика простоты переключающегося меню. В начале поиска оно одно, в процессе поиска совсем другое. Здесь нет горизонтального выпадающего меню HTML, и CSS отведена минимальная роль. Здесь важен момент переключения варианта конечной выборки и меню подстроено под эту задачу.

Конкурент Google — Yandex (цифра 3) строит свое меню сразу. Более того, страница поиска здесь сразу наполнена дополнительным функционалом и предлагает посетителю не только функцию поиска.

Yandex предлагает сразу:

  • поиск;
  • деньги;
  • почту и др.

Все функции в чистом HTML. Горизонтальные меню по каждой функциональности. Характерная особенность Google и Yandex — настройки, которые выполняются автоматически, но могут быть изменены посетителем через горизонтально ориентированные функции.

Реальная статичная и общая практика

Последний пример (под цифрой 4) — для разработчиков на платформе Office XML. Документы формата «*.*x» востребованы, популярны, и сайт, предлагающий описание стандарта, использует чистый HTML. Горизонтальное меню содержит ссылки на основные разделы:

В Интернете можно найти много других, менее популярных, сайтов. Всегда можно обнаружить современное уверенное стремление к максимальной простоте и функциональности.

Эпоха, когда разработчик и дизайнер тратили время на шикарные кнопки, выпадающие подразделы, анимацию и другие эффекты, прошла.

Сегодня красивое горизонтальное меню: HTML и CSS или JavaScript — это простота, комфорт и функциональность для посетителя.

Меню: слева направо и сверху вниз или …

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

Традиционный документ HTML: меню горизонтальное с выпадающими подпунктами по каждому пункту. Выпадать может не только список ссылок (пунктов), но списки списков. Когда сайт предоставляет десятки услуг (товаров), и в каждой позиции может быть более десятка строк, становится проблемой как само меню, так и его подпункты.

Обычно проблема большого количество пунктов и подпунктов в меню решается путем скроллинга. Однако каждая область применения допускает систематизацию информации. Сомнительно, что существует такая задача на веб-программирование, которая бы не допускала ограничение от трех-четырех до семи — девяти пунктов.

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

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

Фактически сайт — это систематизированное представление информации, а структура этого представления — есть категории, то есть меню.

Организация меню: списки, таблицы и дивы

HTML под горизонтальное меню не отводит никакого специального синтаксиса. Можно использовать обычные дивы (div, span), таблицы (table, tr, td) и списки (ul, li). Последнее считается самым правильным, но часто встречаются конструкции, в которых все смешано в одно целое: один пункт меню может представлять собой таблицу, в каждой ячейке по нескольку дивов и список для описания подразделов.

Синтаксис HTML/CSS при создании пункта меню, если он основан на нескольких дивах (т. е. картинках оформления), становится жестким. Использовать вектор в меню или его пункте невозможно: нет связи между смыслом меню и логикой вектора (растягивания, сжатия, или иного пропорционального изменения размера). Остается использовать растр, а это несколько HTML. Горизонтальное меню (основное), а также:

  • для смартфона — свое;
  • увеличенное — для большого экрана;
  • контрастное — когда монитор уже старенький;
  • для слабовидящих и прочие варианты.

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

Идея: содержание меню и его пунктов определяют, как сделать горизонтальное меню в HTML, а не жесткую конструкцию самого оптимального сочетания ul, li, div, table и т.д.

Всегда важен смысл, а не жесткая конструкция. Смысл всегда можно делегировать от сервера через AJAX браузеру, где функция JavaScript оформит его в нужный HTML-тег и приставит к нему правило CSS, которое определит место, размер и цветовое решение меню (пункта меню).

Виртуальное горизонтальное меню (HTML, CSS, JS)

Google — бесспорный лидер в поиске и не только. Идея динамичного изменения меню появилась давно, но реализация Google — самая простая в наглядной интерпретации.

Здесь нет никакого емкого CSS, не выражено участие JavaScript, но поиск через классическое «погуглить» обусловлен не только лаврами лидера, но и фактическим исполнением.

Переход горизонтального меню на HTML тегах из одного смысла в смысл, обусловленный результатами поиска, — хорошее решение.

Скорее всего, разработчики Google имели ввиду совершенно иное, но рядовой посетитель привык к своему пониманию логики поиска, понятию комфорта и управления поисковой машиной. Привычка сложилась в обычай, и уже далеко не первое поколение искателей информации пользуется ним.

Воспитание привычки у посетителей — трудоемкий процесс, но когда он удался — этим пользуются, а не предлагают кардинально новые доктрины. Нельзя нарушить правила и сформированные навыки.

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

Источник

Горизонтальное меню для сайта на HTML и CSS — подробная верстка

На чтение 4 мин. Просмотров 400 Опубликовано Обновлено

В этой статье мы расскажем как сделать горизонтальное меню для сайта с помощью HTML и CSS.

HTML код горизонтального меню

Общепринятым считается создание меню с помощью стандартного списка. И так, создадим файл index.html и запишем в него следующий код:

 
<nav>
    <ul>
      <li><a href="">Страница-1</a></li>
      <li><a href="">Страница-2</a></li>
      <li><a href="">Страница-3</a></li>
      <li><a href="">Страница-4</a></li>
      <li><a href="">Страница-5</a></li>
      <li><a href="">Страница-6</a></li>
      <li><a href="">Страница-7</a></li>
    </ul>
 </nav>

Тег <nav> (от англ. Navigation перевод: Навигация), который обрамляет наш список и в HTML верстке указывает на блок с навигационным меню сайта.

Сохранив и открыв файл index.html в браузере мы увидим следующую картину:

Элементы меню стандартно расположились вертикально и у каждого элемента <li> появилась точка слева (так называемая маркером). Давайте оформим меню согласно нашим условиям.

Стилизация меню с помощью CSS

Для того чтобы начать оформлять наше меню создадим файл style.css, куда мы будем вписывать код CSS. А в index.html пропишем путь до созданного файла style.css. Полный код HTML будет выглядеть следующим образом:


<!DOCTYPE html>
<html lang="ru">
<head>
  <title>Sample</title>
  <meta charset="UTF-8">
  <link rel="stylesheet" href="style.css"> <!-- Путь до нашего файла style.css -->
</head>
<body>
  <nav>
    <ul>
      <li><a href="">Страница-1</a></li>
      <li><a href="">Страница-2</a></li>
      <li><a href="">Страница-3</a></li>
      <li><a href="">Страница-4</a></li>
      <li><a href="">Страница-5</a></li>
      <li><a href="">Страница-6</a></li>
      <li><a href="">Страница-7</a></li>
    </ul>
  </nav>
</body>
</html>

Для начала нам необходимо добавить голубой фон нашему меню и сделать внутренние отступы по вертикали и горизонтали, чтобы текст ссылок не прилипал к краям нашего блока с меню. Открываем файл style.css и записываем следующий код:

 
nav {
  padding: 16px 0;
  background-color: #199BCA;
}

В результате фон нашего меню стал голубым и появились внутренние отступы сверху, слева, справа и снизу.


Далее убираем маркеры в виде точек у тега <ul>, а также сбрасываем на ноль значения padding и margin, чтобы убрать лишние отступы у меню. И центрируем наш список по центру горизонтали.



nav ul {
  list-style-type: none;
  padding: 0;
  margin: 0;
  text-align: center;
}


Ну и наконец выравниваем список меню по горизонтали с помощью display: inline-block. Делаем отступы слева для каждого элемента <li> с помощью margin-left: 10px. Для первого элемента <li> используем псевдокласс :first-child со значением margin-left 0px. Для более четкого восприятия ссылок сделаем все буквы и цифры строчными с помощью text-transform со значением uppercase.



nav ul li {
display: inline-block;
  margin-left: 10px;
  text-transform: uppercase;
}
nav ul li:first-child {
  margin-left: 0px;
}


А теперь немого приведем в порядок визуальное оформление горизонтального меню убрав нижнее подчеркивание и окрасим текст в белый цвет. Для этого тегу <a> применим следующие CSS свойства:



a {
  color: #fff;
  text-decoration: none;
}


В результате получим окончательный пример меню:

Итог: в этой статье мы рассмотрели как сделать меню горизонтально с помощью CSS.

В следующей статье мы рассмотрим как сделать мобильное меню с помощью CSS и JQUERY

Узнаем как изготовить горизонтальное меню на HTML?

Хороший веб-сайт должен иметь удобную систему навигации. Меню является одним из вариантов выбора нужного действия. Не столько важна ориентация элементов меню в пространстве, сколько удобство их использования. Хороший дизайн логики управления и его преемственность по всем элементам диалога делает сайт компактно-комфортным поставщиком нужного функционала.

Меню: привычное и комфортное

Как выполнить навигацию по веб-ресурсу — вопрос теоретический. Как сделать меню для сайта? HTML в горизонтальном или вертикальном варианте? Как на каждой странице управлять поведением посетителя и предоставлять ему реальный функционал?

Привычное и комфортное меню — это актуально и востребовано. Посетителя не интересует теория. Посетителю нужно решение его реальных задач.

По обыкновению, документ HTML и горизонтальное меню располагаются на первой странице сайта и ориентируют посетителя в систематизированном представлении об услугах, продуктах или разделах сайта, владельце, новостях, контактах.

Ориентация в пространстве — не главное, но привычнее горизонтальная систематизация предлагаемого функционала. Читать слева направо и сверху вниз общепринято не только на русскоязычных сайтах.

Однозначно правильные сайты и их меню

На рисунке изображены однозначно правильные сайты. Их меню могут считаться образцами дизайна, логики и функциональности. Однако мнение лидеров не столь уж незыблемо, порой бывают и исключения.

В качестве образца можно рассматривать сайты:

  • международной биржи Forex;
  • Всемирной организации здравоохранения;
  • финансовой системы России;
  • нефтегазовой компании.

Но количество денег или социальная значимость — не критерии качества веб-разработки.

Всякое меню — дело рук конкретного разработчика и мнение коллектива разработчиков популярной системы управления сайтами (CMS), использованной при разработке веб-ресурса.

В шаблоны самых лучших CMS никогда не загнать реальную жизнь. Применение интернет-технологий всегда обуславливает в каждом конкретном случае необходимость выполнить теоретико-практические работы по созданию комфортного меню.

Классический многофункциональный пример

Как можно видеть на изображении под цифрой 1, здесь сразу четыре разных меню. Главная страница: сначала ролик, затем документ HTML. Горизонтально все, но каждое меню выполнено с разным соотношением HTML-тегов, нагрузки на CSS и использования JavaScript.

Самое верхнее меню (1.1) относится к посетителю (частное или юридическое лицо, финансовая организация или инвестор). Самое нижнее (1.4) — зависит от всех остальных, и здесь властвует не HTML, а JavaScript и AJAX, которые динамично формируют нужный вариант тегов HTML.

Средние меню содержат функционал компании в зависимости от посетителя, мнения владельца и его интересов.

Простая динамичная навигация

Пример с Google (на фото под цифрой 2) — классика простоты переключающегося меню. В начале поиска оно одно, в процессе поиска совсем другое. Здесь нет горизонтального выпадающего меню HTML, и CSS отведена минимальная роль. Здесь важен момент переключения варианта конечной выборки и меню подстроено под эту задачу.

Конкурент Google — Yandex (цифра 3) строит свое меню сразу. Более того, страница поиска здесь сразу наполнена дополнительным функционалом и предлагает посетителю не только функцию поиска.

Yandex предлагает сразу:

  • поиск;
  • деньги;
  • почту и др.

Все функции в чистом HTML. Горизонтальные меню по каждой функциональности. Характерная особенность Google и Yandex — настройки, которые выполняются автоматически, но могут быть изменены посетителем через горизонтально ориентированные функции.

Реальная статичная и общая практика

Последний пример (под цифрой 4) — для разработчиков на платформе Office XML. Документы формата «*.*x» востребованы, популярны, и сайт, предлагающий описание стандарта, использует чистый HTML. Горизонтальное меню содержит ссылки на основные разделы:

В Интернете можно найти много других, менее популярных, сайтов. Всегда можно обнаружить современное уверенное стремление к максимальной простоте и функциональности.

Эпоха, когда разработчик и дизайнер тратили время на шикарные кнопки, выпадающие подразделы, анимацию и другие эффекты, прошла.

Сегодня красивое горизонтальное меню: HTML и CSS или JavaScript — это простота, комфорт и функциональность для посетителя.

Меню: слева направо и сверху вниз или …

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

Традиционный документ HTML: меню горизонтальное с выпадающими подпунктами по каждому пункту. Выпадать может не только список ссылок (пунктов), но списки списков. Когда сайт предоставляет десятки услуг (товаров), и в каждой позиции может быть более десятка строк, становится проблемой как само меню, так и его подпункты.

Обычно проблема большого количество пунктов и подпунктов в меню решается путем скроллинга. Однако каждая область применения допускает систематизацию информации. Сомнительно, что существует такая задача на веб-программирование, которая бы не допускала ограничение от трех-четырех до семи — девяти пунктов.

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

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

Фактически сайт — это систематизированное представление информации, а структура этого представления — есть категории, то есть меню.

Организация меню: списки, таблицы и дивы

HTML под горизонтальное меню не отводит никакого специального синтаксиса. Можно использовать обычные дивы (div, span), таблицы (table, tr, td) и списки (ul, li). Последнее считается самым правильным, но часто встречаются конструкции, в которых все смешано в одно целое: один пункт меню может представлять собой таблицу, в каждой ячейке по нескольку дивов и список для описания подразделов.

Синтаксис HTML/CSS при создании пункта меню, если он основан на нескольких дивах (т. е. картинках оформления), становится жестким. Использовать вектор в меню или его пункте невозможно: нет связи между смыслом меню и логикой вектора (растягивания, сжатия, или иного пропорционального изменения размера). Остается использовать растр, а это несколько HTML. Горизонтальное меню (основное), а также:

  • для смартфона — свое;
  • увеличенное — для большого экрана;
  • контрастное — когда монитор уже старенький;
  • для слабовидящих и прочие варианты.

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

Идея: содержание меню и его пунктов определяют, как сделать горизонтальное меню в HTML, а не жесткую конструкцию самого оптимального сочетания ul, li, div, table и т.д.

Всегда важен смысл, а не жесткая конструкция. Смысл всегда можно делегировать от сервера через AJAX браузеру, где функция JavaScript оформит его в нужный HTML-тег и приставит к нему правило CSS, которое определит место, размер и цветовое решение меню (пункта меню).

Виртуальное горизонтальное меню (HTML, CSS, JS)

Google — бесспорный лидер в поиске и не только. Идея динамичного изменения меню появилась давно, но реализация Google — самая простая в наглядной интерпретации.

Здесь нет никакого емкого CSS, не выражено участие JavaScript, но поиск через классическое «погуглить» обусловлен не только лаврами лидера, но и фактическим исполнением.

Переход горизонтального меню на HTML тегах из одного смысла в смысл, обусловленный результатами поиска, — хорошее решение.

Скорее всего, разработчики Google имели ввиду совершенно иное, но рядовой посетитель привык к своему пониманию логики поиска, понятию комфорта и управления поисковой машиной. Привычка сложилась в обычай, и уже далеко не первое поколение искателей информации пользуется ним.

Воспитание привычки у посетителей — трудоемкий процесс, но когда он удался — этим пользуются, а не предлагают кардинально новые доктрины. Нельзя нарушить правила и сформированные навыки.

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

Правильная верстка горизонтального меню с разделителями

Часто начинающие верстальщики сталкиваются с трудностями при верстке горизонтального меню с вертикальными разделителями. Сегодня я хочу рассказать, как легко сделать кроссбраузерное горизонтальное меню с максимально чистым кодом.

Пишем HTML-код:

<ul> <li><a href=»#»>1 пункт</a></li> <li><a href=»#»>2 пункт</a></li> <li><a href=»#»>3 пункт</a></li> <li><a href=»#»>4 пункт</a></li> <li><a href=»#»>5 пункт</a></li> </ul>

<ul>

    <li><a href=»#»>1 пункт</a></li>

    <li><a href=»#»>2 пункт</a></li>

    <li><a href=»#»>3 пункт</a></li>

    <li><a href=»#»>4 пункт</a></li>

    <li><a href=»#»>5 пункт</a></li>

</ul>

Теперь CSS:

ul {overflow: hidden; zoom: 1;} li {list-style: none; float: left; border-left: 1px solid #666; padding: 0 20px; margin: 0 1px 0 -1px;}

ul {overflow: hidden; zoom: 1;}

li {list-style: none; float: left; border-left: 1px solid #666; padding: 0 20px; margin: 0 1px 0 -1px;}

Вот собственно и все. Однако хочу остановится на моменте скрытия первого разделителя. Если вы заметили, то я не использовал класс для первого элемента списка, а задал отрицательный margin влево, чтобы скрыть разделитель.

Код кроссбраузерный: IE6+, Opera 9+, Firefox 2+, Chrome, Safari

Смотрим ДЕМО

Работа с меню и объектами навигации

  • Чтение занимает 5 мин

В этой статье

Дата последнего изменения: 4 апреля 2010 г.

Применимо к: SharePoint Server 2010

В этой статье
Горизонтальные и вертикальные меню
PortalSiteMapDataSource
PortalSiteMapProvider

Инструкции для горизонтальных и вертикальных меню для навигации объявляются в XML-коде для главной страницы. Для реализации навигации используются два класса: PortalSiteMapDataSource и PortalSiteMapProvider.

Объект PortalSiteMapProvider предоставляет иерархию сайта (структуру навигации) и отслеживает связь между узлами. Объект PortalSiteMapDataSource сопоставляет возможности навигации из PortalSiteMapProvider и фильтрует элементы навигации, чтобы определить, какие из них может видеть пользователь в вертикальных или горизонтальных меню и в элементах навигации.

Горизонтальные и вертикальные меню

При первом создании структуры сайта с корневым сайтом или сайтом верхнего уровня, несколькими веб-сайтами, страницами и дополнительными сайтами, являющимися потомками сайта верхнего уровня, Microsoft SharePoint Server 2010 создает два меню: горизонтальное (сверху) и вертикальное (слева).

Горизонтальное и вертикальное меню объявляются в разметке главной страницы. В следующем примере объявляется горизонтальное меню.

<SharePoint:AspMenu Runat="server"
  DataSourceID="GlobalNavDataSource"
  Orientation="Horizontal"
  StaticDisplayLevels="1"
  MaximumDynamicDisplayLevels="1" />

Вертикальное меню объявляется аналогичным образом, но при этом используются другие свойства. Они идентичны свойствам, доступным в элементе управления Menu ASP.NET.

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

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

Свойство

Описание

DataSourceID

Определяет элемент управления источника данных, который предоставляет иерархические данные для этого меню. В предыдущем примере кода DataSourceID указывает на элемент управления с идентификатором GlobalNavDataSource.

Orientation

Определяет, является ли меню горизонтальным или вертикальным. В предыдущем примере кода используется горизонтальное меню.

StaticDisplayLevels

Определяет количество уровней иерархии, одновременно отображаемых в меню.

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

MaximumDynamicDisplayLevels

Определяет количество отображаемых уровней в динамических (всплывающих) меню.

В этом примере задано значение 1, которое указывает, что элемент меню на первом уровне иерархии сайтов с дочерними сайтами или страницами отображает эти сайты или страницы в динамических меню.

PortalSiteMapDataSource

PortalSiteMapDataSource — источник данных, связанный с SharePoint Server 2010, который извлекает данные из объекта PortalSiteMapProvider и предоставляет доступ к данным в соответствии с интерфейсом иерархического источника данных ASP.NET. Объект PortalSiteMapDataSource определяет имя объекта PortalSiteMapProvider, который используется для извлечения данных с помощью свойства SiteMapProvider ASP.NET.

Если в разметке главной страницы указан атрибут DataSourceID=»GlobalNavDataSource», приложение возвращает объект PortalSiteMapDataSource.

<PublishingNavigation:PortalSiteMapDataSource
  Runat="server"
  SiteMapProvider="CombinedNavSiteMapProvider"
  ShowStartingNode="false"
  StartFromCurrentNode="true"
  StartingNodeOffset="0"
  TrimNonCurrentTypes="Heading"
  TreatStartingNodeAsCurrent="true" />

Таблица 2. Часто используемые свойства PortalSiteMapDataSource

Свойство

Описание

ShowStartingNode

Определяет, возвращает ли источник данных начальный узел.

Если значение этого свойства равно true, источник данных возвращает начальный узел. Меню получает начальный узел, который может быть корневым узлом, и элементы, расположенные ниже начального узла.

Если значение свойства равно false, источник данных не возвращает начальный узел. Меню получает только элементы, расположенные ниже начального узла.

StartFromCurrentNode

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

Если значение этого свойства равно true, SharePoint Server 2010 указывает объекту PortalSiteMapDataSource применить соответствующие правила для определения начала источника данных.

StartingNodeOffset

Получает или задает положительное или отрицательное целое число, определяющее смещение относительно начального узла, которое задает верхний уровень иерархии сайтов, доступ к которому предоставляет объект DataSourceControl.

По умолчанию используется значение 0, указывающее, что верхний уровень иерархии сайтов, доступный через объект SiteMapDataSource, является таким же, как и у начального узла.

Эффект применения этого свойства является переменным и неопределенным, он зависит от особенностей иерархии сайтов, его описание выходит за рамки данной статьи.

TrimNonCurrentTypes

Включает усечение узлов на основе контекста и типа.

В этом примере используется TrimNonCurrentTypes=»Heading», который указывает источнику данных удалить все узлы типа Heading, которые не располагаются непосредственно под текущим узлом.

Можно указать несколько значений этого свойства с помощью списка с разделителями-запятыми. Доступные значения определены в перечислении NodeTypes.

TrimNonAncestorTypes

Усекает все указанные типы, которые не размещены непосредственно под текущим сайтом или одним из его предков.

TrimNonAncestorDescendantTypes

Усекает все указанные типы, которые не размещены непосредственно под текущим сайтом, одним из его предков или потомков.

TreatStartingNodeAsCurrent

Определяет, какой узел обрабатывается как текущий узел для усечения. По умолчанию текущий узел означает узел, представляющий элемент, который используется в данный момент.

Если значение TreatStartingNodeAsCurrent равно true, начальный узел источника данных обрабатывается как контекст или узел усечения.

PortalSiteMapProvider

Объект PortalSiteMapProvider — это действительный источник данных иерархической навигации, который предоставляет данные объекту PortalSiteMapDataSource. PortalSiteMapProvider извлекает узлы из хранилища Microsoft SharePoint Foundation 2010SPNavigation. Объект SPNavigation используется для создания статических ссылок и группировки. После указания статических ссылок и групп приложение объединяет динамические элементы, которые представляют веб-сайты и страницы с помощью статических ссылок и групп. SharePoint Server 2010 также применяет фильтрацию по ролям безопасности, чтобы пользователи видели только те элементы навигации, для которых у них есть разрешение.

Объявите именованные поставщики в файле web.config приложения, чтобы сделать их доступными для всех пользователей. Объявления двух самых важных объектов PortalSiteMapProvider — CombinedNavSiteMapProvider и CurrentNavSiteMapProvider — показаны в следующем примере кода.

<add name="CombinedNavSiteMapProvider" description="MOSS 2007 provider for Combined navigation"
   Type="Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider"
   NavigationType="Combined" EncodeOutput="true">
<add name="CurrentNavSiteMapProvider" description="MOSS 2007 provider for Current navigation"
   Type="Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider"
   NavigationType="Current" EncodeOutput="true" />
Примечание

Имя первого поставщика, CombinedNavSiteMapProvider, совпадает со значением, указанным для свойства SiteMapProvider. Это означает, что будет создано горизонтальное меню.

В таблице 3 описываются часто используемые свойства PortalSiteMapProvider.

Таблица 3. Часто используемые свойства PortalSiteMapProvider

Свойство

Описание

NavigationType

Получает или задает тип навигации для этого поставщика навигации. Доступны следующие параметры: Combined, Current и Global. Они функционируют в соответствии со следующими свойствами: CombinedNavSiteMapProvider, CurrentSiteMapProvider и CurrentSiteNavSiteMapProviderNoEncode.

CombinedNavSiteMapProvider

Получает объект PortalSiteMapProvider, который присоединен по умолчанию к глобальному меню навигации.

CurrentNavSiteMapProvider

Получает объект PortalSiteMapProvider, который присоединен по умолчанию к текущему меню навигации или панели быстрого запуска.

CurrentNavSiteMapProviderNoEncode

Получает объект PortalSiteMapProvider, присоединенный по умолчанию к иерархической навигации.

Объявите это свойство практически так же, как и CurrentSiteNavSiteMapProvider, но исключите атрибут EncodeOutput=»true».

GlobalNavSiteMapProvider

Получает объект PortalSiteMapProvider, значение свойства NavigationType которого задано как Global.

EncodeOutput

Определяет или получает указания о том, следует ли выполнять HTML-кодирование свойства Title любого объекта PortalSiteMapNode, возвращаемого поставщиком.

Элемент управления меню ASP.NET не выполняет автоматическую HTML-кодировку свойства Title при отрисовке. Однако элемент управления SiteMapPath ASP.NET выполняет HTML-кодирование свойства Title.

DynamicChildLimit

Получает или задает количество динамических дочерних элементов, отображаемых на каждом уровне. Динамические дочерние элементы могут быть дочерними сайтами (любые объекты SPWeb) и страницами.

RequireUniqueKeysForNodes

Определяет или получает указания о том, должен ли каждый из узлов, возвращаемых поставщиком, иметь уникальные значения свойств Key.

Чтобы выделение меню работало правильно для созданных ссылок и заголовков, задайте значение RequireUniqueKeysForNodes=»false». При этом не будут возникать проблемы при присоединении элемента управления меню к ASP.NET через источник данных, но для большинства других элементов управления отображением требуется объявить RequireUniqueKeysForNodes=»true».

IncludeSubSites

Определяет или получает указания о том, будет ли этот поставщик возвращать дочерние сайты.

См. также

Ссылка

Microsoft.SharePoint.Publishing.Navigation

Microsoft.SharePoint.Navigation

Концепции

Настройка навигации

Настройка элементов управления и поставщиков навигации

Другие ресурсы

Modifying Navigation Settings Through the UI

Центрирование элементов списка по горизонтали (немного сложнее, чем вы думаете)

Обновление , апрель 2013 г .: Эта статья довольно старая. Это не очень сложно. Просто введите текст по центру списка (например, ul.nav {text-align: center;} ) и элементы списка inline-block (например, ul.nav li {display: inline-block;} ). Если по какой-то причине вы хотите сделать это с полем, посмотрите width: fit-content; .

Текущий стандарт кодирования меню — неупорядоченные списки.Он не такой семантический, как тег

Если вы просмотрите то, что у вас есть на данный момент, вы увидите что-то, что выглядит следующим образом:

[ простой.вертикальный. эпическая неудача]

Причина проста. Ваше «горизонтальное» меню в основном составлен из неупорядоченного списка (ul) содержащий три элемента списка (li):

  • дом
  • магазин
  • связаться
  • По умолчанию список в HTML всегда вертикальный.Вертикальный список можно превратить в горизонтальный: используя очень мало CSS, чтобы изменить его форму. Давайте посмотрим на как это сделать дальше.

    Есть
    навиг в мой суп!

    Возможно, вы заметили тег навигации в нашей разметке. Этот тег — один из новых элементов, представленных HTML5, и его основная цель — придать семантическому значению ваш документ, объявив его содержимое как что-то в основном используемое для целей навигации.

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

    Чтобы убедиться, что навигационный тег работает как и ожидалось в старых браузерах (в первую очередь IE), изучите возможность использования html5shiv скрипт. Если вы этого не сделаете и заботитесь о людях, использующих версии IE старше 9, плохие вещи будут бывает …. может быть.

    Изменение CSS

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

    О, как мощное падение

    Для начала давайте поместим «горизонталь» в наше горизонтальное меню и научим наше самодовольное (возможно, с гуманитарным образованием) вертикальное меню урок. Добавить