Html хлебные крошки. Как создать хлебные крошки на блоге
Списки удобны своей иерархической структурой и гибкой настройкой вида, поэтому применяются не только по своему прямому назначению, но и для создания разных элементов страниц вроде хлебных крошек, нумерации страниц, меню, вкладок, и др.
Хлебные крошки
Хлебные крошки помогают ориентироваться на сайте и показывают положение текущей страницы относительно других разделов сайта. Это позволяет легко переходить на уровень выше и понять, в каком разделе вы находитесь сейчас. Так, для технического сайта навигация может быть следующей (рис. 1).
Рис. 1. Вид хлебных крошек
Последний текст указывает на текущую страницу и ссылкой не является. Все пункты отделяются друг от друга каким-нибудь символом, обычно это стрелка (→), слэш (/), знак больше (>) и тому подобное.
Поскольку оформление возложено на стили, то код HTML весьма лаконичен. Создаём список и присваиваем ему класс breadcrumbs чтобы стиль на другие списки не распространялся.
Заметьте, что никаких разделителей здесь нет, они выводятся с помощью стилевого свойства content (пример 1).
Пример 1. Создание хлебных крошек
Для начала мы обнуляем все поля и отступы у списка и выстраиваем пункты горизонтально через свойство display со значением inline-block . Оно же убирает маркеры, поэтому специально это делать уже не надо. Псевдоэлемент ::before требуется для добавления разделителя между пунктами и управления его видом. Текст добавляется ко всем пунктам, включая первый, что нам, конечно же, не надо. Поэтому убираем его с помощью псевдокласса :first-child , который применяет стиль к первому элементу
Большое количество материалов, например статьи сайта, часто разбивают на отдельные страницы по 10-15 статей на страницу, что приводит к сокращению загрузки сайта. Переход между отдельными страницами делается через их нумерацию, где каждый номер служит ссылкой на соответствующую страницу. Возможен вывод всех страниц, определённого их количества или только ссылок на следующую и предыдущую страницу. Какой вариант выбрать зависит от дизайна сайта и ваших предпочтений. Один из возможных способов нумерации показан на рис. 2.
Рис. 2. Нумерация страниц
Чтобы сделать такую нумерацию мы опять используем простой список, теперь уже с классом pager , каждый пункт этого списка будет ссылкой на страницу. Чтобы выделить текущую страницу добавим класс active (пример 2).
Пример 2. Нумерация страниц
- 1
- 2
- 3
- 4
- 5
- 6
Линия между пунктами делается через свойство border-bottom для элемента
-
. Поскольку
-
и
(пример 3). Они плотно прилегают друг к другу и создают эффект единой полоски.
Пример 3. Горизонтальное меню
Меню Градиент в данном примере добавляется с помощью функции linear-gradient , а тень - с помощью свойства box-shadow .
Ниспадающее меню
Более сложный вид меню называется ниспадающим. При наведении указателя на пункты появляется подменю, до этого невидимое (рис. 4); как только указатель уходит с текста, то меню прячется вновь.
Рис. 4. Вид ниспадающего меню
Такой вид меню достаточно сложен для вёрстки, поэтому разберём его подробнее. Вначале делаем вложенный список, - пункты первого списка служат текстом основного меню, второй список внутри элемента
- будет служить подменю. Если подменю не требуется, то оставляем только один элемент
- , а
-
в него не добавляем. Структура каждого пункта имеет следующий вид.
- Русская кухня
- Бефстроганов
- Гусь с яблоками
- Крупеник новгородский
- Раки по-русски
- , чтобы установить стиль для пунктов первого и второго уровня меню. Если просто указать селектор li , то стиль будет применяться ко всем пунктам вообще. Так что используем селектор .menu > li , он применяет стиль только к элементам
-
первого уровня. В итоге стиль для нашего горизонтального меню немного меняется.
/* Обнуляем отступы и убираем маркеры у списков */ .menu, .menu ul { list-style: none; margin: 0; padding: 0; } .menu { background: linear-gradient(to bottom, #fff, #f1f2f2); /* Градиент */ border: 1px solid #999; /* Параметры рамки */ padding: 0 5px; /* Поля */ font: 14px Arial, sans-serif; /* Параметры шрифта */ box-shadow: 0 2px 5px rgba(0,0,0,0.2); /* Тень под меню */ } .menu > li { display: inline-block; /* Выстраиваем по горизонтали */ border-right: 1px solid #fff; /* Белая линия справа */ position: relative; /* Относительное позиционирование */ } .menu a { text-decoration: none; /* Убираем подчёркивание */ color: #4c4c4c; /* Цвет ссылок */ display: block; /* Блочные ссылки */ } .menu > li > a { padding: 10px 15px; /* Поля */ border-right: 1px solid #d8d8d8; /* Серая линия справа */ position: relative; /* Относительное позиционирование */ z-index: 3; /* Выводим поверх остальных элементов */ } .menu ul { display: none; /* Прячем подменю */ }
Подменю мы прячем через свойство display , в итоге меню должно выглядеть как показано на рис. 3. Также добавлено обнуление значений у списков, это пригодится нам при добавлении подпунктов, плюс задействовано относительное позиционирование, без него z-index работать не будет. А оно нам требуется для правильного наложения одних элементов поверх других.
Временно можно включить показ подменю и настроить их вид.
Menu ul { position: absolute; /* Абсолютное позиционирование */ display: none; /* Прячем подменю */ width: 200px; /* Ширина подменю */ background: #fff; /* Цвет фона */ box-shadow: 0 0 10px #666; /* Параметры тени */ } .menu ul a { padding: 5px 10px; /* Поля */ } .menu ul a:hover { background: #008df2; /* Цвет фона */ color: #fff; /* Цвет текста */ }
Остаётся сделать вывод подменю при наведении курсора мыши на пункты меню. Для этого используем псевдокласс :hover , добавляя его к li.
Menu li:hover ul { display: block; }
Такой селектор говорит, что стиль следует применить к элементу
-
, в данном случае отобразить его, только когда указатель мыши наведён на элемент
-
внутри контейнера с классом menu
.
После этого наше меню будет работать и выводить подменю где оно имеется. Остаются последние декоративные штрихи, связанные с тенями и их правильным наложением. Чтобы корректно отобразить тень под пунктами меню первого уровня создадим пустой псевдоэлемент через ::before , установим для него тень, и подложим его под ссылку (вот z-index для и пригодился).
Menu > li:hover::before { content: ""; /* Создаём пустой псевдоэлемент */ top: 0; left: 0; right: 0; bottom: 0; /* Размер совпадает с пунктом меню */ box-shadow: 0 5px 10px #666; /* Параметры тени */ position: absolute; /* Абсолютное позиционирование */ }
Окончательный код продемонстрирован в примере 4.
Пример 4. Ниспадающее меню
Меню Здравствуйте, дорогие читатели . В этот день мы будем учиться создавать красивые хлебные крошки (breadcrumbs) для обычных сайтов, а так же для блогов WordPress . Я советую не пропускать этот момент, потому что крошки показывают путь к Вашей статье или информации на сайте, что существенно облегчит навигацию по сайту, а так же это ещё и дополнительные внутренние ссылки.
CSS
ul{ margin: 0; padding: 0; list-style: none; }Всё, первый не маловажный шаг сделали. А сейчас давайте всё таки добавим красивый вид нашим крошкам.
Первый пример
Сам вид элемента будет состоять из трёх частей, которые соединены в одну целую часть. Чтобы было понятнее смотрите рисунок ниже:
#breadcrumbs-one{ background: #eee; border-width: 1px; border-style: solid; border-color: #f5f5f5 #e5e5e5 #ccc; border-radius: 5px; box-shadow: 0 0 2px rgba(0,0,0,.2); overflow: hidden; width: 100%; } #breadcrumbs-one li{ float: left; } #breadcrumbs-one a{ padding: .7em 1em .7em 2em; float: left; text-decoration: none; color: #444; position: relative; text-shadow: 0 1px 0 rgba(255,255,255,.5); background-color: #ddd; background-image: linear-gradient(to right, #f5f5f5, #ddd); } #breadcrumbs-one li:first-child a{ padding-left: 1em; border-radius: 5px 0 0 5px; } #breadcrumbs-one a:hover{ background: #fff; } #breadcrumbs-one a::after, #breadcrumbs-one a::before{ content: ""; position: absolute; top: 50%; margin-top: -1.5em; border-top: 1.5em solid transparent; border-bottom: 1.5em solid transparent; border-left: 1em solid; right: -1em; } #breadcrumbs-one a::after{ z-index: 2; border-left-color: #ddd; } #breadcrumbs-one a::before{ border-left-color: #ccc; right: -1.1em; z-index: 1; } #breadcrumbs-one a:hover::after{ border-left-color: #fff; } #breadcrumbs-one .current, #breadcrumbs-one .current:hover{ font-weight: bold; background: none; } #breadcrumbs-one .current::after, #breadcrumbs-one .current::before{ content: normal; }
Второй пример
Тут как и в первом примере, элемент состоит из трёх частей, которые соеденяются в одну часть с помощью CSS.
#breadcrumbs-two{ overflow: hidden; width: 100%; } #breadcrumbs-two li{ float: left; margin: 0 .5em 0 1em; } #breadcrumbs-two a{ background: #ddd; padding: .7em 1em; float: left; text-decoration: none; color: #444; text-shadow: 0 1px 0 rgba(255,255,255,.5); position: relative; } #breadcrumbs-two a:hover{ background: #99db76; } #breadcrumbs-two a::before{ content: ""; position: absolute; top: 50%; margin-top: -1.5em; border-width: 1.5em 0 1.5em 1em; border-style: solid; border-color: #ddd #ddd #ddd transparent; left: -1em; } #breadcrumbs-two a:hover::before{ border-color: #99db76 #99db76 #99db76 transparent; } #breadcrumbs-two a::after{ content: ""; position: absolute; top: 50%; margin-top: -1.5em; border-top: 1.5em solid transparent; border-bottom: 1.5em solid transparent; border-left: 1em solid #ddd; right: -1em; } #breadcrumbs-two a:hover::after{ border-left-color: #99db76; } #breadcrumbs-two .current, #breadcrumbs-two .current:hover{ font-weight: bold; background: none; } #breadcrumbs-two .current::after, #breadcrumbs-two .current::before{ content: normal; }
Третий пример
В третьем предмете элементы состоят из двух частей.
#breadcrumbs-three{ overflow: hidden; width: 100%; } #breadcrumbs-three li{ float: left; margin: 0 2em 0 0; } #breadcrumbs-three a{ padding: .7em 1em .7em 2em; float: left; text-decoration: none; color: #444; background: #ddd; position: relative; z-index: 1; text-shadow: 0 1px 0 rgba(255,255,255,.5); border-radius: .4em 0 0 .4em; } #breadcrumbs-three a:hover{ background: #abe0ef; } #breadcrumbs-three a::after{ background: #ddd; content: ""; height: 2.5em; margin-top: -1.25em; position: absolute; right: -1em; top: 50%; width: 2.5em; z-index: -1; transform: rotate(45deg); border-radius: .4em; } #breadcrumbs-three a:hover::after{ background: #abe0ef; } #breadcrumbs-three .current, #breadcrumbs-three .current:hover{ font-weight: bold; background: none; } #breadcrumbs-three .current::after{ content: normal; }
Четвёртый пример
#breadcrumbs-four{ overflow: hidden; width: 100%; } #breadcrumbs-four li{ float: left; margin: 0 .5em 0 1em; } #breadcrumbs-four a{ background: #ddd; padding: .7em 1em; float: left; text-decoration: none; color: #444; text-shadow: 0 1px 0 rgba(255,255,255,.5); position: relative; } #breadcrumbs-four a:hover{ background: #efc9ab; } #breadcrumbs-four a::before, #breadcrumbs-four a::after{ content:""; position:absolute; top: 0; bottom: 0; width: 1em; background: #ddd; transform: skew(-10deg); } #breadcrumbs-four a::before{ left: -.5em; border-radius: 5px 0 0 5px; } #breadcrumbs-four a:hover::before{ background: #efc9ab; } #breadcrumbs-four a::after{ right: -.5em; border-radius: 0 5px 5px 0; } #breadcrumbs-four a:hover::after{ background: #efc9ab; } #breadcrumbs-four .current, #breadcrumbs-four .current:hover{ font-weight: bold; background: none; } #breadcrumbs-four .current::after, #breadcrumbs-four .current::before{ content: normal; }
Пример
Вот и всё, я считаю, что очень стильные и одновременно простые крошки. Тем более нет никаких изображений, соответственно быстрее загружаются.
Во всех примерах в стилях используется тег hover , который меняет цвет элемента при , так же если Вам не нравится не один из представленных цветов, Вы с лёгкость сможете заменить его на свой.
Теперь пришло время перейти к второй части, а именно, будем прикреплять один из примеров на свой блог WordPress, поехали.
Часть 2. Как прикрепить данные хлебные крошки на блог WordPress
И так, для начала нам нужно скачать плагин Breadcrumb NavXT, скачать его Вы сможете . После того как плагин будет скачан и активирован, нужно будет произвести некоторые настройки:
Настройки находятся в параметрах. Во вкладке General нужно найти строчку Breadcrumb Separator и удалить стандартное значение, которое там стоит, другими словами, нужно оставить поле пустым.
Всё, с плагином закончили, теперь нужно выбрать то оформление, которое Вам больше всего понравилось. В данном случае на примере будет вот этот стиль:
Это второй пример , который находится выше в статье.
Берём и просто копируем данные стили, а затем добавляем их в style.css Вашей темы, в любое место, которое больше всего Вам понравится, советую выделить начало и конец стилей крошек, потому что если в будущем захочется что либо там изменить, запутаетесь.
Теперь нужно хлебные крошки добавить непосредственно на блог.
В админке блога находим внешний вид , затем редактор , и выбираем single.php . Далее добавьте следующее:
Важно
Обратите внимание, что сама функция вызова крошек стоит между тегами id которых breadcrumbs-two , не забудьте поменять данный id на пример который добавили в стили. Например, если это первый пример (который выше) тогда должно быть так:
-
внутри контейнера с классом menu
.
Теперь нам надо различить стиль для разных элементов
-
- это блочный элемент и занимает всю доступную ему ширину, её надо ограничить либо задав width
, либо, как показано в примере, установив display
со значением inline-block
. Линия оказывается под числами, так что пункты меню смещаем вниз на половину их высоты.
Размеры всех кругов установлены точно, через width и height , в связи с чем возникает две проблемы. Первая - ссылка гораздо меньше самого круга и пользователь будет промахиваться; вторая - ссылка располагается в верхней части круга, но никак не по его середине. Первая проблема решается просто - надо сделать ссылки блочными, тогда они будут занимать всю ширину и высоту круга. При этом ссылки остаются квадратными и немного выходят за пределы цветного фона. Но это не видно и становится заметно только при наведении курсора в один из углов ссылки. Выравнивание текста делается с помощью свойства line-height , значение которого совпадает с высотой элемента. Этот способ позволяет выровнять текст по середине высоты элемента и он нам ещё пригодится в дальнейшем.
Создание меню
Меню на сайте это один из способов навигации по нему. Самый простой вариант - набор горизонтальных ссылок, напоминающих по своему виду хлебные крошки. Отличие в том, что между ссылок нет указателей (рис. 3).
Рис. 3. Горизонтальное меню
Для создания такого меню применяем принципы используемые нами в предыдущих примерах, но для разнообразия внесём декоративные изменения. Меню имеет небольшой градиент, под ним находится слабая тень, а пункты меню разделяются вертикальной линией. Сама линия нестандартная и состоит из серой и белой полосок, так что отдельно будем добавлять свою линию к элементам