«Хлебные крошки» на jQuery

3 июня 2009, 20:46 Павел Марковнин JavaScript рейтинг +7-

Хлебные крошки jQueryПривет!

Знаете что называют «хлебными крошками»? Это вид вспомогательной навигации, которая показывает вложенность текущего документа. Она очень удобна, если на вашем сайте есть глубокая вложенность страниц. Но такой вид навигации встречается не только на сайтах, но и в операционных системах (на картинке слева изображена маковская версия).

Так вот, сегодня мы рассмотрим плагин BreadCrumbs для jQuery, которые позволит нам сделать эти крошки более компактными (в случае, когда у вас более 5 вложенных страниц с длинными заголовками это очень актуально). Думаю, что разработчики плагина взяли идею как раз из Мак ОСи.

Итак, начнем с верстки. Как и полагается нормальным парням, хлебные крошки мы сделаем через неупорядоченный список ссылок (красиво, валидно, семантично):

<div class="breadCrumbHolder module">
<div id="breadCrumb" class="breadCrumb module">
<ul>
<li><a href="#">Главная</a></li>
<li><a href="#">Примеры</a></li>
<li><a href="#">JavaScript</a></li>
<li><a href="#">jQuery</a></li>
<li><a href="#">Плагины</a></li>
<li><a href="#">Навигация</a></li>
<li>«Хлебные крошки» на jQuery — плагин jBreadCrumbs</li>
</ul>
</div>
</div>
<div class="chevronOverlay main"></div>

Теперь сделаем стили:

.breadCrumb {
margin: 0;
padding: 0;
float: left;
display: block;
height: 21px;
overflow: hidden;
width: 990px;
padding:5px;
border:solid 1px #dedede;
background:#fff;
}

.breadCrumb ul {
margin: 0;
padding: 0;
height: 21px;
display: block;
}

.breadCrumb ul li {
display: block;
float: left;
position: relative;
height: 21px;
overflow: hidden;
line-height: 21px;
margin: 0px 6px 0px 0;
padding: 0px 10px 0px 0;
font-size: .9167em;
background: url(../Images/Chevron.gif) no-repeat 100% 0;
}

.breadCrumb ul li div.chevronOverlay {
position: absolute;
right: 0;
top: 0;
z-index: 2;
}

.breadCrumb ul li span {
display: block;
overflow: hidden;
}

.breadCrumb ul li a {
display: block;
position: relative;
height: 21px;
line-height: 21px;
overflow: hidden;
float: left;
}

.breadCrumb ul li.first a {
height: 16px !important;
text-indent: -1000em;
width:16px;
padding: 0;
margin-top: 2px;
overflow: hidden;
background:url(../Images/IconHome.gif) no-repeat 0 0;
}

.breadCrumb ul li.first a:hover {
background-position: 0 -16px;
}

.breadCrumb ul li.last {
background: none;
margin-right: 0;
padding-right: 0;
}

.chevronOverlay {
display: none;
background: url(../Images/ChevronOverlay.png) no-repeat 100% 0;
width: 13px;
height: 20px;
}

Для работы плагина нам потребуется сам jQuery, плагин jQuery Easing и плагин jQuery Dimensions (они все есть в архиве примера в конце статьи). Подключаем их (внизу страницы) и вызываем плагин:

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/jquery.dimensions.js"></script>
<script type="text/javascript" src="js/jquery.jBreadCrumb.js"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#breadCrumb").jBreadCrumb({easing:'swing'});
});

Вот и все собственно. Просто, быстро, а главное удобно! ;-)

Смотрим пример Загружаем

Как всегда, жду ваших советов, замечаний и вопросов в комментариях. Пока!

Рекламное место, которое может стать вашим

Понравилась статья?

Тогда подпишись на обновления через RSS или воспользуйся
другими способами подписки.

Читать в Яндекс.Ленте Добавить в Google Добавить в Netvibes
  •  

Комментарии — 16

RSS
  • Аватарка
    3 июня 2009 в 23:24 Junior
    Breadcrumbs'ы в примере выглядят абсолютно бесполезно.
    Во-первых, они не позволяют с одного взгляда понять где конкретно я сейчас нахожусь. Во-вторых, перейти на уровни выше проблематично - не видно заголовков, и ждать пока они выезжают утомительно.

    С отключенным javascript'ом ваши breadcrumbs'ы более юзабельны, посмотрите сами.
  • Аватарка
    3 июня 2009 в 23:45 demy
    Как-то не очень удобно для пользователя со свернутыми списками работать
    Лучше перед глазами чтобы все всегды было видно.
  • Аватарка
    4 июня 2009 в 0:22 ]]>Cuprum]]>
    Красиво? Наверное. Удобно? Весьма сомнительно.
  • Аватарка
    4 июня 2009 в 9:11 ]]>Александр]]>
    Да классно, а кто уже куда эту идею в монтирует дело каждого. Не кто не навязывает
  • Аватарка
    4 июня 2009 в 9:27 Михаил
    Это не хлебные крошки, это «стрихнин какой-то».
    Хлебные крошки нужны чтобы:
    — Понять «где я?»
    — Быстро перейти в место, которое нужно (из пути крошек)

    Ваши крошки не позволяют ни того, ни другого.

    Какую цель вы преследовали, когда делали их?
  • Аватарка
    4 июня 2009 в 10:57 CJ Slade
    Идея вероятно была в компактном виде.
    Можно попробовать слегка изменить. Оставить в каждой ячейке по 1-2 слову и приписать "...".

    Получится примерно так:
    "Спорт, Охота... » Спортивные тренажеры... » Тренажеры высокой... » Складные » Эллиптический тренажер LandIce с панелью Cardio Trainer E9"

  • Аватарка
    4 июня 2009 в 11:01 ]]>А.Бублиенко]]>
    Как по мне, то соглашусь со всеми коментариями выше — хлебные крошки в таком виде безполезны.
  • Аватарка
    4 июня 2009 в 13:28 ]]>Steward]]>
    7 сообщение и никто даже не попытался взглянуть в исходник.. пипец...
    элементарно же - по-умолчанию previewWidth:5
    ставьте вызов
    jQuery("#breadCrumb").jBreadCrumb({previewWidth:35, easing:'swing'});
    делает сокращения более приемлимыми - всё отлично видно
  • Аватарка
    4 июня 2009 в 20:41 ]]>Мариана]]>
    полезная вещь просто супер!!!!
  • Аватарка
    5 июня 2009 в 0:02 Vii
    Так сказать мои 5 копеек критики :)
    Если в примере навести на 3-ю ссылку (та, что «JavaScript»), дождаться пока полностью раскроется, а потом попробовать навести на «jQuery» (4-я ссылка) то при закрытии 3-й, курсор 4-я крошка выскальзнет из-под курсора и начнет открываться 5-я ссылка.
    Но как прототип — прикольно
  • Аватарка
    5 июня 2009 в 0:10 Ionian.Wind
    jQuery Dimensions - нет такой библиотеки в исходниках
  • Аватарка
    6 июня 2009 в 13:44 ]]>warex]]>
    Не знаю, мне что то вообще не понравилось. Кстати в DLE тег {speedbar} выводит твоё расположение на сайте. Без java и анимации, это намного красивей.
  • Аватарка
    19 июня 2009 в 13:12 Михаил
    >7 сообщение и никто даже не попытался взглянуть в исходник.. пипец...
    элементарно же - по-умолчанию previewWidth:5
    ставьте вызов
    >jQuery("#breadCrumb").jBreadCrumb({previewWidth:35, easing:'swing'});
    делает сокращения более приемлимыми - всё отлично видно

    Когда будут показывать машину, которая не ездит, вы тоже будете предлагать доточить её напильником?
  • Аватарка
    20 июня 2009 в 12:50 ]]>Максим Покровский]]>
    Слишком маленькая область реагирования => неудобно.
  • Аватарка
    29 июля 2009 в 13:54 ]]>Петр]]>
    Я думаю лучше сделать этот плагин несколько иначе. Ссылки сжимаются на до 1 буквы, а до 1 слова, чтобы было понятно что там находится.
    Например:
    Новости, наводим курсор - Новости мировой политики (как-то так надо)
  • Аватарка
    4 августа в 12:00 tm
    Просто, быстро, а главное удобно! ;-)


    Я в большом сомнении, что это действительно удобно. Скорее это ужасно с точки зрения ЮЗАБИЛИТИ..
  • Эл. почта (используется для Граватарки)
  • Домашняя страница
  • Имя в Твиттере
  • Разрешенные теги Текст сообщения (надо бы заполнить это поле)
  • как выглядит какой тег
    жирный текст <b>жирный текст</b>
    курсивный тект <i>курсивный тект</i>
    зачеркнутый текст <s>зачеркнутый текст</s>
    подчеркнутый текст <u>подчеркнутый текст</u>
    ссылка <a href="адрес">ссылка</a>
    function foo() { ... }
    <pre><code>function foo() { ... } </code></pre>